/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace IAM { namespace Model { /** */ class SimulatePrincipalPolicyRequest : public IAMRequest { public: AWS_IAM_API SimulatePrincipalPolicyRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "SimulatePrincipalPolicy"; } AWS_IAM_API Aws::String SerializePayload() const override; protected: AWS_IAM_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override; public: /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline const Aws::String& GetPolicySourceArn() const{ return m_policySourceArn; } /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline bool PolicySourceArnHasBeenSet() const { return m_policySourceArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetPolicySourceArn(const Aws::String& value) { m_policySourceArnHasBeenSet = true; m_policySourceArn = value; } /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetPolicySourceArn(Aws::String&& value) { m_policySourceArnHasBeenSet = true; m_policySourceArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetPolicySourceArn(const char* value) { m_policySourceArnHasBeenSet = true; m_policySourceArn.assign(value); } /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithPolicySourceArn(const Aws::String& value) { SetPolicySourceArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithPolicySourceArn(Aws::String&& value) { SetPolicySourceArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of a user, group, or role whose policies you * want to include in the simulation. If you specify a user, group, or role, the * simulation includes all policies that are associated with that entity. If you * specify a user, the simulation also includes all policies that are attached to * any groups the user belongs to.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

For more information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithPolicySourceArn(const char* value) { SetPolicySourceArn(value); return *this;} /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline const Aws::Vector& GetPolicyInputList() const{ return m_policyInputList; } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline bool PolicyInputListHasBeenSet() const { return m_policyInputListHasBeenSet; } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline void SetPolicyInputList(const Aws::Vector& value) { m_policyInputListHasBeenSet = true; m_policyInputList = value; } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline void SetPolicyInputList(Aws::Vector&& value) { m_policyInputListHasBeenSet = true; m_policyInputList = std::move(value); } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& WithPolicyInputList(const Aws::Vector& value) { SetPolicyInputList(value); return *this;} /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& WithPolicyInputList(Aws::Vector&& value) { SetPolicyInputList(std::move(value)); return *this;} /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPolicyInputList(const Aws::String& value) { m_policyInputListHasBeenSet = true; m_policyInputList.push_back(value); return *this; } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPolicyInputList(Aws::String&& value) { m_policyInputListHasBeenSet = true; m_policyInputList.push_back(std::move(value)); return *this; } /** *

An optional list of additional policy documents to include in the simulation. * Each document is specified as a string containing the complete, valid JSON text * of an IAM policy.

The regex * pattern used to validate this parameter is a string of characters consisting * of the following:

  • Any printable ASCII character ranging from * the space character (\u0020) through the end of the ASCII character * range

  • The printable characters in the Basic Latin and Latin-1 * Supplement character set (through \u00FF)

  • The * special characters tab (\u0009), line feed (\u000A), * and carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPolicyInputList(const char* value) { m_policyInputListHasBeenSet = true; m_policyInputList.push_back(value); return *this; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline const Aws::Vector& GetPermissionsBoundaryPolicyInputList() const{ return m_permissionsBoundaryPolicyInputList; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline bool PermissionsBoundaryPolicyInputListHasBeenSet() const { return m_permissionsBoundaryPolicyInputListHasBeenSet; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline void SetPermissionsBoundaryPolicyInputList(const Aws::Vector& value) { m_permissionsBoundaryPolicyInputListHasBeenSet = true; m_permissionsBoundaryPolicyInputList = value; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline void SetPermissionsBoundaryPolicyInputList(Aws::Vector&& value) { m_permissionsBoundaryPolicyInputListHasBeenSet = true; m_permissionsBoundaryPolicyInputList = std::move(value); } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& WithPermissionsBoundaryPolicyInputList(const Aws::Vector& value) { SetPermissionsBoundaryPolicyInputList(value); return *this;} /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& WithPermissionsBoundaryPolicyInputList(Aws::Vector&& value) { SetPermissionsBoundaryPolicyInputList(std::move(value)); return *this;} /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPermissionsBoundaryPolicyInputList(const Aws::String& value) { m_permissionsBoundaryPolicyInputListHasBeenSet = true; m_permissionsBoundaryPolicyInputList.push_back(value); return *this; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPermissionsBoundaryPolicyInputList(Aws::String&& value) { m_permissionsBoundaryPolicyInputListHasBeenSet = true; m_permissionsBoundaryPolicyInputList.push_back(std::move(value)); return *this; } /** *

The IAM permissions boundary policy to simulate. The permissions boundary * sets the maximum permissions that the entity can have. You can input only one * permissions boundary when you pass a policy to this operation. An IAM entity can * only have one permissions boundary in effect at a time. For example, if a * permissions boundary is attached to an entity and you pass in a different * permissions boundary policy using this parameter, then the new permissions * boundary policy is used for the simulation. For more information about * permissions boundaries, see Permissions * boundaries for IAM entities in the IAM User Guide. The policy input * is specified as a string containing the complete, valid JSON text of a * permissions boundary policy.

The maximum length of the policy document * that you can pass in this operation, including whitespace, is listed below. To * view the maximum character counts of a managed policy with no whitespaces, see * IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

*/ inline SimulatePrincipalPolicyRequest& AddPermissionsBoundaryPolicyInputList(const char* value) { m_permissionsBoundaryPolicyInputListHasBeenSet = true; m_permissionsBoundaryPolicyInputList.push_back(value); return *this; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline const Aws::Vector& GetActionNames() const{ return m_actionNames; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline bool ActionNamesHasBeenSet() const { return m_actionNamesHasBeenSet; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline void SetActionNames(const Aws::Vector& value) { m_actionNamesHasBeenSet = true; m_actionNames = value; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline void SetActionNames(Aws::Vector&& value) { m_actionNamesHasBeenSet = true; m_actionNames = std::move(value); } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline SimulatePrincipalPolicyRequest& WithActionNames(const Aws::Vector& value) { SetActionNames(value); return *this;} /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline SimulatePrincipalPolicyRequest& WithActionNames(Aws::Vector&& value) { SetActionNames(std::move(value)); return *this;} /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline SimulatePrincipalPolicyRequest& AddActionNames(const Aws::String& value) { m_actionNamesHasBeenSet = true; m_actionNames.push_back(value); return *this; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline SimulatePrincipalPolicyRequest& AddActionNames(Aws::String&& value) { m_actionNamesHasBeenSet = true; m_actionNames.push_back(std::move(value)); return *this; } /** *

A list of names of API operations to evaluate in the simulation. Each * operation is evaluated for each resource. Each operation must include the * service identifier, such as iam:CreateUser.

*/ inline SimulatePrincipalPolicyRequest& AddActionNames(const char* value) { m_actionNamesHasBeenSet = true; m_actionNames.push_back(value); return *this; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline const Aws::Vector& GetResourceArns() const{ return m_resourceArns; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline bool ResourceArnsHasBeenSet() const { return m_resourceArnsHasBeenSet; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline void SetResourceArns(const Aws::Vector& value) { m_resourceArnsHasBeenSet = true; m_resourceArns = value; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline void SetResourceArns(Aws::Vector&& value) { m_resourceArnsHasBeenSet = true; m_resourceArns = std::move(value); } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& WithResourceArns(const Aws::Vector& value) { SetResourceArns(value); return *this;} /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& WithResourceArns(Aws::Vector&& value) { SetResourceArns(std::move(value)); return *this;} /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& AddResourceArns(const Aws::String& value) { m_resourceArnsHasBeenSet = true; m_resourceArns.push_back(value); return *this; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& AddResourceArns(Aws::String&& value) { m_resourceArnsHasBeenSet = true; m_resourceArns.push_back(std::move(value)); return *this; } /** *

A list of ARNs of Amazon Web Services resources to include in the simulation. * If this parameter is not provided, then the value defaults to * * (all resources). Each API in the ActionNames parameter is evaluated * for each resource in this list. The simulation determines the access result * (allowed or denied) of each combination and reports it in the response. You can * simulate resources that don't exist in your account.

The simulation does * not automatically retrieve policies for the specified resources. If you want to * include a resource policy in the simulation, then you must include the policy as * a string in the ResourcePolicy parameter.

For more * information about ARNs, see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

Simulation of resource-based policies isn't * supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& AddResourceArns(const char* value) { m_resourceArnsHasBeenSet = true; m_resourceArns.push_back(value); return *this; } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline const Aws::String& GetResourcePolicy() const{ return m_resourcePolicy; } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline bool ResourcePolicyHasBeenSet() const { return m_resourcePolicyHasBeenSet; } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline void SetResourcePolicy(const Aws::String& value) { m_resourcePolicyHasBeenSet = true; m_resourcePolicy = value; } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline void SetResourcePolicy(Aws::String&& value) { m_resourcePolicyHasBeenSet = true; m_resourcePolicy = std::move(value); } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline void SetResourcePolicy(const char* value) { m_resourcePolicyHasBeenSet = true; m_resourcePolicy.assign(value); } /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& WithResourcePolicy(const Aws::String& value) { SetResourcePolicy(value); return *this;} /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& WithResourcePolicy(Aws::String&& value) { SetResourcePolicy(std::move(value)); return *this;} /** *

A resource-based policy to include in the simulation provided as a string. * Each resource in the simulation is treated as if it had this policy attached. * You can include only one resource-based policy in a simulation.

The * maximum length of the policy document that you can pass in this operation, * including whitespace, is listed below. To view the maximum character counts of a * managed policy with no whitespaces, see IAM * and STS character quotas.

The regex pattern used to validate this * parameter is a string of characters consisting of the following:

  • *

    Any printable ASCII character ranging from the space character * (\u0020) through the end of the ASCII character range

  • *
  • The printable characters in the Basic Latin and Latin-1 Supplement * character set (through \u00FF)

  • The special * characters tab (\u0009), line feed (\u000A), and * carriage return (\u000D)

Simulation of * resource-based policies isn't supported for IAM roles.

*/ inline SimulatePrincipalPolicyRequest& WithResourcePolicy(const char* value) { SetResourcePolicy(value); return *this;} /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline const Aws::String& GetResourceOwner() const{ return m_resourceOwner; } /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline bool ResourceOwnerHasBeenSet() const { return m_resourceOwnerHasBeenSet; } /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline void SetResourceOwner(const Aws::String& value) { m_resourceOwnerHasBeenSet = true; m_resourceOwner = value; } /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline void SetResourceOwner(Aws::String&& value) { m_resourceOwnerHasBeenSet = true; m_resourceOwner = std::move(value); } /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline void SetResourceOwner(const char* value) { m_resourceOwnerHasBeenSet = true; m_resourceOwner.assign(value); } /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline SimulatePrincipalPolicyRequest& WithResourceOwner(const Aws::String& value) { SetResourceOwner(value); return *this;} /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline SimulatePrincipalPolicyRequest& WithResourceOwner(Aws::String&& value) { SetResourceOwner(std::move(value)); return *this;} /** *

An Amazon Web Services account ID that specifies the owner of any simulated * resource that does not identify its owner in the resource ARN. Examples of * resource ARNs include an S3 bucket or object. If ResourceOwner is * specified, it is also used as the account owner of any * ResourcePolicy included in the simulation. If the * ResourceOwner parameter is not specified, then the owner of the * resources and the resource policy defaults to the account of the identity * provided in CallerArn. This parameter is required only if you * specify a resource-based policy and account that owns the resource is different * from the account that owns the simulated calling user * CallerArn.

*/ inline SimulatePrincipalPolicyRequest& WithResourceOwner(const char* value) { SetResourceOwner(value); return *this;} /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline const Aws::String& GetCallerArn() const{ return m_callerArn; } /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline bool CallerArnHasBeenSet() const { return m_callerArnHasBeenSet; } /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetCallerArn(const Aws::String& value) { m_callerArnHasBeenSet = true; m_callerArn = value; } /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetCallerArn(Aws::String&& value) { m_callerArnHasBeenSet = true; m_callerArn = std::move(value); } /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline void SetCallerArn(const char* value) { m_callerArnHasBeenSet = true; m_callerArn.assign(value); } /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithCallerArn(const Aws::String& value) { SetCallerArn(value); return *this;} /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithCallerArn(Aws::String&& value) { SetCallerArn(std::move(value)); return *this;} /** *

The ARN of the IAM user that you want to specify as the simulated caller of * the API operations. If you do not specify a CallerArn, it defaults * to the ARN of the user that you specify in PolicySourceArn, if you * specified a user. If you include both a PolicySourceArn (for * example, arn:aws:iam::123456789012:user/David) and a * CallerArn (for example, * arn:aws:iam::123456789012:user/Bob), the result is that you * simulate calling the API operations as Bob, as if Bob had David's policies.

*

You can specify only the ARN of an IAM user. You cannot specify the ARN of an * assumed role, federated user, or a service principal.

* CallerArn is required if you include a ResourcePolicy * and the PolicySourceArn is not the ARN for an IAM user. This is * required so that the resource-based policy's Principal element has * a value to use in evaluating the policy.

For more information about ARNs, * see Amazon * Resource Names (ARNs) in the Amazon Web Services General * Reference.

*/ inline SimulatePrincipalPolicyRequest& WithCallerArn(const char* value) { SetCallerArn(value); return *this;} /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline const Aws::Vector& GetContextEntries() const{ return m_contextEntries; } /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline bool ContextEntriesHasBeenSet() const { return m_contextEntriesHasBeenSet; } /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline void SetContextEntries(const Aws::Vector& value) { m_contextEntriesHasBeenSet = true; m_contextEntries = value; } /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline void SetContextEntries(Aws::Vector&& value) { m_contextEntriesHasBeenSet = true; m_contextEntries = std::move(value); } /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline SimulatePrincipalPolicyRequest& WithContextEntries(const Aws::Vector& value) { SetContextEntries(value); return *this;} /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline SimulatePrincipalPolicyRequest& WithContextEntries(Aws::Vector&& value) { SetContextEntries(std::move(value)); return *this;} /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline SimulatePrincipalPolicyRequest& AddContextEntries(const ContextEntry& value) { m_contextEntriesHasBeenSet = true; m_contextEntries.push_back(value); return *this; } /** *

A list of context keys and corresponding values for the simulation to use. * Whenever a context key is evaluated in one of the simulated IAM permissions * policies, the corresponding value is supplied.

*/ inline SimulatePrincipalPolicyRequest& AddContextEntries(ContextEntry&& value) { m_contextEntriesHasBeenSet = true; m_contextEntries.push_back(std::move(value)); return *this; } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline const Aws::String& GetResourceHandlingOption() const{ return m_resourceHandlingOption; } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline bool ResourceHandlingOptionHasBeenSet() const { return m_resourceHandlingOptionHasBeenSet; } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline void SetResourceHandlingOption(const Aws::String& value) { m_resourceHandlingOptionHasBeenSet = true; m_resourceHandlingOption = value; } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline void SetResourceHandlingOption(Aws::String&& value) { m_resourceHandlingOptionHasBeenSet = true; m_resourceHandlingOption = std::move(value); } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline void SetResourceHandlingOption(const char* value) { m_resourceHandlingOptionHasBeenSet = true; m_resourceHandlingOption.assign(value); } /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline SimulatePrincipalPolicyRequest& WithResourceHandlingOption(const Aws::String& value) { SetResourceHandlingOption(value); return *this;} /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline SimulatePrincipalPolicyRequest& WithResourceHandlingOption(Aws::String&& value) { SetResourceHandlingOption(std::move(value)); return *this;} /** *

Specifies the type of simulation to run. Different API operations that * support resource-based policies require different combinations of resources. By * specifying the type of simulation to run, you enable the policy simulator to * enforce the presence of the required resources to ensure reliable simulation * results. If your simulation does not match one of the following scenarios, then * you can omit this parameter. The following list shows each of the supported * scenario values and the resources that you must define to run the * simulation.

Each of the EC2 scenarios requires that you specify instance, * image, and security group resources. If your scenario includes an EBS volume, * then you must specify that volume as a resource. If the EC2 scenario includes * VPC, then you must supply the network interface resource. If it includes an IP * subnet, then you must specify the subnet resource. For more information on the * EC2 scenario options, see Supported * platforms in the Amazon EC2 User Guide.

  • * EC2-VPC-InstanceStore

    instance, image, security group, network * interface

  • EC2-VPC-InstanceStore-Subnet

    *

    instance, image, security group, network interface, subnet

  • * EC2-VPC-EBS

    instance, image, security group, network interface, * volume

  • EC2-VPC-EBS-Subnet

    instance, image, * security group, network interface, subnet, volume

*/ inline SimulatePrincipalPolicyRequest& WithResourceHandlingOption(const char* value) { SetResourceHandlingOption(value); return *this;} /** *

Use this only when paginating results to indicate the maximum number of items * you want in the response. If additional items exist beyond the maximum you * specify, the IsTruncated response element is true.

*

If you do not include this parameter, the number of items defaults to 100. * Note that IAM might return fewer results, even when there are more results * available. In that case, the IsTruncated response element returns * true, and Marker contains a value to include in the * subsequent call that tells the service where to continue from.

*/ inline int GetMaxItems() const{ return m_maxItems; } /** *

Use this only when paginating results to indicate the maximum number of items * you want in the response. If additional items exist beyond the maximum you * specify, the IsTruncated response element is true.

*

If you do not include this parameter, the number of items defaults to 100. * Note that IAM might return fewer results, even when there are more results * available. In that case, the IsTruncated response element returns * true, and Marker contains a value to include in the * subsequent call that tells the service where to continue from.

*/ inline bool MaxItemsHasBeenSet() const { return m_maxItemsHasBeenSet; } /** *

Use this only when paginating results to indicate the maximum number of items * you want in the response. If additional items exist beyond the maximum you * specify, the IsTruncated response element is true.

*

If you do not include this parameter, the number of items defaults to 100. * Note that IAM might return fewer results, even when there are more results * available. In that case, the IsTruncated response element returns * true, and Marker contains a value to include in the * subsequent call that tells the service where to continue from.

*/ inline void SetMaxItems(int value) { m_maxItemsHasBeenSet = true; m_maxItems = value; } /** *

Use this only when paginating results to indicate the maximum number of items * you want in the response. If additional items exist beyond the maximum you * specify, the IsTruncated response element is true.

*

If you do not include this parameter, the number of items defaults to 100. * Note that IAM might return fewer results, even when there are more results * available. In that case, the IsTruncated response element returns * true, and Marker contains a value to include in the * subsequent call that tells the service where to continue from.

*/ inline SimulatePrincipalPolicyRequest& WithMaxItems(int value) { SetMaxItems(value); return *this;} /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline const Aws::String& GetMarker() const{ return m_marker; } /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline bool MarkerHasBeenSet() const { return m_markerHasBeenSet; } /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline void SetMarker(const Aws::String& value) { m_markerHasBeenSet = true; m_marker = value; } /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline void SetMarker(Aws::String&& value) { m_markerHasBeenSet = true; m_marker = std::move(value); } /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline void SetMarker(const char* value) { m_markerHasBeenSet = true; m_marker.assign(value); } /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline SimulatePrincipalPolicyRequest& WithMarker(const Aws::String& value) { SetMarker(value); return *this;} /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline SimulatePrincipalPolicyRequest& WithMarker(Aws::String&& value) { SetMarker(std::move(value)); return *this;} /** *

Use this parameter only when paginating results and only after you receive a * response indicating that the results are truncated. Set it to the value of the * Marker element in the response that you received to indicate where * the next call should start.

*/ inline SimulatePrincipalPolicyRequest& WithMarker(const char* value) { SetMarker(value); return *this;} private: Aws::String m_policySourceArn; bool m_policySourceArnHasBeenSet = false; Aws::Vector m_policyInputList; bool m_policyInputListHasBeenSet = false; Aws::Vector m_permissionsBoundaryPolicyInputList; bool m_permissionsBoundaryPolicyInputListHasBeenSet = false; Aws::Vector m_actionNames; bool m_actionNamesHasBeenSet = false; Aws::Vector m_resourceArns; bool m_resourceArnsHasBeenSet = false; Aws::String m_resourcePolicy; bool m_resourcePolicyHasBeenSet = false; Aws::String m_resourceOwner; bool m_resourceOwnerHasBeenSet = false; Aws::String m_callerArn; bool m_callerArnHasBeenSet = false; Aws::Vector m_contextEntries; bool m_contextEntriesHasBeenSet = false; Aws::String m_resourceHandlingOption; bool m_resourceHandlingOptionHasBeenSet = false; int m_maxItems; bool m_maxItemsHasBeenSet = false; Aws::String m_marker; bool m_markerHasBeenSet = false; }; } // namespace Model } // namespace IAM } // namespace Aws