@aws-sdk/client-iam 3.687.0 → 3.692.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +40 -0
  2. package/dist-cjs/index.js +510 -10
  3. package/dist-es/IAM.js +10 -0
  4. package/dist-es/commands/DisableOrganizationsRootCredentialsManagementCommand.js +22 -0
  5. package/dist-es/commands/DisableOrganizationsRootSessionsCommand.js +22 -0
  6. package/dist-es/commands/EnableOrganizationsRootCredentialsManagementCommand.js +22 -0
  7. package/dist-es/commands/EnableOrganizationsRootSessionsCommand.js +22 -0
  8. package/dist-es/commands/ListOrganizationsFeaturesCommand.js +22 -0
  9. package/dist-es/commands/index.js +5 -0
  10. package/dist-es/models/models_0.js +70 -9
  11. package/dist-es/models/models_1.js +9 -0
  12. package/dist-es/protocols/Aws_query.js +310 -1
  13. package/dist-types/IAM.d.ts +43 -0
  14. package/dist-types/IAMClient.d.ts +7 -2
  15. package/dist-types/commands/CreateLoginProfileCommand.d.ts +3 -3
  16. package/dist-types/commands/DeactivateMFADeviceCommand.d.ts +1 -1
  17. package/dist-types/commands/DeleteLoginProfileCommand.d.ts +2 -2
  18. package/dist-types/commands/DisableOrganizationsRootCredentialsManagementCommand.d.ts +91 -0
  19. package/dist-types/commands/DisableOrganizationsRootSessionsCommand.d.ts +91 -0
  20. package/dist-types/commands/EnableOrganizationsRootCredentialsManagementCommand.d.ts +107 -0
  21. package/dist-types/commands/EnableOrganizationsRootSessionsCommand.d.ts +106 -0
  22. package/dist-types/commands/GetLoginProfileCommand.d.ts +2 -2
  23. package/dist-types/commands/ListAccountAliasesCommand.d.ts +3 -3
  24. package/dist-types/commands/ListOrganizationsFeaturesCommand.d.ts +89 -0
  25. package/dist-types/commands/SimulateCustomPolicyCommand.d.ts +2 -1
  26. package/dist-types/commands/SimulatePrincipalPolicyCommand.d.ts +1 -1
  27. package/dist-types/commands/TagInstanceProfileCommand.d.ts +1 -1
  28. package/dist-types/commands/TagMFADeviceCommand.d.ts +1 -1
  29. package/dist-types/commands/TagOpenIDConnectProviderCommand.d.ts +1 -1
  30. package/dist-types/commands/TagPolicyCommand.d.ts +1 -1
  31. package/dist-types/commands/TagRoleCommand.d.ts +1 -1
  32. package/dist-types/commands/TagSAMLProviderCommand.d.ts +1 -1
  33. package/dist-types/commands/TagServerCertificateCommand.d.ts +1 -1
  34. package/dist-types/commands/TagUserCommand.d.ts +1 -1
  35. package/dist-types/commands/index.d.ts +5 -0
  36. package/dist-types/models/models_0.d.ts +616 -1028
  37. package/dist-types/models/models_1.d.ts +642 -32
  38. package/dist-types/protocols/Aws_query.d.ts +45 -0
  39. package/dist-types/ts3.4/IAM.d.ts +105 -0
  40. package/dist-types/ts3.4/IAMClient.d.ts +30 -0
  41. package/dist-types/ts3.4/commands/CreateLoginProfileCommand.d.ts +1 -1
  42. package/dist-types/ts3.4/commands/DeleteLoginProfileCommand.d.ts +1 -1
  43. package/dist-types/ts3.4/commands/DisableOrganizationsRootCredentialsManagementCommand.d.ts +51 -0
  44. package/dist-types/ts3.4/commands/DisableOrganizationsRootSessionsCommand.d.ts +51 -0
  45. package/dist-types/ts3.4/commands/EnableOrganizationsRootCredentialsManagementCommand.d.ts +51 -0
  46. package/dist-types/ts3.4/commands/EnableOrganizationsRootSessionsCommand.d.ts +51 -0
  47. package/dist-types/ts3.4/commands/GetLoginProfileCommand.d.ts +1 -1
  48. package/dist-types/ts3.4/commands/ListOrganizationsFeaturesCommand.d.ts +51 -0
  49. package/dist-types/ts3.4/commands/SimulateCustomPolicyCommand.d.ts +2 -4
  50. package/dist-types/ts3.4/commands/SimulatePrincipalPolicyCommand.d.ts +1 -1
  51. package/dist-types/ts3.4/commands/TagInstanceProfileCommand.d.ts +1 -1
  52. package/dist-types/ts3.4/commands/TagMFADeviceCommand.d.ts +1 -1
  53. package/dist-types/ts3.4/commands/TagOpenIDConnectProviderCommand.d.ts +1 -1
  54. package/dist-types/ts3.4/commands/TagPolicyCommand.d.ts +1 -1
  55. package/dist-types/ts3.4/commands/TagRoleCommand.d.ts +1 -1
  56. package/dist-types/ts3.4/commands/TagSAMLProviderCommand.d.ts +1 -1
  57. package/dist-types/ts3.4/commands/TagServerCertificateCommand.d.ts +1 -1
  58. package/dist-types/ts3.4/commands/TagUserCommand.d.ts +1 -1
  59. package/dist-types/ts3.4/commands/index.d.ts +5 -0
  60. package/dist-types/ts3.4/models/models_0.d.ts +501 -511
  61. package/dist-types/ts3.4/models/models_1.d.ts +135 -31
  62. package/dist-types/ts3.4/protocols/Aws_query.d.ts +60 -0
  63. package/package.json +36 -36
@@ -1,6 +1,616 @@
1
1
  import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client";
2
2
  import { IAMServiceException as __BaseException } from "./IAMServiceException";
3
- import { Role, ServerCertificateMetadata, SigningCertificate, SSHPublicKey, StatusType, Tag } from "./models_0";
3
+ import { ContextEntry, PolicyEvaluationDecisionType, Position, Role, ServerCertificateMetadata, SigningCertificate, SSHPublicKey, StatusType, Tag } from "./models_0";
4
+ /**
5
+ * @public
6
+ * @enum
7
+ */
8
+ export declare const PolicySourceType: {
9
+ readonly AWS_MANAGED: "aws-managed";
10
+ readonly GROUP: "group";
11
+ readonly NONE: "none";
12
+ readonly RESOURCE: "resource";
13
+ readonly ROLE: "role";
14
+ readonly USER: "user";
15
+ readonly USER_MANAGED: "user-managed";
16
+ };
17
+ /**
18
+ * @public
19
+ */
20
+ export type PolicySourceType = (typeof PolicySourceType)[keyof typeof PolicySourceType];
21
+ /**
22
+ * <p>Contains a reference to a <code>Statement</code> element in a policy document that
23
+ * determines the result of the simulation.</p>
24
+ * <p>This data type is used by the <code>MatchedStatements</code> member of the <code>
25
+ * <a>EvaluationResult</a>
26
+ * </code> type.</p>
27
+ * @public
28
+ */
29
+ export interface Statement {
30
+ /**
31
+ * <p>The identifier of the policy that was provided as an input.</p>
32
+ * @public
33
+ */
34
+ SourcePolicyId?: string | undefined;
35
+ /**
36
+ * <p>The type of the policy.</p>
37
+ * @public
38
+ */
39
+ SourcePolicyType?: PolicySourceType | undefined;
40
+ /**
41
+ * <p>The row and column of the beginning of the <code>Statement</code> in an IAM
42
+ * policy.</p>
43
+ * @public
44
+ */
45
+ StartPosition?: Position | undefined;
46
+ /**
47
+ * <p>The row and column of the end of a <code>Statement</code> in an IAM policy.</p>
48
+ * @public
49
+ */
50
+ EndPosition?: Position | undefined;
51
+ }
52
+ /**
53
+ * <p>Contains information about the effect that Organizations has on a policy simulation.</p>
54
+ * @public
55
+ */
56
+ export interface OrganizationsDecisionDetail {
57
+ /**
58
+ * <p>Specifies whether the simulated operation is allowed by the Organizations service control
59
+ * policies that impact the simulated user's account.</p>
60
+ * @public
61
+ */
62
+ AllowedByOrganizations?: boolean | undefined;
63
+ }
64
+ /**
65
+ * <p>Contains information about the effect that a permissions boundary has on a policy
66
+ * simulation when the boundary is applied to an IAM entity.</p>
67
+ * @public
68
+ */
69
+ export interface PermissionsBoundaryDecisionDetail {
70
+ /**
71
+ * <p>Specifies whether an action is allowed by a permissions boundary that is applied to an
72
+ * IAM entity (user or role). A value of <code>true</code> means that the permissions
73
+ * boundary does not deny the action. This means that the policy includes an
74
+ * <code>Allow</code> statement that matches the request. In this case, if an
75
+ * identity-based policy also allows the action, the request is allowed. A value of
76
+ * <code>false</code> means that either the requested action is not allowed (implicitly
77
+ * denied) or that the action is explicitly denied by the permissions boundary. In both of
78
+ * these cases, the action is not allowed, regardless of the identity-based policy.</p>
79
+ * @public
80
+ */
81
+ AllowedByPermissionsBoundary?: boolean | undefined;
82
+ }
83
+ /**
84
+ * <p>Contains the result of the simulation of a single API operation call on a single
85
+ * resource.</p>
86
+ * <p>This data type is used by a member of the <a>EvaluationResult</a> data
87
+ * type.</p>
88
+ * @public
89
+ */
90
+ export interface ResourceSpecificResult {
91
+ /**
92
+ * <p>The name of the simulated resource, in Amazon Resource Name (ARN) format.</p>
93
+ * @public
94
+ */
95
+ EvalResourceName: string | undefined;
96
+ /**
97
+ * <p>The result of the simulation of the simulated API operation on the resource specified in
98
+ * <code>EvalResourceName</code>.</p>
99
+ * @public
100
+ */
101
+ EvalResourceDecision: PolicyEvaluationDecisionType | undefined;
102
+ /**
103
+ * <p>A list of the statements in the input policies that determine the result for this part
104
+ * of the simulation. Remember that even if multiple statements allow the operation on the
105
+ * resource, if <i>any</i> statement denies that operation, then the explicit
106
+ * deny overrides any allow. In addition, the deny statement is the only entry included in the
107
+ * result.</p>
108
+ * @public
109
+ */
110
+ MatchedStatements?: Statement[] | undefined;
111
+ /**
112
+ * <p>A list of context keys that are required by the included input policies but that were
113
+ * not provided by one of the input parameters. This list is used when a list of ARNs is
114
+ * included in the <code>ResourceArns</code> parameter instead of "*". If you do not specify
115
+ * individual resources, by setting <code>ResourceArns</code> to "*" or by not including the
116
+ * <code>ResourceArns</code> parameter, then any missing context values are instead
117
+ * included under the <code>EvaluationResults</code> section. To discover the context keys
118
+ * used by a set of policies, you can call <a>GetContextKeysForCustomPolicy</a> or
119
+ * <a>GetContextKeysForPrincipalPolicy</a>.</p>
120
+ * @public
121
+ */
122
+ MissingContextValues?: string[] | undefined;
123
+ /**
124
+ * <p>Additional details about the results of the evaluation decision on a single resource.
125
+ * This parameter is returned only for cross-account simulations. This parameter explains how
126
+ * each policy type contributes to the resource-specific evaluation decision.</p>
127
+ * @public
128
+ */
129
+ EvalDecisionDetails?: Record<string, PolicyEvaluationDecisionType> | undefined;
130
+ /**
131
+ * <p>Contains information about the effect that a permissions boundary has on a policy
132
+ * simulation when that boundary is applied to an IAM entity.</p>
133
+ * @public
134
+ */
135
+ PermissionsBoundaryDecisionDetail?: PermissionsBoundaryDecisionDetail | undefined;
136
+ }
137
+ /**
138
+ * <p>Contains the results of a simulation.</p>
139
+ * <p>This data type is used by the return parameter of <code>
140
+ * <a>SimulateCustomPolicy</a>
141
+ * </code> and <code>
142
+ * <a>SimulatePrincipalPolicy</a>
143
+ * </code>.</p>
144
+ * @public
145
+ */
146
+ export interface EvaluationResult {
147
+ /**
148
+ * <p>The name of the API operation tested on the indicated resource.</p>
149
+ * @public
150
+ */
151
+ EvalActionName: string | undefined;
152
+ /**
153
+ * <p>The ARN of the resource that the indicated API operation was tested on.</p>
154
+ * @public
155
+ */
156
+ EvalResourceName?: string | undefined;
157
+ /**
158
+ * <p>The result of the simulation.</p>
159
+ * @public
160
+ */
161
+ EvalDecision: PolicyEvaluationDecisionType | undefined;
162
+ /**
163
+ * <p>A list of the statements in the input policies that determine the result for this
164
+ * scenario. Remember that even if multiple statements allow the operation on the resource, if
165
+ * only one statement denies that operation, then the explicit deny overrides any allow. In
166
+ * addition, the deny statement is the only entry included in the result.</p>
167
+ * @public
168
+ */
169
+ MatchedStatements?: Statement[] | undefined;
170
+ /**
171
+ * <p>A list of context keys that are required by the included input policies but that were
172
+ * not provided by one of the input parameters. This list is used when the resource in a
173
+ * simulation is "*", either explicitly, or when the <code>ResourceArns</code> parameter
174
+ * blank. If you include a list of resources, then any missing context values are instead
175
+ * included under the <code>ResourceSpecificResults</code> section. To discover the context
176
+ * keys used by a set of policies, you can call <a>GetContextKeysForCustomPolicy</a> or <a>GetContextKeysForPrincipalPolicy</a>.</p>
177
+ * @public
178
+ */
179
+ MissingContextValues?: string[] | undefined;
180
+ /**
181
+ * <p>A structure that details how Organizations and its service control policies affect the results of
182
+ * the simulation. Only applies if the simulated user's account is part of an
183
+ * organization.</p>
184
+ * @public
185
+ */
186
+ OrganizationsDecisionDetail?: OrganizationsDecisionDetail | undefined;
187
+ /**
188
+ * <p>Contains information about the effect that a permissions boundary has on a policy
189
+ * simulation when the boundary is applied to an IAM entity.</p>
190
+ * @public
191
+ */
192
+ PermissionsBoundaryDecisionDetail?: PermissionsBoundaryDecisionDetail | undefined;
193
+ /**
194
+ * <p>Additional details about the results of the cross-account evaluation decision. This
195
+ * parameter is populated for only cross-account simulations. It contains a brief summary of
196
+ * how each policy type contributes to the final evaluation decision.</p>
197
+ * <p>If the simulation evaluates policies within the same account and includes a resource
198
+ * ARN, then the parameter is present but the response is empty. If the simulation evaluates
199
+ * policies within the same account and specifies all resources (<code>*</code>), then the
200
+ * parameter is not returned.</p>
201
+ * <p>When you make a cross-account request, Amazon Web Services evaluates the request in the trusting
202
+ * account and the trusted account. The request is allowed only if both evaluations return
203
+ * <code>true</code>. For more information about how policies are evaluated, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics">Evaluating policies within a single account</a>.</p>
204
+ * <p>If an Organizations SCP included in the evaluation denies access, the simulation ends. In
205
+ * this case, policy evaluation does not proceed any further and this parameter is not
206
+ * returned.</p>
207
+ * @public
208
+ */
209
+ EvalDecisionDetails?: Record<string, PolicyEvaluationDecisionType> | undefined;
210
+ /**
211
+ * <p>The individual results of the simulation of the API operation specified in
212
+ * EvalActionName on each resource.</p>
213
+ * @public
214
+ */
215
+ ResourceSpecificResults?: ResourceSpecificResult[] | undefined;
216
+ }
217
+ /**
218
+ * <p>Contains the response to a successful <a>SimulatePrincipalPolicy</a> or
219
+ * <a>SimulateCustomPolicy</a> request.</p>
220
+ * @public
221
+ */
222
+ export interface SimulatePolicyResponse {
223
+ /**
224
+ * <p>The results of the simulation.</p>
225
+ * @public
226
+ */
227
+ EvaluationResults?: EvaluationResult[] | undefined;
228
+ /**
229
+ * <p>A flag that indicates whether there are more items to return. If your
230
+ * results were truncated, you can make a subsequent pagination request using the <code>Marker</code>
231
+ * request parameter to retrieve more items. Note that IAM might return fewer than the
232
+ * <code>MaxItems</code> number of results even when there are more results available. We recommend
233
+ * that you check <code>IsTruncated</code> after every call to ensure that you receive all your
234
+ * results.</p>
235
+ * @public
236
+ */
237
+ IsTruncated?: boolean | undefined;
238
+ /**
239
+ * <p>When <code>IsTruncated</code> is <code>true</code>, this element
240
+ * is present and contains the value to use for the <code>Marker</code> parameter in a subsequent
241
+ * pagination request.</p>
242
+ * @public
243
+ */
244
+ Marker?: string | undefined;
245
+ }
246
+ /**
247
+ * @public
248
+ */
249
+ export interface SimulatePrincipalPolicyRequest {
250
+ /**
251
+ * <p>The Amazon Resource Name (ARN) of a user, group, or role whose policies you want to
252
+ * include in the simulation. If you specify a user, group, or role, the simulation
253
+ * includes all policies that are associated with that entity. If you specify a user, the
254
+ * simulation also includes all policies that are attached to any groups the user belongs
255
+ * to.</p>
256
+ * <p>The maximum length of the policy document that you can pass in this operation,
257
+ * including whitespace, is listed below. To view the maximum character counts of a managed policy with no whitespaces, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length">IAM and STS character quotas</a>.</p>
258
+ * <p>For more information about ARNs, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon Resource Names (ARNs)</a> in the <i>Amazon Web Services General Reference</i>.</p>
259
+ * @public
260
+ */
261
+ PolicySourceArn: string | undefined;
262
+ /**
263
+ * <p>An optional list of additional policy documents to include in the simulation. Each
264
+ * document is specified as a string containing the complete, valid JSON text of an IAM
265
+ * policy.</p>
266
+ * <p>The <a href="http://wikipedia.org/wiki/regex">regex pattern</a>
267
+ * used to validate this parameter is a string of characters consisting of the following:</p>
268
+ * <ul>
269
+ * <li>
270
+ * <p>Any printable ASCII
271
+ * character ranging from the space character (<code>\u0020</code>) through the end of the ASCII character range</p>
272
+ * </li>
273
+ * <li>
274
+ * <p>The printable characters in the Basic Latin and Latin-1 Supplement character set
275
+ * (through <code>\u00FF</code>)</p>
276
+ * </li>
277
+ * <li>
278
+ * <p>The special characters tab (<code>\u0009</code>), line feed (<code>\u000A</code>), and
279
+ * carriage return (<code>\u000D</code>)</p>
280
+ * </li>
281
+ * </ul>
282
+ * @public
283
+ */
284
+ PolicyInputList?: string[] | undefined;
285
+ /**
286
+ * <p>The IAM permissions boundary policy to simulate. The permissions boundary sets the
287
+ * maximum permissions that the entity can have. You can input only one permissions
288
+ * boundary when you pass a policy to this operation. An IAM entity can only have one
289
+ * permissions boundary in effect at a time. For example, if a permissions boundary is
290
+ * attached to an entity and you pass in a different permissions boundary policy using this
291
+ * parameter, then the new permissions boundary policy is used for the simulation. For more
292
+ * information about permissions boundaries, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html">Permissions boundaries for IAM
293
+ * entities</a> in the <i>IAM User Guide</i>. The policy input is
294
+ * specified as a string containing the complete, valid JSON text of a permissions boundary
295
+ * policy.</p>
296
+ * <p>The maximum length of the policy document that you can pass in this operation,
297
+ * including whitespace, is listed below. To view the maximum character counts of a managed policy with no whitespaces, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length">IAM and STS character quotas</a>.</p>
298
+ * <p>The <a href="http://wikipedia.org/wiki/regex">regex pattern</a>
299
+ * used to validate this parameter is a string of characters consisting of the following:</p>
300
+ * <ul>
301
+ * <li>
302
+ * <p>Any printable ASCII
303
+ * character ranging from the space character (<code>\u0020</code>) through the end of the ASCII character range</p>
304
+ * </li>
305
+ * <li>
306
+ * <p>The printable characters in the Basic Latin and Latin-1 Supplement character set
307
+ * (through <code>\u00FF</code>)</p>
308
+ * </li>
309
+ * <li>
310
+ * <p>The special characters tab (<code>\u0009</code>), line feed (<code>\u000A</code>), and
311
+ * carriage return (<code>\u000D</code>)</p>
312
+ * </li>
313
+ * </ul>
314
+ * @public
315
+ */
316
+ PermissionsBoundaryPolicyInputList?: string[] | undefined;
317
+ /**
318
+ * <p>A list of names of API operations to evaluate in the simulation. Each operation is
319
+ * evaluated for each resource. Each operation must include the service identifier, such as
320
+ * <code>iam:CreateUser</code>.</p>
321
+ * @public
322
+ */
323
+ ActionNames: string[] | undefined;
324
+ /**
325
+ * <p>A list of ARNs of Amazon Web Services resources to include in the simulation. If this parameter is
326
+ * not provided, then the value defaults to <code>*</code> (all resources). Each API in the
327
+ * <code>ActionNames</code> parameter is evaluated for each resource in this list. The
328
+ * simulation determines the access result (allowed or denied) of each combination and
329
+ * reports it in the response. You can simulate resources that don't exist in your
330
+ * account.</p>
331
+ * <p>The simulation does not automatically retrieve policies for the specified resources.
332
+ * If you want to include a resource policy in the simulation, then you must include the
333
+ * policy as a string in the <code>ResourcePolicy</code> parameter.</p>
334
+ * <p>For more information about ARNs, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon Resource Names (ARNs)</a> in the <i>Amazon Web Services General Reference</i>.</p>
335
+ * <note>
336
+ * <p>Simulation of resource-based policies isn't supported for IAM roles.</p>
337
+ * </note>
338
+ * @public
339
+ */
340
+ ResourceArns?: string[] | undefined;
341
+ /**
342
+ * <p>A resource-based policy to include in the simulation provided as a string. Each
343
+ * resource in the simulation is treated as if it had this policy attached. You can include
344
+ * only one resource-based policy in a simulation.</p>
345
+ * <p>The maximum length of the policy document that you can pass in this operation,
346
+ * including whitespace, is listed below. To view the maximum character counts of a managed policy with no whitespaces, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entity-length">IAM and STS character quotas</a>.</p>
347
+ * <p>The <a href="http://wikipedia.org/wiki/regex">regex pattern</a>
348
+ * used to validate this parameter is a string of characters consisting of the following:</p>
349
+ * <ul>
350
+ * <li>
351
+ * <p>Any printable ASCII
352
+ * character ranging from the space character (<code>\u0020</code>) through the end of the ASCII character range</p>
353
+ * </li>
354
+ * <li>
355
+ * <p>The printable characters in the Basic Latin and Latin-1 Supplement character set
356
+ * (through <code>\u00FF</code>)</p>
357
+ * </li>
358
+ * <li>
359
+ * <p>The special characters tab (<code>\u0009</code>), line feed (<code>\u000A</code>), and
360
+ * carriage return (<code>\u000D</code>)</p>
361
+ * </li>
362
+ * </ul>
363
+ * <note>
364
+ * <p>Simulation of resource-based policies isn't supported for IAM roles.</p>
365
+ * </note>
366
+ * @public
367
+ */
368
+ ResourcePolicy?: string | undefined;
369
+ /**
370
+ * <p>An Amazon Web Services account ID that specifies the owner of any simulated resource that does not
371
+ * identify its owner in the resource ARN. Examples of resource ARNs include an S3 bucket
372
+ * or object. If <code>ResourceOwner</code> is specified, it is also used as the account
373
+ * owner of any <code>ResourcePolicy</code> included in the simulation. If the
374
+ * <code>ResourceOwner</code> parameter is not specified, then the owner of the
375
+ * resources and the resource policy defaults to the account of the identity provided in
376
+ * <code>CallerArn</code>. This parameter is required only if you specify a
377
+ * resource-based policy and account that owns the resource is different from the account
378
+ * that owns the simulated calling user <code>CallerArn</code>.</p>
379
+ * @public
380
+ */
381
+ ResourceOwner?: string | undefined;
382
+ /**
383
+ * <p>The ARN of the IAM user that you want to specify as the simulated caller of the API
384
+ * operations. If you do not specify a <code>CallerArn</code>, it defaults to the ARN of
385
+ * the user that you specify in <code>PolicySourceArn</code>, if you specified a user. If
386
+ * you include both a <code>PolicySourceArn</code> (for example,
387
+ * <code>arn:aws:iam::123456789012:user/David</code>) and a <code>CallerArn</code> (for
388
+ * example, <code>arn:aws:iam::123456789012:user/Bob</code>), the result is that you
389
+ * simulate calling the API operations as Bob, as if Bob had David's policies.</p>
390
+ * <p>You can specify only the ARN of an IAM user. You cannot specify the ARN of an
391
+ * assumed role, federated user, or a service principal.</p>
392
+ * <p>
393
+ * <code>CallerArn</code> is required if you include a <code>ResourcePolicy</code> and
394
+ * the <code>PolicySourceArn</code> is not the ARN for an IAM user. This is required so
395
+ * that the resource-based policy's <code>Principal</code> element has a value to use in
396
+ * evaluating the policy.</p>
397
+ * <p>For more information about ARNs, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">Amazon Resource Names (ARNs)</a> in the <i>Amazon Web Services General Reference</i>.</p>
398
+ * @public
399
+ */
400
+ CallerArn?: string | undefined;
401
+ /**
402
+ * <p>A list of context keys and corresponding values for the simulation to use. Whenever a
403
+ * context key is evaluated in one of the simulated IAM permissions policies, the
404
+ * corresponding value is supplied.</p>
405
+ * @public
406
+ */
407
+ ContextEntries?: ContextEntry[] | undefined;
408
+ /**
409
+ * <p>Specifies the type of simulation to run. Different API operations that support
410
+ * resource-based policies require different combinations of resources. By specifying the
411
+ * type of simulation to run, you enable the policy simulator to enforce the presence of
412
+ * the required resources to ensure reliable simulation results. If your simulation does
413
+ * not match one of the following scenarios, then you can omit this parameter. The
414
+ * following list shows each of the supported scenario values and the resources that you
415
+ * must define to run the simulation.</p>
416
+ * <p>Each of the Amazon EC2 scenarios requires that you specify instance, image, and security
417
+ * group resources. If your scenario includes an EBS volume, then you must specify that
418
+ * volume as a resource. If the Amazon EC2 scenario includes VPC, then you must supply the
419
+ * network interface resource. If it includes an IP subnet, then you must specify the
420
+ * subnet resource. For more information on the Amazon EC2 scenario options, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html">Supported platforms</a> in the <i>Amazon EC2 User Guide</i>.</p>
421
+ * <ul>
422
+ * <li>
423
+ * <p>
424
+ * <b>EC2-VPC-InstanceStore</b>
425
+ * </p>
426
+ * <p>instance, image, security group, network interface</p>
427
+ * </li>
428
+ * <li>
429
+ * <p>
430
+ * <b>EC2-VPC-InstanceStore-Subnet</b>
431
+ * </p>
432
+ * <p>instance, image, security group, network interface, subnet</p>
433
+ * </li>
434
+ * <li>
435
+ * <p>
436
+ * <b>EC2-VPC-EBS</b>
437
+ * </p>
438
+ * <p>instance, image, security group, network interface, volume</p>
439
+ * </li>
440
+ * <li>
441
+ * <p>
442
+ * <b>EC2-VPC-EBS-Subnet</b>
443
+ * </p>
444
+ * <p>instance, image, security group, network interface, subnet, volume</p>
445
+ * </li>
446
+ * </ul>
447
+ * @public
448
+ */
449
+ ResourceHandlingOption?: string | undefined;
450
+ /**
451
+ * <p>Use this only when paginating results to indicate the
452
+ * maximum number of items you want in the response. If additional items exist beyond the maximum
453
+ * you specify, the <code>IsTruncated</code> response element is <code>true</code>.</p>
454
+ * <p>If you do not include this parameter, the number of items defaults to 100. Note that
455
+ * IAM might return fewer results, even when there are more results available. In that case, the
456
+ * <code>IsTruncated</code> response element returns <code>true</code>, and <code>Marker</code>
457
+ * contains a value to include in the subsequent call that tells the service where to continue
458
+ * from.</p>
459
+ * @public
460
+ */
461
+ MaxItems?: number | undefined;
462
+ /**
463
+ * <p>Use this parameter only when paginating results and only after
464
+ * you receive a response indicating that the results are truncated. Set it to the value of the
465
+ * <code>Marker</code> element in the response that you received to indicate where the next call
466
+ * should start.</p>
467
+ * @public
468
+ */
469
+ Marker?: string | undefined;
470
+ }
471
+ /**
472
+ * @public
473
+ */
474
+ export interface TagInstanceProfileRequest {
475
+ /**
476
+ * <p>The name of the IAM instance profile to which you want to add tags.</p>
477
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
478
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
479
+ * @public
480
+ */
481
+ InstanceProfileName: string | undefined;
482
+ /**
483
+ * <p>The list of tags that you want to attach to the IAM instance profile.
484
+ * Each tag consists of a key name and an associated value.</p>
485
+ * @public
486
+ */
487
+ Tags: Tag[] | undefined;
488
+ }
489
+ /**
490
+ * @public
491
+ */
492
+ export interface TagMFADeviceRequest {
493
+ /**
494
+ * <p>The unique identifier for the IAM virtual MFA device to which you want to add tags.
495
+ * For virtual MFA devices, the serial number is the same as the ARN.</p>
496
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
497
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
498
+ * @public
499
+ */
500
+ SerialNumber: string | undefined;
501
+ /**
502
+ * <p>The list of tags that you want to attach to the IAM virtual MFA device.
503
+ * Each tag consists of a key name and an associated value.</p>
504
+ * @public
505
+ */
506
+ Tags: Tag[] | undefined;
507
+ }
508
+ /**
509
+ * @public
510
+ */
511
+ export interface TagOpenIDConnectProviderRequest {
512
+ /**
513
+ * <p>The ARN of the OIDC identity provider in IAM to which you want to add tags.</p>
514
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
515
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
516
+ * @public
517
+ */
518
+ OpenIDConnectProviderArn: string | undefined;
519
+ /**
520
+ * <p>The list of tags that you want to attach to the OIDC identity provider in IAM.
521
+ * Each tag consists of a key name and an associated value.</p>
522
+ * @public
523
+ */
524
+ Tags: Tag[] | undefined;
525
+ }
526
+ /**
527
+ * @public
528
+ */
529
+ export interface TagPolicyRequest {
530
+ /**
531
+ * <p>The ARN of the IAM customer managed policy to which you want to add tags.</p>
532
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
533
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
534
+ * @public
535
+ */
536
+ PolicyArn: string | undefined;
537
+ /**
538
+ * <p>The list of tags that you want to attach to the IAM customer managed policy.
539
+ * Each tag consists of a key name and an associated value.</p>
540
+ * @public
541
+ */
542
+ Tags: Tag[] | undefined;
543
+ }
544
+ /**
545
+ * @public
546
+ */
547
+ export interface TagRoleRequest {
548
+ /**
549
+ * <p>The name of the IAM role to which you want to add tags.</p>
550
+ * <p>This parameter accepts (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters that consist of upper and lowercase alphanumeric
551
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
552
+ * @public
553
+ */
554
+ RoleName: string | undefined;
555
+ /**
556
+ * <p>The list of tags that you want to attach to the IAM role. Each tag consists of a key name and an associated value.</p>
557
+ * @public
558
+ */
559
+ Tags: Tag[] | undefined;
560
+ }
561
+ /**
562
+ * @public
563
+ */
564
+ export interface TagSAMLProviderRequest {
565
+ /**
566
+ * <p>The ARN of the SAML identity provider in IAM to which you want to add tags.</p>
567
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
568
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
569
+ * @public
570
+ */
571
+ SAMLProviderArn: string | undefined;
572
+ /**
573
+ * <p>The list of tags that you want to attach to the SAML identity provider in IAM.
574
+ * Each tag consists of a key name and an associated value.</p>
575
+ * @public
576
+ */
577
+ Tags: Tag[] | undefined;
578
+ }
579
+ /**
580
+ * @public
581
+ */
582
+ export interface TagServerCertificateRequest {
583
+ /**
584
+ * <p>The name of the IAM server certificate to which you want to add tags.</p>
585
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
586
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
587
+ * @public
588
+ */
589
+ ServerCertificateName: string | undefined;
590
+ /**
591
+ * <p>The list of tags that you want to attach to the IAM server certificate.
592
+ * Each tag consists of a key name and an associated value.</p>
593
+ * @public
594
+ */
595
+ Tags: Tag[] | undefined;
596
+ }
597
+ /**
598
+ * @public
599
+ */
600
+ export interface TagUserRequest {
601
+ /**
602
+ * <p>The name of the IAM user to which you want to add tags.</p>
603
+ * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric
604
+ * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
605
+ * @public
606
+ */
607
+ UserName: string | undefined;
608
+ /**
609
+ * <p>The list of tags that you want to attach to the IAM user. Each tag consists of a key name and an associated value.</p>
610
+ * @public
611
+ */
612
+ Tags: Tag[] | undefined;
613
+ }
4
614
  /**
5
615
  * @public
6
616
  */
@@ -158,7 +768,7 @@ export interface UpdateAccessKeyRequest {
158
768
  * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
159
769
  * @public
160
770
  */
161
- UserName?: string;
771
+ UserName?: string | undefined;
162
772
  /**
163
773
  * <p>The access key ID of the secret access key you want to update.</p>
164
774
  * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters that can
@@ -184,7 +794,7 @@ export interface UpdateAccountPasswordPolicyRequest {
184
794
  * value of <code>6</code>.</p>
185
795
  * @public
186
796
  */
187
- MinimumPasswordLength?: number;
797
+ MinimumPasswordLength?: number | undefined;
188
798
  /**
189
799
  * <p>Specifies whether IAM user passwords must contain at least one of the following
190
800
  * non-alphanumeric characters:</p>
@@ -194,7 +804,7 @@ export interface UpdateAccountPasswordPolicyRequest {
194
804
  * symbol character.</p>
195
805
  * @public
196
806
  */
197
- RequireSymbols?: boolean;
807
+ RequireSymbols?: boolean | undefined;
198
808
  /**
199
809
  * <p>Specifies whether IAM user passwords must contain at least one numeric character (0
200
810
  * to 9).</p>
@@ -203,7 +813,7 @@ export interface UpdateAccountPasswordPolicyRequest {
203
813
  * numeric character.</p>
204
814
  * @public
205
815
  */
206
- RequireNumbers?: boolean;
816
+ RequireNumbers?: boolean | undefined;
207
817
  /**
208
818
  * <p>Specifies whether IAM user passwords must contain at least one uppercase character
209
819
  * from the ISO basic Latin alphabet (A to Z).</p>
@@ -212,7 +822,7 @@ export interface UpdateAccountPasswordPolicyRequest {
212
822
  * uppercase character.</p>
213
823
  * @public
214
824
  */
215
- RequireUppercaseCharacters?: boolean;
825
+ RequireUppercaseCharacters?: boolean | undefined;
216
826
  /**
217
827
  * <p>Specifies whether IAM user passwords must contain at least one lowercase character
218
828
  * from the ISO basic Latin alphabet (a to z).</p>
@@ -221,7 +831,7 @@ export interface UpdateAccountPasswordPolicyRequest {
221
831
  * lowercase character.</p>
222
832
  * @public
223
833
  */
224
- RequireLowercaseCharacters?: boolean;
834
+ RequireLowercaseCharacters?: boolean | undefined;
225
835
  /**
226
836
  * <p> Allows all IAM users in your account to use the Amazon Web Services Management Console to change their own
227
837
  * passwords. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_enable-user-change.html">Permitting
@@ -232,14 +842,14 @@ export interface UpdateAccountPasswordPolicyRequest {
232
842
  * automatically have permissions to change their own password.</p>
233
843
  * @public
234
844
  */
235
- AllowUsersToChangePassword?: boolean;
845
+ AllowUsersToChangePassword?: boolean | undefined;
236
846
  /**
237
847
  * <p>The number of days that an IAM user password is valid.</p>
238
848
  * <p>If you do not specify a value for this parameter, then the operation uses the default
239
849
  * value of <code>0</code>. The result is that IAM user passwords never expire.</p>
240
850
  * @public
241
851
  */
242
- MaxPasswordAge?: number;
852
+ MaxPasswordAge?: number | undefined;
243
853
  /**
244
854
  * <p>Specifies the number of previous passwords that IAM users are prevented from
245
855
  * reusing.</p>
@@ -248,7 +858,7 @@ export interface UpdateAccountPasswordPolicyRequest {
248
858
  * previous passwords.</p>
249
859
  * @public
250
860
  */
251
- PasswordReusePrevention?: number;
861
+ PasswordReusePrevention?: number | undefined;
252
862
  /**
253
863
  * <p> Prevents IAM users who are accessing the account via the Amazon Web Services Management Console from setting a
254
864
  * new console password after their password has expired. The IAM user cannot access the
@@ -268,7 +878,7 @@ export interface UpdateAccountPasswordPolicyRequest {
268
878
  * </note>
269
879
  * @public
270
880
  */
271
- HardExpiry?: boolean;
881
+ HardExpiry?: boolean | undefined;
272
882
  }
273
883
  /**
274
884
  * @public
@@ -326,7 +936,7 @@ export interface UpdateGroupRequest {
326
936
  * most punctuation characters, digits, and upper and lowercased letters.</p>
327
937
  * @public
328
938
  */
329
- NewPath?: string;
939
+ NewPath?: string | undefined;
330
940
  /**
331
941
  * <p>New name for the IAM group. Only include this if changing the group's name.</p>
332
942
  * <p>IAM user, group, role, and policy names must be unique within the account. Names are
@@ -334,7 +944,7 @@ export interface UpdateGroupRequest {
334
944
  * "MyResource" and "myresource".</p>
335
945
  * @public
336
946
  */
337
- NewGroupName?: string;
947
+ NewGroupName?: string | undefined;
338
948
  }
339
949
  /**
340
950
  * @public
@@ -369,13 +979,13 @@ export interface UpdateLoginProfileRequest {
369
979
  * a password policy on the Amazon Web Services account. For more information, see <a>UpdateAccountPasswordPolicy</a>.</p>
370
980
  * @public
371
981
  */
372
- Password?: string;
982
+ Password?: string | undefined;
373
983
  /**
374
984
  * <p>Allows this new password to be used only once by requiring the specified IAM user to
375
985
  * set a new password on next sign-in.</p>
376
986
  * @public
377
987
  */
378
- PasswordResetRequired?: boolean;
988
+ PasswordResetRequired?: boolean | undefined;
379
989
  }
380
990
  /**
381
991
  * @public
@@ -409,7 +1019,7 @@ export interface UpdateRoleRequest {
409
1019
  * <p>The new description that you want to apply to the specified role.</p>
410
1020
  * @public
411
1021
  */
412
- Description?: string;
1022
+ Description?: string | undefined;
413
1023
  /**
414
1024
  * <p>The maximum session duration (in seconds) that you want to set for the specified role.
415
1025
  * If you do not specify a value for this setting, the default value of one hour is
@@ -430,7 +1040,7 @@ export interface UpdateRoleRequest {
430
1040
  * </note>
431
1041
  * @public
432
1042
  */
433
- MaxSessionDuration?: number;
1043
+ MaxSessionDuration?: number | undefined;
434
1044
  }
435
1045
  /**
436
1046
  * @public
@@ -460,7 +1070,7 @@ export interface UpdateRoleDescriptionResponse {
460
1070
  * <p>A structure that contains details about the modified role.</p>
461
1071
  * @public
462
1072
  */
463
- Role?: Role;
1073
+ Role?: Role | undefined;
464
1074
  }
465
1075
  /**
466
1076
  * @public
@@ -492,7 +1102,7 @@ export interface UpdateSAMLProviderResponse {
492
1102
  * <p>The Amazon Resource Name (ARN) of the SAML provider that was updated.</p>
493
1103
  * @public
494
1104
  */
495
- SAMLProviderArn?: string;
1105
+ SAMLProviderArn?: string | undefined;
496
1106
  }
497
1107
  /**
498
1108
  * @public
@@ -514,7 +1124,7 @@ export interface UpdateServerCertificateRequest {
514
1124
  * most punctuation characters, digits, and upper and lowercased letters.</p>
515
1125
  * @public
516
1126
  */
517
- NewPath?: string;
1127
+ NewPath?: string | undefined;
518
1128
  /**
519
1129
  * <p>The new name for the server certificate. Include this only if you are updating the
520
1130
  * server certificate's name. The name of the certificate cannot contain any spaces.</p>
@@ -522,7 +1132,7 @@ export interface UpdateServerCertificateRequest {
522
1132
  * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
523
1133
  * @public
524
1134
  */
525
- NewServerCertificateName?: string;
1135
+ NewServerCertificateName?: string | undefined;
526
1136
  }
527
1137
  /**
528
1138
  * @public
@@ -536,7 +1146,7 @@ export interface UpdateServiceSpecificCredentialRequest {
536
1146
  * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
537
1147
  * @public
538
1148
  */
539
- UserName?: string;
1149
+ UserName?: string | undefined;
540
1150
  /**
541
1151
  * <p>The unique identifier of the service-specific credential.</p>
542
1152
  * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters that can
@@ -560,7 +1170,7 @@ export interface UpdateSigningCertificateRequest {
560
1170
  * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
561
1171
  * @public
562
1172
  */
563
- UserName?: string;
1173
+ UserName?: string | undefined;
564
1174
  /**
565
1175
  * <p>The ID of the signing certificate you want to update.</p>
566
1176
  * <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters that can
@@ -623,7 +1233,7 @@ export interface UpdateUserRequest {
623
1233
  * most punctuation characters, digits, and upper and lowercased letters.</p>
624
1234
  * @public
625
1235
  */
626
- NewPath?: string;
1236
+ NewPath?: string | undefined;
627
1237
  /**
628
1238
  * <p>New name for the user. Include this parameter only if you're changing the user's
629
1239
  * name.</p>
@@ -632,7 +1242,7 @@ export interface UpdateUserRequest {
632
1242
  * "MyResource" and "myresource".</p>
633
1243
  * @public
634
1244
  */
635
- NewUserName?: string;
1245
+ NewUserName?: string | undefined;
636
1246
  }
637
1247
  /**
638
1248
  * <p>The request was rejected because the public key certificate and the private key do not
@@ -680,7 +1290,7 @@ export interface UploadServerCertificateRequest {
680
1290
  * </note>
681
1291
  * @public
682
1292
  */
683
- Path?: string;
1293
+ Path?: string | undefined;
684
1294
  /**
685
1295
  * <p>The name for the server certificate. Do not include the path in this value. The name
686
1296
  * of the certificate cannot contain any spaces.</p>
@@ -752,7 +1362,7 @@ export interface UploadServerCertificateRequest {
752
1362
  * </ul>
753
1363
  * @public
754
1364
  */
755
- CertificateChain?: string;
1365
+ CertificateChain?: string | undefined;
756
1366
  /**
757
1367
  * <p>A list of tags that you want to attach to the new IAM server certificate resource.
758
1368
  * Each tag consists of a key name and an associated value. For more information about tagging, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html">Tagging IAM resources</a> in the
@@ -763,7 +1373,7 @@ export interface UploadServerCertificateRequest {
763
1373
  * </note>
764
1374
  * @public
765
1375
  */
766
- Tags?: Tag[];
1376
+ Tags?: Tag[] | undefined;
767
1377
  }
768
1378
  /**
769
1379
  * <p>Contains the response to a successful <a>UploadServerCertificate</a>
@@ -776,14 +1386,14 @@ export interface UploadServerCertificateResponse {
776
1386
  * certificate chain, and private key.</p>
777
1387
  * @public
778
1388
  */
779
- ServerCertificateMetadata?: ServerCertificateMetadata;
1389
+ ServerCertificateMetadata?: ServerCertificateMetadata | undefined;
780
1390
  /**
781
1391
  * <p>A list of tags that are attached to the new IAM server certificate. The returned list of tags is sorted by tag key.
782
1392
  * For more information about tagging, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html">Tagging IAM resources</a> in the
783
1393
  * <i>IAM User Guide</i>.</p>
784
1394
  * @public
785
1395
  */
786
- Tags?: Tag[];
1396
+ Tags?: Tag[] | undefined;
787
1397
  }
788
1398
  /**
789
1399
  * <p>The request was rejected because the same certificate is associated with an IAM user in
@@ -820,7 +1430,7 @@ export interface UploadSigningCertificateRequest {
820
1430
  * characters with no spaces. You can also include any of the following characters: _+=,.@-</p>
821
1431
  * @public
822
1432
  */
823
- UserName?: string;
1433
+ UserName?: string | undefined;
824
1434
  /**
825
1435
  * <p>The contents of the signing certificate.</p>
826
1436
  * <p>The <a href="http://wikipedia.org/wiki/regex">regex pattern</a>
@@ -925,7 +1535,7 @@ export interface UploadSSHPublicKeyResponse {
925
1535
  * <p>Contains information about the SSH public key.</p>
926
1536
  * @public
927
1537
  */
928
- SSHPublicKey?: SSHPublicKey;
1538
+ SSHPublicKey?: SSHPublicKey | undefined;
929
1539
  }
930
1540
  /**
931
1541
  * @internal