1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::create_delegation_request::_create_delegation_request_input::CreateDelegationRequestInputBuilder;
pub use crate::operation::create_delegation_request::_create_delegation_request_output::CreateDelegationRequestOutputBuilder;
impl crate::operation::create_delegation_request::builders::CreateDelegationRequestInputBuilder {
/// Sends a request with this input using the given client.
pub async fn send_with(
self,
client: &crate::Client,
) -> ::std::result::Result<
crate::operation::create_delegation_request::CreateDelegationRequestOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::create_delegation_request::CreateDelegationRequestError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let mut fluent_builder = client.create_delegation_request();
fluent_builder.inner = self;
fluent_builder.send().await
}
}
/// Fluent builder constructing a request to `CreateDelegationRequest`.
///
/// <p>Creates an IAM delegation request for temporary access delegation.</p>
/// <p>This API is not available for general use. In order to use this API, a caller first need to go through an onboarding process described in the <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-temporary-delegation-partner-guide.html">partner onboarding documentation</a>.</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct CreateDelegationRequestFluentBuilder {
handle: ::std::sync::Arc<crate::client::Handle>,
inner: crate::operation::create_delegation_request::builders::CreateDelegationRequestInputBuilder,
config_override: ::std::option::Option<crate::config::Builder>,
}
impl
crate::client::customize::internal::CustomizableSend<
crate::operation::create_delegation_request::CreateDelegationRequestOutput,
crate::operation::create_delegation_request::CreateDelegationRequestError,
> for CreateDelegationRequestFluentBuilder
{
fn send(
self,
config_override: crate::config::Builder,
) -> crate::client::customize::internal::BoxFuture<
crate::client::customize::internal::SendResult<
crate::operation::create_delegation_request::CreateDelegationRequestOutput,
crate::operation::create_delegation_request::CreateDelegationRequestError,
>,
> {
::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
}
}
impl CreateDelegationRequestFluentBuilder {
/// Creates a new `CreateDelegationRequestFluentBuilder`.
pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
Self {
handle,
inner: ::std::default::Default::default(),
config_override: ::std::option::Option::None,
}
}
/// Access the CreateDelegationRequest as a reference.
pub fn as_input(&self) -> &crate::operation::create_delegation_request::builders::CreateDelegationRequestInputBuilder {
&self.inner
}
/// Sends the request and returns the response.
///
/// If an error occurs, an `SdkError` will be returned with additional details that
/// can be matched against.
///
/// By default, any retryable failures will be retried twice. Retry behavior
/// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
/// set when configuring the client.
pub async fn send(
self,
) -> ::std::result::Result<
crate::operation::create_delegation_request::CreateDelegationRequestOutput,
::aws_smithy_runtime_api::client::result::SdkError<
crate::operation::create_delegation_request::CreateDelegationRequestError,
::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
>,
> {
let input = self
.inner
.build()
.map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
let runtime_plugins = crate::operation::create_delegation_request::CreateDelegationRequest::operation_runtime_plugins(
self.handle.runtime_plugins.clone(),
&self.handle.conf,
self.config_override,
);
crate::operation::create_delegation_request::CreateDelegationRequest::orchestrate(&runtime_plugins, input).await
}
/// Consumes this builder, creating a customizable operation that can be modified before being sent.
pub fn customize(
self,
) -> crate::client::customize::CustomizableOperation<
crate::operation::create_delegation_request::CreateDelegationRequestOutput,
crate::operation::create_delegation_request::CreateDelegationRequestError,
Self,
> {
crate::client::customize::CustomizableOperation::new(self)
}
pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
self.set_config_override(::std::option::Option::Some(config_override.into()));
self
}
pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
self.config_override = config_override;
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 owner_account_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.owner_account_id(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.inner = self.inner.set_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.inner.get_owner_account_id()
}
/// <p>A description of the delegation request.</p>
pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.description(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.inner = self.inner.set_description(input);
self
}
/// <p>A description of the delegation request.</p>
pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
self.inner.get_description()
}
/// <p>The permissions to be delegated in this delegation request.</p>
pub fn permissions(mut self, input: crate::types::DelegationPermission) -> Self {
self.inner = self.inner.permissions(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.inner = self.inner.set_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.inner.get_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.inner = self.inner.request_message(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.inner = self.inner.set_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.inner.get_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>
pub fn requestor_workflow_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.requestor_workflow_id(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.inner = self.inner.set_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.inner.get_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.inner = self.inner.redirect_url(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.inner = self.inner.set_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.inner.get_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>
pub fn notification_channel(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
self.inner = self.inner.notification_channel(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.inner = self.inner.set_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.inner.get_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>
pub fn session_duration(mut self, input: i32) -> Self {
self.inner = self.inner.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 set_session_duration(mut self, input: ::std::option::Option<i32>) -> Self {
self.inner = self.inner.set_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.inner.get_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.inner = self.inner.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 set_only_send_by_owner(mut self, input: ::std::option::Option<bool>) -> Self {
self.inner = self.inner.set_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.inner.get_only_send_by_owner()
}
}