aws-sdk-migrationhuborchestrator 0.5.0

AWS SDK for AWS Migration Hub Orchestrator
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 ListWorkflowStepGroupsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The summary of step groups in a migration workflow.</p>
    #[doc(hidden)]
    pub workflow_step_groups_summary:
        std::option::Option<std::vec::Vec<crate::model::WorkflowStepGroupSummary>>,
}
impl ListWorkflowStepGroupsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The summary of step groups in a migration workflow.</p>
    pub fn workflow_step_groups_summary(
        &self,
    ) -> std::option::Option<&[crate::model::WorkflowStepGroupSummary]> {
        self.workflow_step_groups_summary.as_deref()
    }
}
/// See [`ListWorkflowStepGroupsOutput`](crate::output::ListWorkflowStepGroupsOutput).
pub mod list_workflow_step_groups_output {

    /// A builder for [`ListWorkflowStepGroupsOutput`](crate::output::ListWorkflowStepGroupsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) workflow_step_groups_summary:
            std::option::Option<std::vec::Vec<crate::model::WorkflowStepGroupSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `workflow_step_groups_summary`.
        ///
        /// To override the contents of this collection use [`set_workflow_step_groups_summary`](Self::set_workflow_step_groups_summary).
        ///
        /// <p>The summary of step groups in a migration workflow.</p>
        pub fn workflow_step_groups_summary(
            mut self,
            input: crate::model::WorkflowStepGroupSummary,
        ) -> Self {
            let mut v = self.workflow_step_groups_summary.unwrap_or_default();
            v.push(input);
            self.workflow_step_groups_summary = Some(v);
            self
        }
        /// <p>The summary of step groups in a migration workflow.</p>
        pub fn set_workflow_step_groups_summary(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::WorkflowStepGroupSummary>>,
        ) -> Self {
            self.workflow_step_groups_summary = input;
            self
        }
        /// Consumes the builder and constructs a [`ListWorkflowStepGroupsOutput`](crate::output::ListWorkflowStepGroupsOutput).
        pub fn build(self) -> crate::output::ListWorkflowStepGroupsOutput {
            crate::output::ListWorkflowStepGroupsOutput {
                next_token: self.next_token,
                workflow_step_groups_summary: self.workflow_step_groups_summary,
            }
        }
    }
}
impl ListWorkflowStepGroupsOutput {
    /// Creates a new builder-style object to manufacture [`ListWorkflowStepGroupsOutput`](crate::output::ListWorkflowStepGroupsOutput).
    pub fn builder() -> crate::output::list_workflow_step_groups_output::Builder {
        crate::output::list_workflow_step_groups_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct CreateWorkflowStepGroupOutput {
    /// <p>The ID of the migration workflow that contains the step group.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The name of the step group.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The description of the step group.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The next step group.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The previous step group.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The time at which the step group is created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
}
impl CreateWorkflowStepGroupOutput {
    /// <p>The ID of the migration workflow that contains the step group.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The name of the step group.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The description of the step group.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The next step group.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
    /// <p>The previous step group.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The time at which the step group is created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
}
/// See [`CreateWorkflowStepGroupOutput`](crate::output::CreateWorkflowStepGroupOutput).
pub mod create_workflow_step_group_output {

    /// A builder for [`CreateWorkflowStepGroupOutput`](crate::output::CreateWorkflowStepGroupOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow that contains the step group.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow that contains the step group.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The name of the step group.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step group.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The description of the step group.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step group.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step group.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step group.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step group.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step group.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// <p>The time at which the step group is created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the step group is created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateWorkflowStepGroupOutput`](crate::output::CreateWorkflowStepGroupOutput).
        pub fn build(self) -> crate::output::CreateWorkflowStepGroupOutput {
            crate::output::CreateWorkflowStepGroupOutput {
                workflow_id: self.workflow_id,
                name: self.name,
                id: self.id,
                description: self.description,
                tools: self.tools,
                next: self.next,
                previous: self.previous,
                creation_time: self.creation_time,
            }
        }
    }
}
impl CreateWorkflowStepGroupOutput {
    /// Creates a new builder-style object to manufacture [`CreateWorkflowStepGroupOutput`](crate::output::CreateWorkflowStepGroupOutput).
    pub fn builder() -> crate::output::create_workflow_step_group_output::Builder {
        crate::output::create_workflow_step_group_output::Builder::default()
    }
}

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

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

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct UpdateWorkflowStepGroupOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The name of the step group.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The description of the step group.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The next step group.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The previous step group.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The time at which the step group was last modified.</p>
    #[doc(hidden)]
    pub last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
}
impl UpdateWorkflowStepGroupOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The name of the step group.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The description of the step group.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The next step group.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
    /// <p>The previous step group.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The time at which the step group was last modified.</p>
    pub fn last_modified_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_modified_time.as_ref()
    }
}
/// See [`UpdateWorkflowStepGroupOutput`](crate::output::UpdateWorkflowStepGroupOutput).
pub mod update_workflow_step_group_output {

    /// A builder for [`UpdateWorkflowStepGroupOutput`](crate::output::UpdateWorkflowStepGroupOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The name of the step group.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step group.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The description of the step group.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step group.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step group.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step group.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step group.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step group.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn last_modified_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_modified_time = Some(input);
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn set_last_modified_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_modified_time = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateWorkflowStepGroupOutput`](crate::output::UpdateWorkflowStepGroupOutput).
        pub fn build(self) -> crate::output::UpdateWorkflowStepGroupOutput {
            crate::output::UpdateWorkflowStepGroupOutput {
                workflow_id: self.workflow_id,
                name: self.name,
                id: self.id,
                description: self.description,
                tools: self.tools,
                next: self.next,
                previous: self.previous,
                last_modified_time: self.last_modified_time,
            }
        }
    }
}
impl UpdateWorkflowStepGroupOutput {
    /// Creates a new builder-style object to manufacture [`UpdateWorkflowStepGroupOutput`](crate::output::UpdateWorkflowStepGroupOutput).
    pub fn builder() -> crate::output::update_workflow_step_group_output::Builder {
        crate::output::update_workflow_step_group_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetWorkflowStepGroupOutput {
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The name of the step group.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the step group.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The status of the step group.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::StepGroupStatus>,
    /// <p>The owner of the step group.</p>
    #[doc(hidden)]
    pub owner: std::option::Option<crate::model::Owner>,
    /// <p>The time at which the step group was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the step group was last modified.</p>
    #[doc(hidden)]
    pub last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the step group ended.</p>
    #[doc(hidden)]
    pub end_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The previous step group.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The next step group.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
}
impl GetWorkflowStepGroupOutput {
    /// <p>The ID of the step group.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The name of the step group.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the step group.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The status of the step group.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::StepGroupStatus> {
        self.status.as_ref()
    }
    /// <p>The owner of the step group.</p>
    pub fn owner(&self) -> std::option::Option<&crate::model::Owner> {
        self.owner.as_ref()
    }
    /// <p>The time at which the step group was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The time at which the step group was last modified.</p>
    pub fn last_modified_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_modified_time.as_ref()
    }
    /// <p>The time at which the step group ended.</p>
    pub fn end_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.end_time.as_ref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The previous step group.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The next step group.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
}
/// See [`GetWorkflowStepGroupOutput`](crate::output::GetWorkflowStepGroupOutput).
pub mod get_workflow_step_group_output {

    /// A builder for [`GetWorkflowStepGroupOutput`](crate::output::GetWorkflowStepGroupOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::StepGroupStatus>,
        pub(crate) owner: std::option::Option<crate::model::Owner>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) end_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
    }
    impl Builder {
        /// <p>The ID of the step group.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The name of the step group.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step group.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the step group.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step group.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The status of the step group.</p>
        pub fn status(mut self, input: crate::model::StepGroupStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the step group.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::StepGroupStatus>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The owner of the step group.</p>
        pub fn owner(mut self, input: crate::model::Owner) -> Self {
            self.owner = Some(input);
            self
        }
        /// <p>The owner of the step group.</p>
        pub fn set_owner(mut self, input: std::option::Option<crate::model::Owner>) -> Self {
            self.owner = input;
            self
        }
        /// <p>The time at which the step group was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the step group was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn last_modified_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_modified_time = Some(input);
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn set_last_modified_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_modified_time = input;
            self
        }
        /// <p>The time at which the step group ended.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.end_time = Some(input);
            self
        }
        /// <p>The time at which the step group ended.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.end_time = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step group.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step group.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step group.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step group.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// Consumes the builder and constructs a [`GetWorkflowStepGroupOutput`](crate::output::GetWorkflowStepGroupOutput).
        pub fn build(self) -> crate::output::GetWorkflowStepGroupOutput {
            crate::output::GetWorkflowStepGroupOutput {
                id: self.id,
                workflow_id: self.workflow_id,
                name: self.name,
                description: self.description,
                status: self.status,
                owner: self.owner,
                creation_time: self.creation_time,
                last_modified_time: self.last_modified_time,
                end_time: self.end_time,
                tools: self.tools,
                previous: self.previous,
                next: self.next,
            }
        }
    }
}
impl GetWorkflowStepGroupOutput {
    /// Creates a new builder-style object to manufacture [`GetWorkflowStepGroupOutput`](crate::output::GetWorkflowStepGroupOutput).
    pub fn builder() -> crate::output::get_workflow_step_group_output::Builder {
        crate::output::get_workflow_step_group_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct RetryWorkflowStepOutput {
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub step_group_id: std::option::Option<std::string::String>,
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The ID of the step.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The status of the step.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::StepStatus>,
}
impl RetryWorkflowStepOutput {
    /// <p>The ID of the step group.</p>
    pub fn step_group_id(&self) -> std::option::Option<&str> {
        self.step_group_id.as_deref()
    }
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The ID of the step.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The status of the step.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::StepStatus> {
        self.status.as_ref()
    }
}
/// See [`RetryWorkflowStepOutput`](crate::output::RetryWorkflowStepOutput).
pub mod retry_workflow_step_output {

    /// A builder for [`RetryWorkflowStepOutput`](crate::output::RetryWorkflowStepOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) step_group_id: std::option::Option<std::string::String>,
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::StepStatus>,
    }
    impl Builder {
        /// <p>The ID of the step group.</p>
        pub fn step_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_group_id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_step_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.step_group_id = input;
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The ID of the step.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The status of the step.</p>
        pub fn status(mut self, input: crate::model::StepStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the step.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::StepStatus>) -> Self {
            self.status = input;
            self
        }
        /// Consumes the builder and constructs a [`RetryWorkflowStepOutput`](crate::output::RetryWorkflowStepOutput).
        pub fn build(self) -> crate::output::RetryWorkflowStepOutput {
            crate::output::RetryWorkflowStepOutput {
                step_group_id: self.step_group_id,
                workflow_id: self.workflow_id,
                id: self.id,
                status: self.status,
            }
        }
    }
}
impl RetryWorkflowStepOutput {
    /// Creates a new builder-style object to manufacture [`RetryWorkflowStepOutput`](crate::output::RetryWorkflowStepOutput).
    pub fn builder() -> crate::output::retry_workflow_step_output::Builder {
        crate::output::retry_workflow_step_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListWorkflowStepsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The summary of steps in a migration workflow.</p>
    #[doc(hidden)]
    pub workflow_steps_summary:
        std::option::Option<std::vec::Vec<crate::model::WorkflowStepSummary>>,
}
impl ListWorkflowStepsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The summary of steps in a migration workflow.</p>
    pub fn workflow_steps_summary(
        &self,
    ) -> std::option::Option<&[crate::model::WorkflowStepSummary]> {
        self.workflow_steps_summary.as_deref()
    }
}
/// See [`ListWorkflowStepsOutput`](crate::output::ListWorkflowStepsOutput).
pub mod list_workflow_steps_output {

    /// A builder for [`ListWorkflowStepsOutput`](crate::output::ListWorkflowStepsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) workflow_steps_summary:
            std::option::Option<std::vec::Vec<crate::model::WorkflowStepSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `workflow_steps_summary`.
        ///
        /// To override the contents of this collection use [`set_workflow_steps_summary`](Self::set_workflow_steps_summary).
        ///
        /// <p>The summary of steps in a migration workflow.</p>
        pub fn workflow_steps_summary(mut self, input: crate::model::WorkflowStepSummary) -> Self {
            let mut v = self.workflow_steps_summary.unwrap_or_default();
            v.push(input);
            self.workflow_steps_summary = Some(v);
            self
        }
        /// <p>The summary of steps in a migration workflow.</p>
        pub fn set_workflow_steps_summary(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::WorkflowStepSummary>>,
        ) -> Self {
            self.workflow_steps_summary = input;
            self
        }
        /// Consumes the builder and constructs a [`ListWorkflowStepsOutput`](crate::output::ListWorkflowStepsOutput).
        pub fn build(self) -> crate::output::ListWorkflowStepsOutput {
            crate::output::ListWorkflowStepsOutput {
                next_token: self.next_token,
                workflow_steps_summary: self.workflow_steps_summary,
            }
        }
    }
}
impl ListWorkflowStepsOutput {
    /// Creates a new builder-style object to manufacture [`ListWorkflowStepsOutput`](crate::output::ListWorkflowStepsOutput).
    pub fn builder() -> crate::output::list_workflow_steps_output::Builder {
        crate::output::list_workflow_steps_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct CreateWorkflowStepOutput {
    /// <p>The ID of the step.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub step_group_id: std::option::Option<std::string::String>,
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The name of the step.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
}
impl CreateWorkflowStepOutput {
    /// <p>The ID of the step.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn step_group_id(&self) -> std::option::Option<&str> {
        self.step_group_id.as_deref()
    }
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The name of the step.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
}
/// See [`CreateWorkflowStepOutput`](crate::output::CreateWorkflowStepOutput).
pub mod create_workflow_step_output {

    /// A builder for [`CreateWorkflowStepOutput`](crate::output::CreateWorkflowStepOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) step_group_id: std::option::Option<std::string::String>,
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The ID of the step.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn step_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_group_id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_step_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.step_group_id = input;
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The name of the step.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateWorkflowStepOutput`](crate::output::CreateWorkflowStepOutput).
        pub fn build(self) -> crate::output::CreateWorkflowStepOutput {
            crate::output::CreateWorkflowStepOutput {
                id: self.id,
                step_group_id: self.step_group_id,
                workflow_id: self.workflow_id,
                name: self.name,
            }
        }
    }
}
impl CreateWorkflowStepOutput {
    /// Creates a new builder-style object to manufacture [`CreateWorkflowStepOutput`](crate::output::CreateWorkflowStepOutput).
    pub fn builder() -> crate::output::create_workflow_step_output::Builder {
        crate::output::create_workflow_step_output::Builder::default()
    }
}

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

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

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct UpdateWorkflowStepOutput {
    /// <p>The ID of the step.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub step_group_id: std::option::Option<std::string::String>,
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The name of the step.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
}
impl UpdateWorkflowStepOutput {
    /// <p>The ID of the step.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn step_group_id(&self) -> std::option::Option<&str> {
        self.step_group_id.as_deref()
    }
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The name of the step.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
}
/// See [`UpdateWorkflowStepOutput`](crate::output::UpdateWorkflowStepOutput).
pub mod update_workflow_step_output {

    /// A builder for [`UpdateWorkflowStepOutput`](crate::output::UpdateWorkflowStepOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) step_group_id: std::option::Option<std::string::String>,
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The ID of the step.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn step_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_group_id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_step_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.step_group_id = input;
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The name of the step.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateWorkflowStepOutput`](crate::output::UpdateWorkflowStepOutput).
        pub fn build(self) -> crate::output::UpdateWorkflowStepOutput {
            crate::output::UpdateWorkflowStepOutput {
                id: self.id,
                step_group_id: self.step_group_id,
                workflow_id: self.workflow_id,
                name: self.name,
            }
        }
    }
}
impl UpdateWorkflowStepOutput {
    /// Creates a new builder-style object to manufacture [`UpdateWorkflowStepOutput`](crate::output::UpdateWorkflowStepOutput).
    pub fn builder() -> crate::output::update_workflow_step_output::Builder {
        crate::output::update_workflow_step_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetWorkflowStepOutput {
    /// <p>The name of the step.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub step_group_id: std::option::Option<std::string::String>,
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_id: std::option::Option<std::string::String>,
    /// <p>The ID of the step.</p>
    #[doc(hidden)]
    pub step_id: std::option::Option<std::string::String>,
    /// <p>The description of the step.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
    #[doc(hidden)]
    pub step_action_type: std::option::Option<crate::model::StepActionType>,
    /// <p>The owner of the step.</p>
    #[doc(hidden)]
    pub owner: std::option::Option<crate::model::Owner>,
    /// <p>The custom script to run tests on source or target environments.</p>
    #[doc(hidden)]
    pub workflow_step_automation_configuration:
        std::option::Option<crate::model::WorkflowStepAutomationConfiguration>,
    /// <p>The servers on which a step will be run.</p>
    #[doc(hidden)]
    pub step_target: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The outputs of the step.</p>
    #[doc(hidden)]
    pub outputs: std::option::Option<std::vec::Vec<crate::model::WorkflowStepOutput>>,
    /// <p>The previous step.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The next step.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The status of the step.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::StepStatus>,
    /// <p>The status message of the migration workflow.</p>
    #[doc(hidden)]
    pub status_message: std::option::Option<std::string::String>,
    /// <p>The output location of the script.</p>
    #[doc(hidden)]
    pub script_output_location: std::option::Option<std::string::String>,
    /// <p>The time at which the step was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the workflow was last started.</p>
    #[doc(hidden)]
    pub last_start_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the step ended.</p>
    #[doc(hidden)]
    pub end_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The number of servers that have been migrated.</p>
    #[doc(hidden)]
    pub no_of_srv_completed: std::option::Option<i32>,
    /// <p>The number of servers that have failed to migrate.</p>
    #[doc(hidden)]
    pub no_of_srv_failed: std::option::Option<i32>,
    /// <p>The total number of servers that have been migrated.</p>
    #[doc(hidden)]
    pub total_no_of_srv: std::option::Option<i32>,
}
impl GetWorkflowStepOutput {
    /// <p>The name of the step.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn step_group_id(&self) -> std::option::Option<&str> {
        self.step_group_id.as_deref()
    }
    /// <p>The ID of the migration workflow.</p>
    pub fn workflow_id(&self) -> std::option::Option<&str> {
        self.workflow_id.as_deref()
    }
    /// <p>The ID of the step.</p>
    pub fn step_id(&self) -> std::option::Option<&str> {
        self.step_id.as_deref()
    }
    /// <p>The description of the step.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
    pub fn step_action_type(&self) -> std::option::Option<&crate::model::StepActionType> {
        self.step_action_type.as_ref()
    }
    /// <p>The owner of the step.</p>
    pub fn owner(&self) -> std::option::Option<&crate::model::Owner> {
        self.owner.as_ref()
    }
    /// <p>The custom script to run tests on source or target environments.</p>
    pub fn workflow_step_automation_configuration(
        &self,
    ) -> std::option::Option<&crate::model::WorkflowStepAutomationConfiguration> {
        self.workflow_step_automation_configuration.as_ref()
    }
    /// <p>The servers on which a step will be run.</p>
    pub fn step_target(&self) -> std::option::Option<&[std::string::String]> {
        self.step_target.as_deref()
    }
    /// <p>The outputs of the step.</p>
    pub fn outputs(&self) -> std::option::Option<&[crate::model::WorkflowStepOutput]> {
        self.outputs.as_deref()
    }
    /// <p>The previous step.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The next step.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
    /// <p>The status of the step.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::StepStatus> {
        self.status.as_ref()
    }
    /// <p>The status message of the migration workflow.</p>
    pub fn status_message(&self) -> std::option::Option<&str> {
        self.status_message.as_deref()
    }
    /// <p>The output location of the script.</p>
    pub fn script_output_location(&self) -> std::option::Option<&str> {
        self.script_output_location.as_deref()
    }
    /// <p>The time at which the step was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The time at which the workflow was last started.</p>
    pub fn last_start_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_start_time.as_ref()
    }
    /// <p>The time at which the step ended.</p>
    pub fn end_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.end_time.as_ref()
    }
    /// <p>The number of servers that have been migrated.</p>
    pub fn no_of_srv_completed(&self) -> std::option::Option<i32> {
        self.no_of_srv_completed
    }
    /// <p>The number of servers that have failed to migrate.</p>
    pub fn no_of_srv_failed(&self) -> std::option::Option<i32> {
        self.no_of_srv_failed
    }
    /// <p>The total number of servers that have been migrated.</p>
    pub fn total_no_of_srv(&self) -> std::option::Option<i32> {
        self.total_no_of_srv
    }
}
/// See [`GetWorkflowStepOutput`](crate::output::GetWorkflowStepOutput).
pub mod get_workflow_step_output {

    /// A builder for [`GetWorkflowStepOutput`](crate::output::GetWorkflowStepOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) step_group_id: std::option::Option<std::string::String>,
        pub(crate) workflow_id: std::option::Option<std::string::String>,
        pub(crate) step_id: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) step_action_type: std::option::Option<crate::model::StepActionType>,
        pub(crate) owner: std::option::Option<crate::model::Owner>,
        pub(crate) workflow_step_automation_configuration:
            std::option::Option<crate::model::WorkflowStepAutomationConfiguration>,
        pub(crate) step_target: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) outputs: std::option::Option<std::vec::Vec<crate::model::WorkflowStepOutput>>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) status: std::option::Option<crate::model::StepStatus>,
        pub(crate) status_message: std::option::Option<std::string::String>,
        pub(crate) script_output_location: std::option::Option<std::string::String>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_start_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) end_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) no_of_srv_completed: std::option::Option<i32>,
        pub(crate) no_of_srv_failed: std::option::Option<i32>,
        pub(crate) total_no_of_srv: std::option::Option<i32>,
    }
    impl Builder {
        /// <p>The name of the step.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn step_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_group_id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_step_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.step_group_id = input;
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn workflow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_workflow_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.workflow_id = input;
            self
        }
        /// <p>The ID of the step.</p>
        pub fn step_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_id = Some(input.into());
            self
        }
        /// <p>The ID of the step.</p>
        pub fn set_step_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.step_id = input;
            self
        }
        /// <p>The description of the step.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
        pub fn step_action_type(mut self, input: crate::model::StepActionType) -> Self {
            self.step_action_type = Some(input);
            self
        }
        /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
        pub fn set_step_action_type(
            mut self,
            input: std::option::Option<crate::model::StepActionType>,
        ) -> Self {
            self.step_action_type = input;
            self
        }
        /// <p>The owner of the step.</p>
        pub fn owner(mut self, input: crate::model::Owner) -> Self {
            self.owner = Some(input);
            self
        }
        /// <p>The owner of the step.</p>
        pub fn set_owner(mut self, input: std::option::Option<crate::model::Owner>) -> Self {
            self.owner = input;
            self
        }
        /// <p>The custom script to run tests on source or target environments.</p>
        pub fn workflow_step_automation_configuration(
            mut self,
            input: crate::model::WorkflowStepAutomationConfiguration,
        ) -> Self {
            self.workflow_step_automation_configuration = Some(input);
            self
        }
        /// <p>The custom script to run tests on source or target environments.</p>
        pub fn set_workflow_step_automation_configuration(
            mut self,
            input: std::option::Option<crate::model::WorkflowStepAutomationConfiguration>,
        ) -> Self {
            self.workflow_step_automation_configuration = input;
            self
        }
        /// Appends an item to `step_target`.
        ///
        /// To override the contents of this collection use [`set_step_target`](Self::set_step_target).
        ///
        /// <p>The servers on which a step will be run.</p>
        pub fn step_target(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.step_target.unwrap_or_default();
            v.push(input.into());
            self.step_target = Some(v);
            self
        }
        /// <p>The servers on which a step will be run.</p>
        pub fn set_step_target(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.step_target = input;
            self
        }
        /// Appends an item to `outputs`.
        ///
        /// To override the contents of this collection use [`set_outputs`](Self::set_outputs).
        ///
        /// <p>The outputs of the step.</p>
        pub fn outputs(mut self, input: crate::model::WorkflowStepOutput) -> Self {
            let mut v = self.outputs.unwrap_or_default();
            v.push(input);
            self.outputs = Some(v);
            self
        }
        /// <p>The outputs of the step.</p>
        pub fn set_outputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::WorkflowStepOutput>>,
        ) -> Self {
            self.outputs = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// <p>The status of the step.</p>
        pub fn status(mut self, input: crate::model::StepStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the step.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::StepStatus>) -> Self {
            self.status = input;
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn status_message(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_message = Some(input.into());
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn set_status_message(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_message = input;
            self
        }
        /// <p>The output location of the script.</p>
        pub fn script_output_location(mut self, input: impl Into<std::string::String>) -> Self {
            self.script_output_location = Some(input.into());
            self
        }
        /// <p>The output location of the script.</p>
        pub fn set_script_output_location(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.script_output_location = input;
            self
        }
        /// <p>The time at which the step was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the step was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// <p>The time at which the workflow was last started.</p>
        pub fn last_start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_start_time = Some(input);
            self
        }
        /// <p>The time at which the workflow was last started.</p>
        pub fn set_last_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_start_time = input;
            self
        }
        /// <p>The time at which the step ended.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.end_time = Some(input);
            self
        }
        /// <p>The time at which the step ended.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.end_time = input;
            self
        }
        /// <p>The number of servers that have been migrated.</p>
        pub fn no_of_srv_completed(mut self, input: i32) -> Self {
            self.no_of_srv_completed = Some(input);
            self
        }
        /// <p>The number of servers that have been migrated.</p>
        pub fn set_no_of_srv_completed(mut self, input: std::option::Option<i32>) -> Self {
            self.no_of_srv_completed = input;
            self
        }
        /// <p>The number of servers that have failed to migrate.</p>
        pub fn no_of_srv_failed(mut self, input: i32) -> Self {
            self.no_of_srv_failed = Some(input);
            self
        }
        /// <p>The number of servers that have failed to migrate.</p>
        pub fn set_no_of_srv_failed(mut self, input: std::option::Option<i32>) -> Self {
            self.no_of_srv_failed = input;
            self
        }
        /// <p>The total number of servers that have been migrated.</p>
        pub fn total_no_of_srv(mut self, input: i32) -> Self {
            self.total_no_of_srv = Some(input);
            self
        }
        /// <p>The total number of servers that have been migrated.</p>
        pub fn set_total_no_of_srv(mut self, input: std::option::Option<i32>) -> Self {
            self.total_no_of_srv = input;
            self
        }
        /// Consumes the builder and constructs a [`GetWorkflowStepOutput`](crate::output::GetWorkflowStepOutput).
        pub fn build(self) -> crate::output::GetWorkflowStepOutput {
            crate::output::GetWorkflowStepOutput {
                name: self.name,
                step_group_id: self.step_group_id,
                workflow_id: self.workflow_id,
                step_id: self.step_id,
                description: self.description,
                step_action_type: self.step_action_type,
                owner: self.owner,
                workflow_step_automation_configuration: self.workflow_step_automation_configuration,
                step_target: self.step_target,
                outputs: self.outputs,
                previous: self.previous,
                next: self.next,
                status: self.status,
                status_message: self.status_message,
                script_output_location: self.script_output_location,
                creation_time: self.creation_time,
                last_start_time: self.last_start_time,
                end_time: self.end_time,
                no_of_srv_completed: self.no_of_srv_completed,
                no_of_srv_failed: self.no_of_srv_failed,
                total_no_of_srv: self.total_no_of_srv,
            }
        }
    }
}
impl GetWorkflowStepOutput {
    /// Creates a new builder-style object to manufacture [`GetWorkflowStepOutput`](crate::output::GetWorkflowStepOutput).
    pub fn builder() -> crate::output::get_workflow_step_output::Builder {
        crate::output::get_workflow_step_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListTemplateStepGroupsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The summary of the step group in the template.</p>
    #[doc(hidden)]
    pub template_step_group_summary:
        std::option::Option<std::vec::Vec<crate::model::TemplateStepGroupSummary>>,
}
impl ListTemplateStepGroupsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The summary of the step group in the template.</p>
    pub fn template_step_group_summary(
        &self,
    ) -> std::option::Option<&[crate::model::TemplateStepGroupSummary]> {
        self.template_step_group_summary.as_deref()
    }
}
/// See [`ListTemplateStepGroupsOutput`](crate::output::ListTemplateStepGroupsOutput).
pub mod list_template_step_groups_output {

    /// A builder for [`ListTemplateStepGroupsOutput`](crate::output::ListTemplateStepGroupsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) template_step_group_summary:
            std::option::Option<std::vec::Vec<crate::model::TemplateStepGroupSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `template_step_group_summary`.
        ///
        /// To override the contents of this collection use [`set_template_step_group_summary`](Self::set_template_step_group_summary).
        ///
        /// <p>The summary of the step group in the template.</p>
        pub fn template_step_group_summary(
            mut self,
            input: crate::model::TemplateStepGroupSummary,
        ) -> Self {
            let mut v = self.template_step_group_summary.unwrap_or_default();
            v.push(input);
            self.template_step_group_summary = Some(v);
            self
        }
        /// <p>The summary of the step group in the template.</p>
        pub fn set_template_step_group_summary(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TemplateStepGroupSummary>>,
        ) -> Self {
            self.template_step_group_summary = input;
            self
        }
        /// Consumes the builder and constructs a [`ListTemplateStepGroupsOutput`](crate::output::ListTemplateStepGroupsOutput).
        pub fn build(self) -> crate::output::ListTemplateStepGroupsOutput {
            crate::output::ListTemplateStepGroupsOutput {
                next_token: self.next_token,
                template_step_group_summary: self.template_step_group_summary,
            }
        }
    }
}
impl ListTemplateStepGroupsOutput {
    /// Creates a new builder-style object to manufacture [`ListTemplateStepGroupsOutput`](crate::output::ListTemplateStepGroupsOutput).
    pub fn builder() -> crate::output::list_template_step_groups_output::Builder {
        crate::output::list_template_step_groups_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetTemplateStepGroupOutput {
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub template_id: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The name of the step group.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the step group.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The status of the step group.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::StepGroupStatus>,
    /// <p>The time at which the step group was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the step group was last modified.</p>
    #[doc(hidden)]
    pub last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The previous step group.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The next step group.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
}
impl GetTemplateStepGroupOutput {
    /// <p>The ID of the template.</p>
    pub fn template_id(&self) -> std::option::Option<&str> {
        self.template_id.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The name of the step group.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the step group.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The status of the step group.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::StepGroupStatus> {
        self.status.as_ref()
    }
    /// <p>The time at which the step group was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The time at which the step group was last modified.</p>
    pub fn last_modified_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_modified_time.as_ref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The previous step group.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The next step group.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
}
/// See [`GetTemplateStepGroupOutput`](crate::output::GetTemplateStepGroupOutput).
pub mod get_template_step_group_output {

    /// A builder for [`GetTemplateStepGroupOutput`](crate::output::GetTemplateStepGroupOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) template_id: 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) description: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::StepGroupStatus>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
    }
    impl Builder {
        /// <p>The ID of the template.</p>
        pub fn template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.template_id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_template_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.template_id = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The name of the step group.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step group.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the step group.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step group.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The status of the step group.</p>
        pub fn status(mut self, input: crate::model::StepGroupStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the step group.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::StepGroupStatus>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The time at which the step group was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the step group was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn last_modified_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_modified_time = Some(input);
            self
        }
        /// <p>The time at which the step group was last modified.</p>
        pub fn set_last_modified_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_modified_time = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step group.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step group.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step group.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step group.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// Consumes the builder and constructs a [`GetTemplateStepGroupOutput`](crate::output::GetTemplateStepGroupOutput).
        pub fn build(self) -> crate::output::GetTemplateStepGroupOutput {
            crate::output::GetTemplateStepGroupOutput {
                template_id: self.template_id,
                id: self.id,
                name: self.name,
                description: self.description,
                status: self.status,
                creation_time: self.creation_time,
                last_modified_time: self.last_modified_time,
                tools: self.tools,
                previous: self.previous,
                next: self.next,
            }
        }
    }
}
impl GetTemplateStepGroupOutput {
    /// Creates a new builder-style object to manufacture [`GetTemplateStepGroupOutput`](crate::output::GetTemplateStepGroupOutput).
    pub fn builder() -> crate::output::get_template_step_group_output::Builder {
        crate::output::get_template_step_group_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListTemplateStepsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The list of summaries of steps in a template.</p>
    #[doc(hidden)]
    pub template_step_summary_list:
        std::option::Option<std::vec::Vec<crate::model::TemplateStepSummary>>,
}
impl ListTemplateStepsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The list of summaries of steps in a template.</p>
    pub fn template_step_summary_list(
        &self,
    ) -> std::option::Option<&[crate::model::TemplateStepSummary]> {
        self.template_step_summary_list.as_deref()
    }
}
/// See [`ListTemplateStepsOutput`](crate::output::ListTemplateStepsOutput).
pub mod list_template_steps_output {

    /// A builder for [`ListTemplateStepsOutput`](crate::output::ListTemplateStepsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) template_step_summary_list:
            std::option::Option<std::vec::Vec<crate::model::TemplateStepSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `template_step_summary_list`.
        ///
        /// To override the contents of this collection use [`set_template_step_summary_list`](Self::set_template_step_summary_list).
        ///
        /// <p>The list of summaries of steps in a template.</p>
        pub fn template_step_summary_list(
            mut self,
            input: crate::model::TemplateStepSummary,
        ) -> Self {
            let mut v = self.template_step_summary_list.unwrap_or_default();
            v.push(input);
            self.template_step_summary_list = Some(v);
            self
        }
        /// <p>The list of summaries of steps in a template.</p>
        pub fn set_template_step_summary_list(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TemplateStepSummary>>,
        ) -> Self {
            self.template_step_summary_list = input;
            self
        }
        /// Consumes the builder and constructs a [`ListTemplateStepsOutput`](crate::output::ListTemplateStepsOutput).
        pub fn build(self) -> crate::output::ListTemplateStepsOutput {
            crate::output::ListTemplateStepsOutput {
                next_token: self.next_token,
                template_step_summary_list: self.template_step_summary_list,
            }
        }
    }
}
impl ListTemplateStepsOutput {
    /// Creates a new builder-style object to manufacture [`ListTemplateStepsOutput`](crate::output::ListTemplateStepsOutput).
    pub fn builder() -> crate::output::list_template_steps_output::Builder {
        crate::output::list_template_steps_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetTemplateStepOutput {
    /// <p>The ID of the step.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The ID of the step group.</p>
    #[doc(hidden)]
    pub step_group_id: std::option::Option<std::string::String>,
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub template_id: std::option::Option<std::string::String>,
    /// <p>The name of the step.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the step.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
    #[doc(hidden)]
    pub step_action_type: std::option::Option<crate::model::StepActionType>,
    /// <p>The time at which the step was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<std::string::String>,
    /// <p>The previous step.</p>
    #[doc(hidden)]
    pub previous: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The next step.</p>
    #[doc(hidden)]
    pub next: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The outputs of the step.</p>
    #[doc(hidden)]
    pub outputs: std::option::Option<std::vec::Vec<crate::model::StepOutput>>,
    /// <p>The custom script to run tests on source or target environments.</p>
    #[doc(hidden)]
    pub step_automation_configuration:
        std::option::Option<crate::model::StepAutomationConfiguration>,
}
impl GetTemplateStepOutput {
    /// <p>The ID of the step.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The ID of the step group.</p>
    pub fn step_group_id(&self) -> std::option::Option<&str> {
        self.step_group_id.as_deref()
    }
    /// <p>The ID of the template.</p>
    pub fn template_id(&self) -> std::option::Option<&str> {
        self.template_id.as_deref()
    }
    /// <p>The name of the step.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the step.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
    pub fn step_action_type(&self) -> std::option::Option<&crate::model::StepActionType> {
        self.step_action_type.as_ref()
    }
    /// <p>The time at which the step was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&str> {
        self.creation_time.as_deref()
    }
    /// <p>The previous step.</p>
    pub fn previous(&self) -> std::option::Option<&[std::string::String]> {
        self.previous.as_deref()
    }
    /// <p>The next step.</p>
    pub fn next(&self) -> std::option::Option<&[std::string::String]> {
        self.next.as_deref()
    }
    /// <p>The outputs of the step.</p>
    pub fn outputs(&self) -> std::option::Option<&[crate::model::StepOutput]> {
        self.outputs.as_deref()
    }
    /// <p>The custom script to run tests on source or target environments.</p>
    pub fn step_automation_configuration(
        &self,
    ) -> std::option::Option<&crate::model::StepAutomationConfiguration> {
        self.step_automation_configuration.as_ref()
    }
}
/// See [`GetTemplateStepOutput`](crate::output::GetTemplateStepOutput).
pub mod get_template_step_output {

    /// A builder for [`GetTemplateStepOutput`](crate::output::GetTemplateStepOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) step_group_id: std::option::Option<std::string::String>,
        pub(crate) template_id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) step_action_type: std::option::Option<crate::model::StepActionType>,
        pub(crate) creation_time: std::option::Option<std::string::String>,
        pub(crate) previous: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) next: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) outputs: std::option::Option<std::vec::Vec<crate::model::StepOutput>>,
        pub(crate) step_automation_configuration:
            std::option::Option<crate::model::StepAutomationConfiguration>,
    }
    impl Builder {
        /// <p>The ID of the step.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the step.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn step_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.step_group_id = Some(input.into());
            self
        }
        /// <p>The ID of the step group.</p>
        pub fn set_step_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.step_group_id = input;
            self
        }
        /// <p>The ID of the template.</p>
        pub fn template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.template_id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_template_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.template_id = input;
            self
        }
        /// <p>The name of the step.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the step.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the step.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the step.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
        pub fn step_action_type(mut self, input: crate::model::StepActionType) -> Self {
            self.step_action_type = Some(input);
            self
        }
        /// <p>The action type of the step. You must run and update the status of a manual step for the workflow to continue after the completion of the step.</p>
        pub fn set_step_action_type(
            mut self,
            input: std::option::Option<crate::model::StepActionType>,
        ) -> Self {
            self.step_action_type = input;
            self
        }
        /// <p>The time at which the step was created.</p>
        pub fn creation_time(mut self, input: impl Into<std::string::String>) -> Self {
            self.creation_time = Some(input.into());
            self
        }
        /// <p>The time at which the step was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// Appends an item to `previous`.
        ///
        /// To override the contents of this collection use [`set_previous`](Self::set_previous).
        ///
        /// <p>The previous step.</p>
        pub fn previous(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.previous.unwrap_or_default();
            v.push(input.into());
            self.previous = Some(v);
            self
        }
        /// <p>The previous step.</p>
        pub fn set_previous(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.previous = input;
            self
        }
        /// Appends an item to `next`.
        ///
        /// To override the contents of this collection use [`set_next`](Self::set_next).
        ///
        /// <p>The next step.</p>
        pub fn next(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.next.unwrap_or_default();
            v.push(input.into());
            self.next = Some(v);
            self
        }
        /// <p>The next step.</p>
        pub fn set_next(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.next = input;
            self
        }
        /// Appends an item to `outputs`.
        ///
        /// To override the contents of this collection use [`set_outputs`](Self::set_outputs).
        ///
        /// <p>The outputs of the step.</p>
        pub fn outputs(mut self, input: crate::model::StepOutput) -> Self {
            let mut v = self.outputs.unwrap_or_default();
            v.push(input);
            self.outputs = Some(v);
            self
        }
        /// <p>The outputs of the step.</p>
        pub fn set_outputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::StepOutput>>,
        ) -> Self {
            self.outputs = input;
            self
        }
        /// <p>The custom script to run tests on source or target environments.</p>
        pub fn step_automation_configuration(
            mut self,
            input: crate::model::StepAutomationConfiguration,
        ) -> Self {
            self.step_automation_configuration = Some(input);
            self
        }
        /// <p>The custom script to run tests on source or target environments.</p>
        pub fn set_step_automation_configuration(
            mut self,
            input: std::option::Option<crate::model::StepAutomationConfiguration>,
        ) -> Self {
            self.step_automation_configuration = input;
            self
        }
        /// Consumes the builder and constructs a [`GetTemplateStepOutput`](crate::output::GetTemplateStepOutput).
        pub fn build(self) -> crate::output::GetTemplateStepOutput {
            crate::output::GetTemplateStepOutput {
                id: self.id,
                step_group_id: self.step_group_id,
                template_id: self.template_id,
                name: self.name,
                description: self.description,
                step_action_type: self.step_action_type,
                creation_time: self.creation_time,
                previous: self.previous,
                next: self.next,
                outputs: self.outputs,
                step_automation_configuration: self.step_automation_configuration,
            }
        }
    }
}
impl GetTemplateStepOutput {
    /// Creates a new builder-style object to manufacture [`GetTemplateStepOutput`](crate::output::GetTemplateStepOutput).
    pub fn builder() -> crate::output::get_template_step_output::Builder {
        crate::output::get_template_step_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListPluginsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>Migration Hub Orchestrator plugins.</p>
    #[doc(hidden)]
    pub plugins: std::option::Option<std::vec::Vec<crate::model::PluginSummary>>,
}
impl ListPluginsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>Migration Hub Orchestrator plugins.</p>
    pub fn plugins(&self) -> std::option::Option<&[crate::model::PluginSummary]> {
        self.plugins.as_deref()
    }
}
/// See [`ListPluginsOutput`](crate::output::ListPluginsOutput).
pub mod list_plugins_output {

    /// A builder for [`ListPluginsOutput`](crate::output::ListPluginsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) plugins: std::option::Option<std::vec::Vec<crate::model::PluginSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `plugins`.
        ///
        /// To override the contents of this collection use [`set_plugins`](Self::set_plugins).
        ///
        /// <p>Migration Hub Orchestrator plugins.</p>
        pub fn plugins(mut self, input: crate::model::PluginSummary) -> Self {
            let mut v = self.plugins.unwrap_or_default();
            v.push(input);
            self.plugins = Some(v);
            self
        }
        /// <p>Migration Hub Orchestrator plugins.</p>
        pub fn set_plugins(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::PluginSummary>>,
        ) -> Self {
            self.plugins = input;
            self
        }
        /// Consumes the builder and constructs a [`ListPluginsOutput`](crate::output::ListPluginsOutput).
        pub fn build(self) -> crate::output::ListPluginsOutput {
            crate::output::ListPluginsOutput {
                next_token: self.next_token,
                plugins: self.plugins,
            }
        }
    }
}
impl ListPluginsOutput {
    /// Creates a new builder-style object to manufacture [`ListPluginsOutput`](crate::output::ListPluginsOutput).
    pub fn builder() -> crate::output::list_plugins_output::Builder {
        crate::output::list_plugins_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListTemplatesOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The summary of the template.</p>
    #[doc(hidden)]
    pub template_summary: std::option::Option<std::vec::Vec<crate::model::TemplateSummary>>,
}
impl ListTemplatesOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The summary of the template.</p>
    pub fn template_summary(&self) -> std::option::Option<&[crate::model::TemplateSummary]> {
        self.template_summary.as_deref()
    }
}
/// See [`ListTemplatesOutput`](crate::output::ListTemplatesOutput).
pub mod list_templates_output {

    /// A builder for [`ListTemplatesOutput`](crate::output::ListTemplatesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) template_summary:
            std::option::Option<std::vec::Vec<crate::model::TemplateSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `template_summary`.
        ///
        /// To override the contents of this collection use [`set_template_summary`](Self::set_template_summary).
        ///
        /// <p>The summary of the template.</p>
        pub fn template_summary(mut self, input: crate::model::TemplateSummary) -> Self {
            let mut v = self.template_summary.unwrap_or_default();
            v.push(input);
            self.template_summary = Some(v);
            self
        }
        /// <p>The summary of the template.</p>
        pub fn set_template_summary(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TemplateSummary>>,
        ) -> Self {
            self.template_summary = input;
            self
        }
        /// Consumes the builder and constructs a [`ListTemplatesOutput`](crate::output::ListTemplatesOutput).
        pub fn build(self) -> crate::output::ListTemplatesOutput {
            crate::output::ListTemplatesOutput {
                next_token: self.next_token,
                template_summary: self.template_summary,
            }
        }
    }
}
impl ListTemplatesOutput {
    /// Creates a new builder-style object to manufacture [`ListTemplatesOutput`](crate::output::ListTemplatesOutput).
    pub fn builder() -> crate::output::list_templates_output::Builder {
        crate::output::list_templates_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetTemplateOutput {
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The name of the template.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The time at which the template was last created.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The inputs provided for the creation of the migration workflow.</p>
    #[doc(hidden)]
    pub inputs: std::option::Option<std::vec::Vec<crate::model::TemplateInput>>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The status of the template.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::TemplateStatus>,
    /// <p>The time at which the template was last created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
}
impl GetTemplateOutput {
    /// <p>The ID of the template.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The name of the template.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The time at which the template was last created.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The inputs provided for the creation of the migration workflow.</p>
    pub fn inputs(&self) -> std::option::Option<&[crate::model::TemplateInput]> {
        self.inputs.as_deref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The status of the template.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::TemplateStatus> {
        self.status.as_ref()
    }
    /// <p>The time at which the template was last created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
}
/// See [`GetTemplateOutput`](crate::output::GetTemplateOutput).
pub mod get_template_output {

    /// A builder for [`GetTemplateOutput`](crate::output::GetTemplateOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) inputs: std::option::Option<std::vec::Vec<crate::model::TemplateInput>>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) status: std::option::Option<crate::model::TemplateStatus>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The ID of the template.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The name of the template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The time at which the template was last created.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The time at which the template was last created.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// Appends an item to `inputs`.
        ///
        /// To override the contents of this collection use [`set_inputs`](Self::set_inputs).
        ///
        /// <p>The inputs provided for the creation of the migration workflow.</p>
        pub fn inputs(mut self, input: crate::model::TemplateInput) -> Self {
            let mut v = self.inputs.unwrap_or_default();
            v.push(input);
            self.inputs = Some(v);
            self
        }
        /// <p>The inputs provided for the creation of the migration workflow.</p>
        pub fn set_inputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TemplateInput>>,
        ) -> Self {
            self.inputs = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// <p>The status of the template.</p>
        pub fn status(mut self, input: crate::model::TemplateStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the template.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TemplateStatus>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The time at which the template was last created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the template was last created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// Consumes the builder and constructs a [`GetTemplateOutput`](crate::output::GetTemplateOutput).
        pub fn build(self) -> crate::output::GetTemplateOutput {
            crate::output::GetTemplateOutput {
                id: self.id,
                name: self.name,
                description: self.description,
                inputs: self.inputs,
                tools: self.tools,
                status: self.status,
                creation_time: self.creation_time,
            }
        }
    }
}
impl GetTemplateOutput {
    /// Creates a new builder-style object to manufacture [`GetTemplateOutput`](crate::output::GetTemplateOutput).
    pub fn builder() -> crate::output::get_template_output::Builder {
        crate::output::get_template_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct StopWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    /// <p>The status message of the migration workflow.</p>
    #[doc(hidden)]
    pub status_message: std::option::Option<std::string::String>,
    /// <p>The time at which the migration workflow was stopped.</p>
    #[doc(hidden)]
    pub last_stop_time: std::option::Option<aws_smithy_types::DateTime>,
}
impl StopWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
    /// <p>The status message of the migration workflow.</p>
    pub fn status_message(&self) -> std::option::Option<&str> {
        self.status_message.as_deref()
    }
    /// <p>The time at which the migration workflow was stopped.</p>
    pub fn last_stop_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_stop_time.as_ref()
    }
}
/// See [`StopWorkflowOutput`](crate::output::StopWorkflowOutput).
pub mod stop_workflow_output {

    /// A builder for [`StopWorkflowOutput`](crate::output::StopWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        pub(crate) status_message: std::option::Option<std::string::String>,
        pub(crate) last_stop_time: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn status_message(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_message = Some(input.into());
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn set_status_message(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_message = input;
            self
        }
        /// <p>The time at which the migration workflow was stopped.</p>
        pub fn last_stop_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_stop_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was stopped.</p>
        pub fn set_last_stop_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_stop_time = input;
            self
        }
        /// Consumes the builder and constructs a [`StopWorkflowOutput`](crate::output::StopWorkflowOutput).
        pub fn build(self) -> crate::output::StopWorkflowOutput {
            crate::output::StopWorkflowOutput {
                id: self.id,
                arn: self.arn,
                status: self.status,
                status_message: self.status_message,
                last_stop_time: self.last_stop_time,
            }
        }
    }
}
impl StopWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`StopWorkflowOutput`](crate::output::StopWorkflowOutput).
    pub fn builder() -> crate::output::stop_workflow_output::Builder {
        crate::output::stop_workflow_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct StartWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    /// <p>The status message of the migration workflow.</p>
    #[doc(hidden)]
    pub status_message: std::option::Option<std::string::String>,
    /// <p>The time at which the migration workflow was last started.</p>
    #[doc(hidden)]
    pub last_start_time: std::option::Option<aws_smithy_types::DateTime>,
}
impl StartWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
    /// <p>The status message of the migration workflow.</p>
    pub fn status_message(&self) -> std::option::Option<&str> {
        self.status_message.as_deref()
    }
    /// <p>The time at which the migration workflow was last started.</p>
    pub fn last_start_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_start_time.as_ref()
    }
}
/// See [`StartWorkflowOutput`](crate::output::StartWorkflowOutput).
pub mod start_workflow_output {

    /// A builder for [`StartWorkflowOutput`](crate::output::StartWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        pub(crate) status_message: std::option::Option<std::string::String>,
        pub(crate) last_start_time: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn status_message(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_message = Some(input.into());
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn set_status_message(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_message = input;
            self
        }
        /// <p>The time at which the migration workflow was last started.</p>
        pub fn last_start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_start_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was last started.</p>
        pub fn set_last_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_start_time = input;
            self
        }
        /// Consumes the builder and constructs a [`StartWorkflowOutput`](crate::output::StartWorkflowOutput).
        pub fn build(self) -> crate::output::StartWorkflowOutput {
            crate::output::StartWorkflowOutput {
                id: self.id,
                arn: self.arn,
                status: self.status,
                status_message: self.status_message,
                last_start_time: self.last_start_time,
            }
        }
    }
}
impl StartWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`StartWorkflowOutput`](crate::output::StartWorkflowOutput).
    pub fn builder() -> crate::output::start_workflow_output::Builder {
        crate::output::start_workflow_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ListWorkflowsOutput {
    /// <p>The pagination token.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>The summary of the migration workflow.</p>
    #[doc(hidden)]
    pub migration_workflow_summary:
        std::option::Option<std::vec::Vec<crate::model::MigrationWorkflowSummary>>,
}
impl ListWorkflowsOutput {
    /// <p>The pagination token.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>The summary of the migration workflow.</p>
    pub fn migration_workflow_summary(
        &self,
    ) -> std::option::Option<&[crate::model::MigrationWorkflowSummary]> {
        self.migration_workflow_summary.as_deref()
    }
}
/// See [`ListWorkflowsOutput`](crate::output::ListWorkflowsOutput).
pub mod list_workflows_output {

    /// A builder for [`ListWorkflowsOutput`](crate::output::ListWorkflowsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) migration_workflow_summary:
            std::option::Option<std::vec::Vec<crate::model::MigrationWorkflowSummary>>,
    }
    impl Builder {
        /// <p>The pagination token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The pagination token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `migration_workflow_summary`.
        ///
        /// To override the contents of this collection use [`set_migration_workflow_summary`](Self::set_migration_workflow_summary).
        ///
        /// <p>The summary of the migration workflow.</p>
        pub fn migration_workflow_summary(
            mut self,
            input: crate::model::MigrationWorkflowSummary,
        ) -> Self {
            let mut v = self.migration_workflow_summary.unwrap_or_default();
            v.push(input);
            self.migration_workflow_summary = Some(v);
            self
        }
        /// <p>The summary of the migration workflow.</p>
        pub fn set_migration_workflow_summary(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MigrationWorkflowSummary>>,
        ) -> Self {
            self.migration_workflow_summary = input;
            self
        }
        /// Consumes the builder and constructs a [`ListWorkflowsOutput`](crate::output::ListWorkflowsOutput).
        pub fn build(self) -> crate::output::ListWorkflowsOutput {
            crate::output::ListWorkflowsOutput {
                next_token: self.next_token,
                migration_workflow_summary: self.migration_workflow_summary,
            }
        }
    }
}
impl ListWorkflowsOutput {
    /// Creates a new builder-style object to manufacture [`ListWorkflowsOutput`](crate::output::ListWorkflowsOutput).
    pub fn builder() -> crate::output::list_workflows_output::Builder {
        crate::output::list_workflows_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The name of the migration workflow.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the migration workflow.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub template_id: std::option::Option<std::string::String>,
    /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
    #[doc(hidden)]
    pub ads_application_configuration_id: std::option::Option<std::string::String>,
    /// <p>The inputs for creating a migration workflow.</p>
    #[doc(hidden)]
    pub workflow_inputs: std::option::Option<
        std::collections::HashMap<std::string::String, crate::model::StepInput>,
    >,
    /// <p>The servers on which a step will be run.</p>
    #[doc(hidden)]
    pub step_targets: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    /// <p>The time at which the migration workflow was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The tags to add on a migration workflow.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl CreateWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The name of the migration workflow.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the migration workflow.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The ID of the template.</p>
    pub fn template_id(&self) -> std::option::Option<&str> {
        self.template_id.as_deref()
    }
    /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
    pub fn ads_application_configuration_id(&self) -> std::option::Option<&str> {
        self.ads_application_configuration_id.as_deref()
    }
    /// <p>The inputs for creating a migration workflow.</p>
    pub fn workflow_inputs(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, crate::model::StepInput>>
    {
        self.workflow_inputs.as_ref()
    }
    /// <p>The servers on which a step will be run.</p>
    pub fn step_targets(&self) -> std::option::Option<&[std::string::String]> {
        self.step_targets.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
    /// <p>The time at which the migration workflow was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The tags to add on a migration workflow.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
impl std::fmt::Debug for CreateWorkflowOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateWorkflowOutput");
        formatter.field("id", &self.id);
        formatter.field("arn", &self.arn);
        formatter.field("name", &self.name);
        formatter.field("description", &self.description);
        formatter.field("template_id", &self.template_id);
        formatter.field(
            "ads_application_configuration_id",
            &self.ads_application_configuration_id,
        );
        formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
        formatter.field("step_targets", &self.step_targets);
        formatter.field("status", &self.status);
        formatter.field("creation_time", &self.creation_time);
        formatter.field("tags", &self.tags);
        formatter.finish()
    }
}
/// See [`CreateWorkflowOutput`](crate::output::CreateWorkflowOutput).
pub mod create_workflow_output {

    /// A builder for [`CreateWorkflowOutput`](crate::output::CreateWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) template_id: std::option::Option<std::string::String>,
        pub(crate) ads_application_configuration_id: std::option::Option<std::string::String>,
        pub(crate) workflow_inputs: std::option::Option<
            std::collections::HashMap<std::string::String, crate::model::StepInput>,
        >,
        pub(crate) step_targets: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The ID of the template.</p>
        pub fn template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.template_id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_template_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.template_id = input;
            self
        }
        /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
        pub fn ads_application_configuration_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = Some(input.into());
            self
        }
        /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
        pub fn set_ads_application_configuration_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = input;
            self
        }
        /// Adds a key-value pair to `workflow_inputs`.
        ///
        /// To override the contents of this collection use [`set_workflow_inputs`](Self::set_workflow_inputs).
        ///
        /// <p>The inputs for creating a migration workflow.</p>
        pub fn workflow_inputs(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::StepInput,
        ) -> Self {
            let mut hash_map = self.workflow_inputs.unwrap_or_default();
            hash_map.insert(k.into(), v);
            self.workflow_inputs = Some(hash_map);
            self
        }
        /// <p>The inputs for creating a migration workflow.</p>
        pub fn set_workflow_inputs(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::StepInput>,
            >,
        ) -> Self {
            self.workflow_inputs = input;
            self
        }
        /// Appends an item to `step_targets`.
        ///
        /// To override the contents of this collection use [`set_step_targets`](Self::set_step_targets).
        ///
        /// <p>The servers on which a step will be run.</p>
        pub fn step_targets(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.step_targets.unwrap_or_default();
            v.push(input.into());
            self.step_targets = Some(v);
            self
        }
        /// <p>The servers on which a step will be run.</p>
        pub fn set_step_targets(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.step_targets = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = 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 add on a migration workflow.</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 to add on a migration workflow.</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 [`CreateWorkflowOutput`](crate::output::CreateWorkflowOutput).
        pub fn build(self) -> crate::output::CreateWorkflowOutput {
            crate::output::CreateWorkflowOutput {
                id: self.id,
                arn: self.arn,
                name: self.name,
                description: self.description,
                template_id: self.template_id,
                ads_application_configuration_id: self.ads_application_configuration_id,
                workflow_inputs: self.workflow_inputs,
                step_targets: self.step_targets,
                status: self.status,
                creation_time: self.creation_time,
                tags: self.tags,
            }
        }
    }
    impl std::fmt::Debug for Builder {
        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
            let mut formatter = f.debug_struct("Builder");
            formatter.field("id", &self.id);
            formatter.field("arn", &self.arn);
            formatter.field("name", &self.name);
            formatter.field("description", &self.description);
            formatter.field("template_id", &self.template_id);
            formatter.field(
                "ads_application_configuration_id",
                &self.ads_application_configuration_id,
            );
            formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
            formatter.field("step_targets", &self.step_targets);
            formatter.field("status", &self.status);
            formatter.field("creation_time", &self.creation_time);
            formatter.field("tags", &self.tags);
            formatter.finish()
        }
    }
}
impl CreateWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`CreateWorkflowOutput`](crate::output::CreateWorkflowOutput).
    pub fn builder() -> crate::output::create_workflow_output::Builder {
        crate::output::create_workflow_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DeleteWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
}
impl DeleteWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
}
/// See [`DeleteWorkflowOutput`](crate::output::DeleteWorkflowOutput).
pub mod delete_workflow_output {

    /// A builder for [`DeleteWorkflowOutput`](crate::output::DeleteWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// Consumes the builder and constructs a [`DeleteWorkflowOutput`](crate::output::DeleteWorkflowOutput).
        pub fn build(self) -> crate::output::DeleteWorkflowOutput {
            crate::output::DeleteWorkflowOutput {
                id: self.id,
                arn: self.arn,
                status: self.status,
            }
        }
    }
}
impl DeleteWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`DeleteWorkflowOutput`](crate::output::DeleteWorkflowOutput).
    pub fn builder() -> crate::output::delete_workflow_output::Builder {
        crate::output::delete_workflow_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The name of the migration workflow.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the migration workflow.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub template_id: std::option::Option<std::string::String>,
    /// <p>The ID of the application configured in Application Discovery Service.</p>
    #[doc(hidden)]
    pub ads_application_configuration_id: std::option::Option<std::string::String>,
    /// <p>The inputs required to update a migration workflow.</p>
    #[doc(hidden)]
    pub workflow_inputs: std::option::Option<
        std::collections::HashMap<std::string::String, crate::model::StepInput>,
    >,
    /// <p>The servers on which a step will be run.</p>
    #[doc(hidden)]
    pub step_targets: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    /// <p>The time at which the migration workflow was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the migration workflow was last modified.</p>
    #[doc(hidden)]
    pub last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The tags added to the migration workflow.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl UpdateWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The name of the migration workflow.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the migration workflow.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The ID of the template.</p>
    pub fn template_id(&self) -> std::option::Option<&str> {
        self.template_id.as_deref()
    }
    /// <p>The ID of the application configured in Application Discovery Service.</p>
    pub fn ads_application_configuration_id(&self) -> std::option::Option<&str> {
        self.ads_application_configuration_id.as_deref()
    }
    /// <p>The inputs required to update a migration workflow.</p>
    pub fn workflow_inputs(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, crate::model::StepInput>>
    {
        self.workflow_inputs.as_ref()
    }
    /// <p>The servers on which a step will be run.</p>
    pub fn step_targets(&self) -> std::option::Option<&[std::string::String]> {
        self.step_targets.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
    /// <p>The time at which the migration workflow was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The time at which the migration workflow was last modified.</p>
    pub fn last_modified_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_modified_time.as_ref()
    }
    /// <p>The tags added to the migration workflow.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
impl std::fmt::Debug for UpdateWorkflowOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateWorkflowOutput");
        formatter.field("id", &self.id);
        formatter.field("arn", &self.arn);
        formatter.field("name", &self.name);
        formatter.field("description", &self.description);
        formatter.field("template_id", &self.template_id);
        formatter.field(
            "ads_application_configuration_id",
            &self.ads_application_configuration_id,
        );
        formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
        formatter.field("step_targets", &self.step_targets);
        formatter.field("status", &self.status);
        formatter.field("creation_time", &self.creation_time);
        formatter.field("last_modified_time", &self.last_modified_time);
        formatter.field("tags", &self.tags);
        formatter.finish()
    }
}
/// See [`UpdateWorkflowOutput`](crate::output::UpdateWorkflowOutput).
pub mod update_workflow_output {

    /// A builder for [`UpdateWorkflowOutput`](crate::output::UpdateWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) template_id: std::option::Option<std::string::String>,
        pub(crate) ads_application_configuration_id: std::option::Option<std::string::String>,
        pub(crate) workflow_inputs: std::option::Option<
            std::collections::HashMap<std::string::String, crate::model::StepInput>,
        >,
        pub(crate) step_targets: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The ID of the template.</p>
        pub fn template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.template_id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_template_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.template_id = input;
            self
        }
        /// <p>The ID of the application configured in Application Discovery Service.</p>
        pub fn ads_application_configuration_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = Some(input.into());
            self
        }
        /// <p>The ID of the application configured in Application Discovery Service.</p>
        pub fn set_ads_application_configuration_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = input;
            self
        }
        /// Adds a key-value pair to `workflow_inputs`.
        ///
        /// To override the contents of this collection use [`set_workflow_inputs`](Self::set_workflow_inputs).
        ///
        /// <p>The inputs required to update a migration workflow.</p>
        pub fn workflow_inputs(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::StepInput,
        ) -> Self {
            let mut hash_map = self.workflow_inputs.unwrap_or_default();
            hash_map.insert(k.into(), v);
            self.workflow_inputs = Some(hash_map);
            self
        }
        /// <p>The inputs required to update a migration workflow.</p>
        pub fn set_workflow_inputs(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::StepInput>,
            >,
        ) -> Self {
            self.workflow_inputs = input;
            self
        }
        /// Appends an item to `step_targets`.
        ///
        /// To override the contents of this collection use [`set_step_targets`](Self::set_step_targets).
        ///
        /// <p>The servers on which a step will be run.</p>
        pub fn step_targets(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.step_targets.unwrap_or_default();
            v.push(input.into());
            self.step_targets = Some(v);
            self
        }
        /// <p>The servers on which a step will be run.</p>
        pub fn set_step_targets(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.step_targets = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// <p>The time at which the migration workflow was last modified.</p>
        pub fn last_modified_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_modified_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was last modified.</p>
        pub fn set_last_modified_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_modified_time = 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 added to the migration workflow.</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 added to the migration workflow.</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 [`UpdateWorkflowOutput`](crate::output::UpdateWorkflowOutput).
        pub fn build(self) -> crate::output::UpdateWorkflowOutput {
            crate::output::UpdateWorkflowOutput {
                id: self.id,
                arn: self.arn,
                name: self.name,
                description: self.description,
                template_id: self.template_id,
                ads_application_configuration_id: self.ads_application_configuration_id,
                workflow_inputs: self.workflow_inputs,
                step_targets: self.step_targets,
                status: self.status,
                creation_time: self.creation_time,
                last_modified_time: self.last_modified_time,
                tags: self.tags,
            }
        }
    }
    impl std::fmt::Debug for Builder {
        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
            let mut formatter = f.debug_struct("Builder");
            formatter.field("id", &self.id);
            formatter.field("arn", &self.arn);
            formatter.field("name", &self.name);
            formatter.field("description", &self.description);
            formatter.field("template_id", &self.template_id);
            formatter.field(
                "ads_application_configuration_id",
                &self.ads_application_configuration_id,
            );
            formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
            formatter.field("step_targets", &self.step_targets);
            formatter.field("status", &self.status);
            formatter.field("creation_time", &self.creation_time);
            formatter.field("last_modified_time", &self.last_modified_time);
            formatter.field("tags", &self.tags);
            formatter.finish()
        }
    }
}
impl UpdateWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`UpdateWorkflowOutput`](crate::output::UpdateWorkflowOutput).
    pub fn builder() -> crate::output::update_workflow_output::Builder {
        crate::output::update_workflow_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    #[doc(hidden)]
    pub id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    #[doc(hidden)]
    pub arn: std::option::Option<std::string::String>,
    /// <p>The name of the migration workflow.</p>
    #[doc(hidden)]
    pub name: std::option::Option<std::string::String>,
    /// <p>The description of the migration workflow.</p>
    #[doc(hidden)]
    pub description: std::option::Option<std::string::String>,
    /// <p>The ID of the template.</p>
    #[doc(hidden)]
    pub template_id: std::option::Option<std::string::String>,
    /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
    #[doc(hidden)]
    pub ads_application_configuration_id: std::option::Option<std::string::String>,
    /// <p>The name of the application configured in Application Discovery Service.</p>
    #[doc(hidden)]
    pub ads_application_name: std::option::Option<std::string::String>,
    /// <p>The status of the migration workflow.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
    /// <p>The status message of the migration workflow.</p>
    #[doc(hidden)]
    pub status_message: std::option::Option<std::string::String>,
    /// <p>The time at which the migration workflow was created.</p>
    #[doc(hidden)]
    pub creation_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the migration workflow was last started.</p>
    #[doc(hidden)]
    pub last_start_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the migration workflow was last stopped.</p>
    #[doc(hidden)]
    pub last_stop_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the migration workflow was last modified.</p>
    #[doc(hidden)]
    pub last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The time at which the migration workflow ended.</p>
    #[doc(hidden)]
    pub end_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>List of AWS services utilized in a migration workflow.</p>
    #[doc(hidden)]
    pub tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
    /// <p>The total number of steps in the migration workflow.</p>
    #[doc(hidden)]
    pub total_steps: std::option::Option<i32>,
    /// <p>Get a list of completed steps in the migration workflow.</p>
    #[doc(hidden)]
    pub completed_steps: std::option::Option<i32>,
    /// <p>The inputs required for creating the migration workflow.</p>
    #[doc(hidden)]
    pub workflow_inputs: std::option::Option<
        std::collections::HashMap<std::string::String, crate::model::StepInput>,
    >,
    /// <p>The tags added to the migration workflow.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
    /// <p>The Amazon S3 bucket where the migration logs are stored.</p>
    #[doc(hidden)]
    pub workflow_bucket: std::option::Option<std::string::String>,
}
impl GetWorkflowOutput {
    /// <p>The ID of the migration workflow.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The name of the migration workflow.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The description of the migration workflow.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The ID of the template.</p>
    pub fn template_id(&self) -> std::option::Option<&str> {
        self.template_id.as_deref()
    }
    /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
    pub fn ads_application_configuration_id(&self) -> std::option::Option<&str> {
        self.ads_application_configuration_id.as_deref()
    }
    /// <p>The name of the application configured in Application Discovery Service.</p>
    pub fn ads_application_name(&self) -> std::option::Option<&str> {
        self.ads_application_name.as_deref()
    }
    /// <p>The status of the migration workflow.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MigrationWorkflowStatusEnum> {
        self.status.as_ref()
    }
    /// <p>The status message of the migration workflow.</p>
    pub fn status_message(&self) -> std::option::Option<&str> {
        self.status_message.as_deref()
    }
    /// <p>The time at which the migration workflow was created.</p>
    pub fn creation_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.creation_time.as_ref()
    }
    /// <p>The time at which the migration workflow was last started.</p>
    pub fn last_start_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_start_time.as_ref()
    }
    /// <p>The time at which the migration workflow was last stopped.</p>
    pub fn last_stop_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_stop_time.as_ref()
    }
    /// <p>The time at which the migration workflow was last modified.</p>
    pub fn last_modified_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_modified_time.as_ref()
    }
    /// <p>The time at which the migration workflow ended.</p>
    pub fn end_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.end_time.as_ref()
    }
    /// <p>List of AWS services utilized in a migration workflow.</p>
    pub fn tools(&self) -> std::option::Option<&[crate::model::Tool]> {
        self.tools.as_deref()
    }
    /// <p>The total number of steps in the migration workflow.</p>
    pub fn total_steps(&self) -> std::option::Option<i32> {
        self.total_steps
    }
    /// <p>Get a list of completed steps in the migration workflow.</p>
    pub fn completed_steps(&self) -> std::option::Option<i32> {
        self.completed_steps
    }
    /// <p>The inputs required for creating the migration workflow.</p>
    pub fn workflow_inputs(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, crate::model::StepInput>>
    {
        self.workflow_inputs.as_ref()
    }
    /// <p>The tags added to the migration workflow.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
    /// <p>The Amazon S3 bucket where the migration logs are stored.</p>
    pub fn workflow_bucket(&self) -> std::option::Option<&str> {
        self.workflow_bucket.as_deref()
    }
}
impl std::fmt::Debug for GetWorkflowOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetWorkflowOutput");
        formatter.field("id", &self.id);
        formatter.field("arn", &self.arn);
        formatter.field("name", &self.name);
        formatter.field("description", &self.description);
        formatter.field("template_id", &self.template_id);
        formatter.field(
            "ads_application_configuration_id",
            &self.ads_application_configuration_id,
        );
        formatter.field("ads_application_name", &self.ads_application_name);
        formatter.field("status", &self.status);
        formatter.field("status_message", &self.status_message);
        formatter.field("creation_time", &self.creation_time);
        formatter.field("last_start_time", &self.last_start_time);
        formatter.field("last_stop_time", &self.last_stop_time);
        formatter.field("last_modified_time", &self.last_modified_time);
        formatter.field("end_time", &self.end_time);
        formatter.field("tools", &self.tools);
        formatter.field("total_steps", &self.total_steps);
        formatter.field("completed_steps", &self.completed_steps);
        formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
        formatter.field("tags", &self.tags);
        formatter.field("workflow_bucket", &self.workflow_bucket);
        formatter.finish()
    }
}
/// See [`GetWorkflowOutput`](crate::output::GetWorkflowOutput).
pub mod get_workflow_output {

    /// A builder for [`GetWorkflowOutput`](crate::output::GetWorkflowOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default)]
    pub struct Builder {
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) template_id: std::option::Option<std::string::String>,
        pub(crate) ads_application_configuration_id: std::option::Option<std::string::String>,
        pub(crate) ads_application_name: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        pub(crate) status_message: std::option::Option<std::string::String>,
        pub(crate) creation_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_start_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_stop_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) last_modified_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) end_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) tools: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        pub(crate) total_steps: std::option::Option<i32>,
        pub(crate) completed_steps: std::option::Option<i32>,
        pub(crate) workflow_inputs: std::option::Option<
            std::collections::HashMap<std::string::String, crate::model::StepInput>,
        >,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
        pub(crate) workflow_bucket: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The ID of the migration workflow.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The ID of the migration workflow.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the migration workflow.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The name of the migration workflow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The description of the migration workflow.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The ID of the template.</p>
        pub fn template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.template_id = Some(input.into());
            self
        }
        /// <p>The ID of the template.</p>
        pub fn set_template_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.template_id = input;
            self
        }
        /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
        pub fn ads_application_configuration_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = Some(input.into());
            self
        }
        /// <p>The configuration ID of the application configured in Application Discovery Service.</p>
        pub fn set_ads_application_configuration_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.ads_application_configuration_id = input;
            self
        }
        /// <p>The name of the application configured in Application Discovery Service.</p>
        pub fn ads_application_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.ads_application_name = Some(input.into());
            self
        }
        /// <p>The name of the application configured in Application Discovery Service.</p>
        pub fn set_ads_application_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.ads_application_name = input;
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn status(mut self, input: crate::model::MigrationWorkflowStatusEnum) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The status of the migration workflow.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::MigrationWorkflowStatusEnum>,
        ) -> Self {
            self.status = input;
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn status_message(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_message = Some(input.into());
            self
        }
        /// <p>The status message of the migration workflow.</p>
        pub fn set_status_message(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_message = input;
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn creation_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.creation_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was created.</p>
        pub fn set_creation_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.creation_time = input;
            self
        }
        /// <p>The time at which the migration workflow was last started.</p>
        pub fn last_start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_start_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was last started.</p>
        pub fn set_last_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_start_time = input;
            self
        }
        /// <p>The time at which the migration workflow was last stopped.</p>
        pub fn last_stop_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_stop_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was last stopped.</p>
        pub fn set_last_stop_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_stop_time = input;
            self
        }
        /// <p>The time at which the migration workflow was last modified.</p>
        pub fn last_modified_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_modified_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow was last modified.</p>
        pub fn set_last_modified_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_modified_time = input;
            self
        }
        /// <p>The time at which the migration workflow ended.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.end_time = Some(input);
            self
        }
        /// <p>The time at which the migration workflow ended.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.end_time = input;
            self
        }
        /// Appends an item to `tools`.
        ///
        /// To override the contents of this collection use [`set_tools`](Self::set_tools).
        ///
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn tools(mut self, input: crate::model::Tool) -> Self {
            let mut v = self.tools.unwrap_or_default();
            v.push(input);
            self.tools = Some(v);
            self
        }
        /// <p>List of AWS services utilized in a migration workflow.</p>
        pub fn set_tools(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tool>>,
        ) -> Self {
            self.tools = input;
            self
        }
        /// <p>The total number of steps in the migration workflow.</p>
        pub fn total_steps(mut self, input: i32) -> Self {
            self.total_steps = Some(input);
            self
        }
        /// <p>The total number of steps in the migration workflow.</p>
        pub fn set_total_steps(mut self, input: std::option::Option<i32>) -> Self {
            self.total_steps = input;
            self
        }
        /// <p>Get a list of completed steps in the migration workflow.</p>
        pub fn completed_steps(mut self, input: i32) -> Self {
            self.completed_steps = Some(input);
            self
        }
        /// <p>Get a list of completed steps in the migration workflow.</p>
        pub fn set_completed_steps(mut self, input: std::option::Option<i32>) -> Self {
            self.completed_steps = input;
            self
        }
        /// Adds a key-value pair to `workflow_inputs`.
        ///
        /// To override the contents of this collection use [`set_workflow_inputs`](Self::set_workflow_inputs).
        ///
        /// <p>The inputs required for creating the migration workflow.</p>
        pub fn workflow_inputs(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::StepInput,
        ) -> Self {
            let mut hash_map = self.workflow_inputs.unwrap_or_default();
            hash_map.insert(k.into(), v);
            self.workflow_inputs = Some(hash_map);
            self
        }
        /// <p>The inputs required for creating the migration workflow.</p>
        pub fn set_workflow_inputs(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::StepInput>,
            >,
        ) -> Self {
            self.workflow_inputs = 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 added to the migration workflow.</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 added to the migration workflow.</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
        }
        /// <p>The Amazon S3 bucket where the migration logs are stored.</p>
        pub fn workflow_bucket(mut self, input: impl Into<std::string::String>) -> Self {
            self.workflow_bucket = Some(input.into());
            self
        }
        /// <p>The Amazon S3 bucket where the migration logs are stored.</p>
        pub fn set_workflow_bucket(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.workflow_bucket = input;
            self
        }
        /// Consumes the builder and constructs a [`GetWorkflowOutput`](crate::output::GetWorkflowOutput).
        pub fn build(self) -> crate::output::GetWorkflowOutput {
            crate::output::GetWorkflowOutput {
                id: self.id,
                arn: self.arn,
                name: self.name,
                description: self.description,
                template_id: self.template_id,
                ads_application_configuration_id: self.ads_application_configuration_id,
                ads_application_name: self.ads_application_name,
                status: self.status,
                status_message: self.status_message,
                creation_time: self.creation_time,
                last_start_time: self.last_start_time,
                last_stop_time: self.last_stop_time,
                last_modified_time: self.last_modified_time,
                end_time: self.end_time,
                tools: self.tools,
                total_steps: self.total_steps,
                completed_steps: self.completed_steps,
                workflow_inputs: self.workflow_inputs,
                tags: self.tags,
                workflow_bucket: self.workflow_bucket,
            }
        }
    }
    impl std::fmt::Debug for Builder {
        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
            let mut formatter = f.debug_struct("Builder");
            formatter.field("id", &self.id);
            formatter.field("arn", &self.arn);
            formatter.field("name", &self.name);
            formatter.field("description", &self.description);
            formatter.field("template_id", &self.template_id);
            formatter.field(
                "ads_application_configuration_id",
                &self.ads_application_configuration_id,
            );
            formatter.field("ads_application_name", &self.ads_application_name);
            formatter.field("status", &self.status);
            formatter.field("status_message", &self.status_message);
            formatter.field("creation_time", &self.creation_time);
            formatter.field("last_start_time", &self.last_start_time);
            formatter.field("last_stop_time", &self.last_stop_time);
            formatter.field("last_modified_time", &self.last_modified_time);
            formatter.field("end_time", &self.end_time);
            formatter.field("tools", &self.tools);
            formatter.field("total_steps", &self.total_steps);
            formatter.field("completed_steps", &self.completed_steps);
            formatter.field("workflow_inputs", &"*** Sensitive Data Redacted ***");
            formatter.field("tags", &self.tags);
            formatter.field("workflow_bucket", &self.workflow_bucket);
            formatter.finish()
        }
    }
}
impl GetWorkflowOutput {
    /// Creates a new builder-style object to manufacture [`GetWorkflowOutput`](crate::output::GetWorkflowOutput).
    pub fn builder() -> crate::output::get_workflow_output::Builder {
        crate::output::get_workflow_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 ListTagsForResourceOutput {
    /// <p>The tags added to a resource.</p>
    #[doc(hidden)]
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl ListTagsForResourceOutput {
    /// <p>The tags added to a resource.</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 tags added to a resource.</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 added to a resource.</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()
    }
}