aws_sdk_workmail/operation/create_organization/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_organization::_create_organization_output::CreateOrganizationOutputBuilder;
3
4pub use crate::operation::create_organization::_create_organization_input::CreateOrganizationInputBuilder;
5
6impl crate::operation::create_organization::builders::CreateOrganizationInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::create_organization::CreateOrganizationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_organization::CreateOrganizationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_organization();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateOrganization`.
24///
25/// <p>Creates a new WorkMail organization. Optionally, you can choose to associate an existing AWS Directory Service directory with your organization. If an AWS Directory Service directory ID is specified, the organization alias must match the directory alias. If you choose not to associate an existing directory with your organization, then we create a new WorkMail directory for you. For more information, see <a href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_new_organization.html">Adding an organization</a> in the <i>WorkMail Administrator Guide</i>.</p>
26/// <p>You can associate multiple email domains with an organization, then choose your default email domain from the WorkMail console. You can also associate a domain that is managed in an Amazon Route 53 public hosted zone. For more information, see <a href="https://docs.aws.amazon.com/workmail/latest/adminguide/add_domain.html">Adding a domain</a> and <a href="https://docs.aws.amazon.com/workmail/latest/adminguide/default_domain.html">Choosing the default domain</a> in the <i>WorkMail Administrator Guide</i>.</p>
27/// <p>Optionally, you can use a customer managed key from AWS Key Management Service (AWS KMS) to encrypt email for your organization. If you don't associate an AWS KMS key, WorkMail creates a default, AWS managed key for you.</p>
28#[derive(::std::clone::Clone, ::std::fmt::Debug)]
29pub struct CreateOrganizationFluentBuilder {
30    handle: ::std::sync::Arc<crate::client::Handle>,
31    inner: crate::operation::create_organization::builders::CreateOrganizationInputBuilder,
32    config_override: ::std::option::Option<crate::config::Builder>,
33}
34impl
35    crate::client::customize::internal::CustomizableSend<
36        crate::operation::create_organization::CreateOrganizationOutput,
37        crate::operation::create_organization::CreateOrganizationError,
38    > for CreateOrganizationFluentBuilder
39{
40    fn send(
41        self,
42        config_override: crate::config::Builder,
43    ) -> crate::client::customize::internal::BoxFuture<
44        crate::client::customize::internal::SendResult<
45            crate::operation::create_organization::CreateOrganizationOutput,
46            crate::operation::create_organization::CreateOrganizationError,
47        >,
48    > {
49        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
50    }
51}
52impl CreateOrganizationFluentBuilder {
53    /// Creates a new `CreateOrganizationFluentBuilder`.
54    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
55        Self {
56            handle,
57            inner: ::std::default::Default::default(),
58            config_override: ::std::option::Option::None,
59        }
60    }
61    /// Access the CreateOrganization as a reference.
62    pub fn as_input(&self) -> &crate::operation::create_organization::builders::CreateOrganizationInputBuilder {
63        &self.inner
64    }
65    /// Sends the request and returns the response.
66    ///
67    /// If an error occurs, an `SdkError` will be returned with additional details that
68    /// can be matched against.
69    ///
70    /// By default, any retryable failures will be retried twice. Retry behavior
71    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
72    /// set when configuring the client.
73    pub async fn send(
74        self,
75    ) -> ::std::result::Result<
76        crate::operation::create_organization::CreateOrganizationOutput,
77        ::aws_smithy_runtime_api::client::result::SdkError<
78            crate::operation::create_organization::CreateOrganizationError,
79            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
80        >,
81    > {
82        let input = self
83            .inner
84            .build()
85            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
86        let runtime_plugins = crate::operation::create_organization::CreateOrganization::operation_runtime_plugins(
87            self.handle.runtime_plugins.clone(),
88            &self.handle.conf,
89            self.config_override,
90        );
91        crate::operation::create_organization::CreateOrganization::orchestrate(&runtime_plugins, input).await
92    }
93
94    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
95    pub fn customize(
96        self,
97    ) -> crate::client::customize::CustomizableOperation<
98        crate::operation::create_organization::CreateOrganizationOutput,
99        crate::operation::create_organization::CreateOrganizationError,
100        Self,
101    > {
102        crate::client::customize::CustomizableOperation::new(self)
103    }
104    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
105        self.set_config_override(::std::option::Option::Some(config_override.into()));
106        self
107    }
108
109    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
110        self.config_override = config_override;
111        self
112    }
113    /// <p>The AWS Directory Service directory ID.</p>
114    pub fn directory_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
115        self.inner = self.inner.directory_id(input.into());
116        self
117    }
118    /// <p>The AWS Directory Service directory ID.</p>
119    pub fn set_directory_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
120        self.inner = self.inner.set_directory_id(input);
121        self
122    }
123    /// <p>The AWS Directory Service directory ID.</p>
124    pub fn get_directory_id(&self) -> &::std::option::Option<::std::string::String> {
125        self.inner.get_directory_id()
126    }
127    /// <p>The organization alias.</p>
128    pub fn alias(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
129        self.inner = self.inner.alias(input.into());
130        self
131    }
132    /// <p>The organization alias.</p>
133    pub fn set_alias(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
134        self.inner = self.inner.set_alias(input);
135        self
136    }
137    /// <p>The organization alias.</p>
138    pub fn get_alias(&self) -> &::std::option::Option<::std::string::String> {
139        self.inner.get_alias()
140    }
141    /// <p>The idempotency token associated with the request.</p>
142    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
143        self.inner = self.inner.client_token(input.into());
144        self
145    }
146    /// <p>The idempotency token associated with the request.</p>
147    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
148        self.inner = self.inner.set_client_token(input);
149        self
150    }
151    /// <p>The idempotency token associated with the request.</p>
152    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
153        self.inner.get_client_token()
154    }
155    ///
156    /// Appends an item to `Domains`.
157    ///
158    /// To override the contents of this collection use [`set_domains`](Self::set_domains).
159    ///
160    /// <p>The email domains to associate with the organization.</p>
161    pub fn domains(mut self, input: crate::types::Domain) -> Self {
162        self.inner = self.inner.domains(input);
163        self
164    }
165    /// <p>The email domains to associate with the organization.</p>
166    pub fn set_domains(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Domain>>) -> Self {
167        self.inner = self.inner.set_domains(input);
168        self
169    }
170    /// <p>The email domains to associate with the organization.</p>
171    pub fn get_domains(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Domain>> {
172        self.inner.get_domains()
173    }
174    /// <p>The Amazon Resource Name (ARN) of a customer managed key from AWS KMS.</p>
175    pub fn kms_key_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
176        self.inner = self.inner.kms_key_arn(input.into());
177        self
178    }
179    /// <p>The Amazon Resource Name (ARN) of a customer managed key from AWS KMS.</p>
180    pub fn set_kms_key_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
181        self.inner = self.inner.set_kms_key_arn(input);
182        self
183    }
184    /// <p>The Amazon Resource Name (ARN) of a customer managed key from AWS KMS.</p>
185    pub fn get_kms_key_arn(&self) -> &::std::option::Option<::std::string::String> {
186        self.inner.get_kms_key_arn()
187    }
188    /// <p>When <code>true</code>, allows organization interoperability between WorkMail and Microsoft Exchange. If <code>true</code>, you must include a AD Connector directory ID in the request.</p>
189    pub fn enable_interoperability(mut self, input: bool) -> Self {
190        self.inner = self.inner.enable_interoperability(input);
191        self
192    }
193    /// <p>When <code>true</code>, allows organization interoperability between WorkMail and Microsoft Exchange. If <code>true</code>, you must include a AD Connector directory ID in the request.</p>
194    pub fn set_enable_interoperability(mut self, input: ::std::option::Option<bool>) -> Self {
195        self.inner = self.inner.set_enable_interoperability(input);
196        self
197    }
198    /// <p>When <code>true</code>, allows organization interoperability between WorkMail and Microsoft Exchange. If <code>true</code>, you must include a AD Connector directory ID in the request.</p>
199    pub fn get_enable_interoperability(&self) -> &::std::option::Option<bool> {
200        self.inner.get_enable_interoperability()
201    }
202}