aws-sdk-iam 1.109.0

AWS SDK for AWS Identity and Access Management
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 CreateDelegationRequestInput {
    /// <p>The Amazon Web Services account ID this delegation request is targeted to.</p>
    /// <p>If the account ID is not known, this parameter can be omitted, resulting in a request that can be associated by any account. If the account ID passed, then the created delegation request can only be associated with an identity of that target account.</p>
    pub owner_account_id: ::std::option::Option<::std::string::String>,
    /// <p>A description of the delegation request.</p>
    pub description: ::std::option::Option<::std::string::String>,
    /// <p>The permissions to be delegated in this delegation request.</p>
    pub permissions: ::std::option::Option<crate::types::DelegationPermission>,
    /// <p>A message explaining the reason for the delegation request.</p>
    /// <p>Requesters can utilize this field to add a custom note to the delegation request. This field is different from the description such that this is to be utilized for a custom messaging on a case-by-case basis.</p>
    /// <p>For example, if the current delegation request is in response to a previous request being rejected, this explanation can be added to the request via this field.</p>
    pub request_message: ::std::option::Option<::std::string::String>,
    /// <p>The workflow ID associated with the requestor.</p>
    /// <p>This is the unique identifier on the partner side that can be used to track the progress of the request.</p>
    /// <p>IAM maintains a uniqueness check on this workflow id for each request - if a workflow id for an existing request is passed, this API call will fail.</p>
    pub requestor_workflow_id: ::std::option::Option<::std::string::String>,
    /// <p>The URL to redirect to after the delegation request is processed.</p>
    /// <p>This URL is used by the IAM console to show a link to the customer to re-load the partner workflow.</p>
    pub redirect_url: ::std::option::Option<::std::string::String>,
    /// <p>The notification channel for updates about the delegation request.</p>
    /// <p>At this time,only SNS topic ARNs are accepted for notification. This topic ARN must have a resource policy granting <code>SNS:Publish</code> permission to the IAM service principal (<code>iam.amazonaws.com</code>). See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a> for more details.</p>
    pub notification_channel: ::std::option::Option<::std::string::String>,
    /// <p>The duration for which the delegated session should remain active, in seconds.</p>
    /// <p>The active time window for the session starts when the customer calls the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html">SendDelegationToken</a> API.</p>
    pub session_duration: ::std::option::Option<i32>,
    /// <p>Specifies whether the delegation token should only be sent by the owner.</p>
    /// <p>This flag prevents any party other than the owner from calling <code>SendDelegationToken</code> API for this delegation request. This behavior becomes useful when the delegation request owner needs to be present for subsequent partner interactions, but the delegation request was sent to a more privileged user for approval due to the owner lacking sufficient delegation permissions.</p>
    pub only_send_by_owner: ::std::option::Option<bool>,
}
impl CreateDelegationRequestInput {
    /// <p>The Amazon Web Services account ID this delegation request is targeted to.</p>
    /// <p>If the account ID is not known, this parameter can be omitted, resulting in a request that can be associated by any account. If the account ID passed, then the created delegation request can only be associated with an identity of that target account.</p>
    pub fn owner_account_id(&self) -> ::std::option::Option<&str> {
        self.owner_account_id.as_deref()
    }
    /// <p>A description of the delegation request.</p>
    pub fn description(&self) -> ::std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The permissions to be delegated in this delegation request.</p>
    pub fn permissions(&self) -> ::std::option::Option<&crate::types::DelegationPermission> {
        self.permissions.as_ref()
    }
    /// <p>A message explaining the reason for the delegation request.</p>
    /// <p>Requesters can utilize this field to add a custom note to the delegation request. This field is different from the description such that this is to be utilized for a custom messaging on a case-by-case basis.</p>
    /// <p>For example, if the current delegation request is in response to a previous request being rejected, this explanation can be added to the request via this field.</p>
    pub fn request_message(&self) -> ::std::option::Option<&str> {
        self.request_message.as_deref()
    }
    /// <p>The workflow ID associated with the requestor.</p>
    /// <p>This is the unique identifier on the partner side that can be used to track the progress of the request.</p>
    /// <p>IAM maintains a uniqueness check on this workflow id for each request - if a workflow id for an existing request is passed, this API call will fail.</p>
    pub fn requestor_workflow_id(&self) -> ::std::option::Option<&str> {
        self.requestor_workflow_id.as_deref()
    }
    /// <p>The URL to redirect to after the delegation request is processed.</p>
    /// <p>This URL is used by the IAM console to show a link to the customer to re-load the partner workflow.</p>
    pub fn redirect_url(&self) -> ::std::option::Option<&str> {
        self.redirect_url.as_deref()
    }
    /// <p>The notification channel for updates about the delegation request.</p>
    /// <p>At this time,only SNS topic ARNs are accepted for notification. This topic ARN must have a resource policy granting <code>SNS:Publish</code> permission to the IAM service principal (<code>iam.amazonaws.com</code>). See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a> for more details.</p>
    pub fn notification_channel(&self) -> ::std::option::Option<&str> {
        self.notification_channel.as_deref()
    }
    /// <p>The duration for which the delegated session should remain active, in seconds.</p>
    /// <p>The active time window for the session starts when the customer calls the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html">SendDelegationToken</a> API.</p>
    pub fn session_duration(&self) -> ::std::option::Option<i32> {
        self.session_duration
    }
    /// <p>Specifies whether the delegation token should only be sent by the owner.</p>
    /// <p>This flag prevents any party other than the owner from calling <code>SendDelegationToken</code> API for this delegation request. This behavior becomes useful when the delegation request owner needs to be present for subsequent partner interactions, but the delegation request was sent to a more privileged user for approval due to the owner lacking sufficient delegation permissions.</p>
    pub fn only_send_by_owner(&self) -> ::std::option::Option<bool> {
        self.only_send_by_owner
    }
}
impl CreateDelegationRequestInput {
    /// Creates a new builder-style object to manufacture [`CreateDelegationRequestInput`](crate::operation::create_delegation_request::CreateDelegationRequestInput).
    pub fn builder() -> crate::operation::create_delegation_request::builders::CreateDelegationRequestInputBuilder {
        crate::operation::create_delegation_request::builders::CreateDelegationRequestInputBuilder::default()
    }
}

/// A builder for [`CreateDelegationRequestInput`](crate::operation::create_delegation_request::CreateDelegationRequestInput).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct CreateDelegationRequestInputBuilder {
    pub(crate) owner_account_id: ::std::option::Option<::std::string::String>,
    pub(crate) description: ::std::option::Option<::std::string::String>,
    pub(crate) permissions: ::std::option::Option<crate::types::DelegationPermission>,
    pub(crate) request_message: ::std::option::Option<::std::string::String>,
    pub(crate) requestor_workflow_id: ::std::option::Option<::std::string::String>,
    pub(crate) redirect_url: ::std::option::Option<::std::string::String>,
    pub(crate) notification_channel: ::std::option::Option<::std::string::String>,
    pub(crate) session_duration: ::std::option::Option<i32>,
    pub(crate) only_send_by_owner: ::std::option::Option<bool>,
}
impl CreateDelegationRequestInputBuilder {
    /// <p>The Amazon Web Services account ID this delegation request is targeted to.</p>
    /// <p>If the account ID is not known, this parameter can be omitted, resulting in a request that can be associated by any account. If the account ID passed, then the created delegation request can only be associated with an identity of that target account.</p>
    pub fn owner_account_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.owner_account_id = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The Amazon Web Services account ID this delegation request is targeted to.</p>
    /// <p>If the account ID is not known, this parameter can be omitted, resulting in a request that can be associated by any account. If the account ID passed, then the created delegation request can only be associated with an identity of that target account.</p>
    pub fn set_owner_account_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.owner_account_id = input;
        self
    }
    /// <p>The Amazon Web Services account ID this delegation request is targeted to.</p>
    /// <p>If the account ID is not known, this parameter can be omitted, resulting in a request that can be associated by any account. If the account ID passed, then the created delegation request can only be associated with an identity of that target account.</p>
    pub fn get_owner_account_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.owner_account_id
    }
    /// <p>A description of the delegation request.</p>
    /// This field is required.
    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.description = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A description of the delegation request.</p>
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.description = input;
        self
    }
    /// <p>A description of the delegation request.</p>
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        &self.description
    }
    /// <p>The permissions to be delegated in this delegation request.</p>
    /// This field is required.
    pub fn permissions(mut self, input: crate::types::DelegationPermission) -> Self {
        self.permissions = ::std::option::Option::Some(input);
        self
    }
    /// <p>The permissions to be delegated in this delegation request.</p>
    pub fn set_permissions(mut self, input: ::std::option::Option<crate::types::DelegationPermission>) -> Self {
        self.permissions = input;
        self
    }
    /// <p>The permissions to be delegated in this delegation request.</p>
    pub fn get_permissions(&self) -> &::std::option::Option<crate::types::DelegationPermission> {
        &self.permissions
    }
    /// <p>A message explaining the reason for the delegation request.</p>
    /// <p>Requesters can utilize this field to add a custom note to the delegation request. This field is different from the description such that this is to be utilized for a custom messaging on a case-by-case basis.</p>
    /// <p>For example, if the current delegation request is in response to a previous request being rejected, this explanation can be added to the request via this field.</p>
    pub fn request_message(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.request_message = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A message explaining the reason for the delegation request.</p>
    /// <p>Requesters can utilize this field to add a custom note to the delegation request. This field is different from the description such that this is to be utilized for a custom messaging on a case-by-case basis.</p>
    /// <p>For example, if the current delegation request is in response to a previous request being rejected, this explanation can be added to the request via this field.</p>
    pub fn set_request_message(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.request_message = input;
        self
    }
    /// <p>A message explaining the reason for the delegation request.</p>
    /// <p>Requesters can utilize this field to add a custom note to the delegation request. This field is different from the description such that this is to be utilized for a custom messaging on a case-by-case basis.</p>
    /// <p>For example, if the current delegation request is in response to a previous request being rejected, this explanation can be added to the request via this field.</p>
    pub fn get_request_message(&self) -> &::std::option::Option<::std::string::String> {
        &self.request_message
    }
    /// <p>The workflow ID associated with the requestor.</p>
    /// <p>This is the unique identifier on the partner side that can be used to track the progress of the request.</p>
    /// <p>IAM maintains a uniqueness check on this workflow id for each request - if a workflow id for an existing request is passed, this API call will fail.</p>
    /// This field is required.
    pub fn requestor_workflow_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.requestor_workflow_id = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The workflow ID associated with the requestor.</p>
    /// <p>This is the unique identifier on the partner side that can be used to track the progress of the request.</p>
    /// <p>IAM maintains a uniqueness check on this workflow id for each request - if a workflow id for an existing request is passed, this API call will fail.</p>
    pub fn set_requestor_workflow_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.requestor_workflow_id = input;
        self
    }
    /// <p>The workflow ID associated with the requestor.</p>
    /// <p>This is the unique identifier on the partner side that can be used to track the progress of the request.</p>
    /// <p>IAM maintains a uniqueness check on this workflow id for each request - if a workflow id for an existing request is passed, this API call will fail.</p>
    pub fn get_requestor_workflow_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.requestor_workflow_id
    }
    /// <p>The URL to redirect to after the delegation request is processed.</p>
    /// <p>This URL is used by the IAM console to show a link to the customer to re-load the partner workflow.</p>
    pub fn redirect_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.redirect_url = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The URL to redirect to after the delegation request is processed.</p>
    /// <p>This URL is used by the IAM console to show a link to the customer to re-load the partner workflow.</p>
    pub fn set_redirect_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.redirect_url = input;
        self
    }
    /// <p>The URL to redirect to after the delegation request is processed.</p>
    /// <p>This URL is used by the IAM console to show a link to the customer to re-load the partner workflow.</p>
    pub fn get_redirect_url(&self) -> &::std::option::Option<::std::string::String> {
        &self.redirect_url
    }
    /// <p>The notification channel for updates about the delegation request.</p>
    /// <p>At this time,only SNS topic ARNs are accepted for notification. This topic ARN must have a resource policy granting <code>SNS:Publish</code> permission to the IAM service principal (<code>iam.amazonaws.com</code>). See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a> for more details.</p>
    /// This field is required.
    pub fn notification_channel(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.notification_channel = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The notification channel for updates about the delegation request.</p>
    /// <p>At this time,only SNS topic ARNs are accepted for notification. This topic ARN must have a resource policy granting <code>SNS:Publish</code> permission to the IAM service principal (<code>iam.amazonaws.com</code>). See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a> for more details.</p>
    pub fn set_notification_channel(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.notification_channel = input;
        self
    }
    /// <p>The notification channel for updates about the delegation request.</p>
    /// <p>At this time,only SNS topic ARNs are accepted for notification. This topic ARN must have a resource policy granting <code>SNS:Publish</code> permission to the IAM service principal (<code>iam.amazonaws.com</code>). See <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a> for more details.</p>
    pub fn get_notification_channel(&self) -> &::std::option::Option<::std::string::String> {
        &self.notification_channel
    }
    /// <p>The duration for which the delegated session should remain active, in seconds.</p>
    /// <p>The active time window for the session starts when the customer calls the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html">SendDelegationToken</a> API.</p>
    /// This field is required.
    pub fn session_duration(mut self, input: i32) -> Self {
        self.session_duration = ::std::option::Option::Some(input);
        self
    }
    /// <p>The duration for which the delegated session should remain active, in seconds.</p>
    /// <p>The active time window for the session starts when the customer calls the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html">SendDelegationToken</a> API.</p>
    pub fn set_session_duration(mut self, input: ::std::option::Option<i32>) -> Self {
        self.session_duration = input;
        self
    }
    /// <p>The duration for which the delegated session should remain active, in seconds.</p>
    /// <p>The active time window for the session starts when the customer calls the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_SendDelegationToken.html">SendDelegationToken</a> API.</p>
    pub fn get_session_duration(&self) -> &::std::option::Option<i32> {
        &self.session_duration
    }
    /// <p>Specifies whether the delegation token should only be sent by the owner.</p>
    /// <p>This flag prevents any party other than the owner from calling <code>SendDelegationToken</code> API for this delegation request. This behavior becomes useful when the delegation request owner needs to be present for subsequent partner interactions, but the delegation request was sent to a more privileged user for approval due to the owner lacking sufficient delegation permissions.</p>
    pub fn only_send_by_owner(mut self, input: bool) -> Self {
        self.only_send_by_owner = ::std::option::Option::Some(input);
        self
    }
    /// <p>Specifies whether the delegation token should only be sent by the owner.</p>
    /// <p>This flag prevents any party other than the owner from calling <code>SendDelegationToken</code> API for this delegation request. This behavior becomes useful when the delegation request owner needs to be present for subsequent partner interactions, but the delegation request was sent to a more privileged user for approval due to the owner lacking sufficient delegation permissions.</p>
    pub fn set_only_send_by_owner(mut self, input: ::std::option::Option<bool>) -> Self {
        self.only_send_by_owner = input;
        self
    }
    /// <p>Specifies whether the delegation token should only be sent by the owner.</p>
    /// <p>This flag prevents any party other than the owner from calling <code>SendDelegationToken</code> API for this delegation request. This behavior becomes useful when the delegation request owner needs to be present for subsequent partner interactions, but the delegation request was sent to a more privileged user for approval due to the owner lacking sufficient delegation permissions.</p>
    pub fn get_only_send_by_owner(&self) -> &::std::option::Option<bool> {
        &self.only_send_by_owner
    }
    /// Consumes the builder and constructs a [`CreateDelegationRequestInput`](crate::operation::create_delegation_request::CreateDelegationRequestInput).
    pub fn build(
        self,
    ) -> ::std::result::Result<
        crate::operation::create_delegation_request::CreateDelegationRequestInput,
        ::aws_smithy_types::error::operation::BuildError,
    > {
        ::std::result::Result::Ok(crate::operation::create_delegation_request::CreateDelegationRequestInput {
            owner_account_id: self.owner_account_id,
            description: self.description,
            permissions: self.permissions,
            request_message: self.request_message,
            requestor_workflow_id: self.requestor_workflow_id,
            redirect_url: self.redirect_url,
            notification_channel: self.notification_channel,
            session_duration: self.session_duration,
            only_send_by_owner: self.only_send_by_owner,
        })
    }
}