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
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
// 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,
})
}
}