/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include namespace Aws { namespace Transfer { namespace Model { /** */ class AWS_TRANSFER_API CreateUserRequest : public TransferRequest { public: CreateUserRequest(); // 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 "CreateUser"; } Aws::String SerializePayload() const override; Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline const Aws::String& GetHomeDirectory() const{ return m_homeDirectory; } /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline bool HomeDirectoryHasBeenSet() const { return m_homeDirectoryHasBeenSet; } /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline void SetHomeDirectory(const Aws::String& value) { m_homeDirectoryHasBeenSet = true; m_homeDirectory = value; } /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline void SetHomeDirectory(Aws::String&& value) { m_homeDirectoryHasBeenSet = true; m_homeDirectory = std::move(value); } /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline void SetHomeDirectory(const char* value) { m_homeDirectoryHasBeenSet = true; m_homeDirectory.assign(value); } /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline CreateUserRequest& WithHomeDirectory(const Aws::String& value) { SetHomeDirectory(value); return *this;} /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline CreateUserRequest& WithHomeDirectory(Aws::String&& value) { SetHomeDirectory(std::move(value)); return *this;} /** *

The landing directory (folder) for a user when they log in to the file * transfer protocol-enabled server using the client.

An example is * your-Amazon-S3-bucket-name>/home/username .

*/ inline CreateUserRequest& WithHomeDirectory(const char* value) { SetHomeDirectory(value); return *this;} /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline const HomeDirectoryType& GetHomeDirectoryType() const{ return m_homeDirectoryType; } /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline bool HomeDirectoryTypeHasBeenSet() const { return m_homeDirectoryTypeHasBeenSet; } /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline void SetHomeDirectoryType(const HomeDirectoryType& value) { m_homeDirectoryTypeHasBeenSet = true; m_homeDirectoryType = value; } /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline void SetHomeDirectoryType(HomeDirectoryType&& value) { m_homeDirectoryTypeHasBeenSet = true; m_homeDirectoryType = std::move(value); } /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline CreateUserRequest& WithHomeDirectoryType(const HomeDirectoryType& value) { SetHomeDirectoryType(value); return *this;} /** *

The type of landing directory (folder) you want your users' home directory to * be when they log into the file transfer protocol-enabled server. If you set it * to PATH, the user will see the absolute Amazon S3 bucket paths as * is in their file transfer protocol clients. If you set it LOGICAL, * you will need to provide mappings in the HomeDirectoryMappings for * how you want to make Amazon S3 paths visible to your users.

*/ inline CreateUserRequest& WithHomeDirectoryType(HomeDirectoryType&& value) { SetHomeDirectoryType(std::move(value)); return *this;} /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline const Aws::Vector& GetHomeDirectoryMappings() const{ return m_homeDirectoryMappings; } /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline bool HomeDirectoryMappingsHasBeenSet() const { return m_homeDirectoryMappingsHasBeenSet; } /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline void SetHomeDirectoryMappings(const Aws::Vector& value) { m_homeDirectoryMappingsHasBeenSet = true; m_homeDirectoryMappings = value; } /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline void SetHomeDirectoryMappings(Aws::Vector&& value) { m_homeDirectoryMappingsHasBeenSet = true; m_homeDirectoryMappings = std::move(value); } /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline CreateUserRequest& WithHomeDirectoryMappings(const Aws::Vector& value) { SetHomeDirectoryMappings(value); return *this;} /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline CreateUserRequest& WithHomeDirectoryMappings(Aws::Vector&& value) { SetHomeDirectoryMappings(std::move(value)); return *this;} /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline CreateUserRequest& AddHomeDirectoryMappings(const HomeDirectoryMapEntry& value) { m_homeDirectoryMappingsHasBeenSet = true; m_homeDirectoryMappings.push_back(value); return *this; } /** *

Logical directory mappings that specify what Amazon S3 paths and keys should * be visible to your user and how you want to make them visible. You will need to * specify the "Entry" and "Target" pair, where * Entry shows how the path is made visible and Target is * the actual Amazon S3 path. If you only specify a target, it will be displayed as * is. You will need to also make sure that your IAM role provides access to paths * in Target. The following is an example.

'[ * "/bucket2/documentation", { "Entry": "your-personal-report.pdf", "Target": * "/bucket3/customized-reports/${transfer:UserName}.pdf" } ]'

In * most cases, you can use this value instead of the scope-down policy to lock your * user down to the designated home directory ("chroot"). To do this, you can set * Entry to '/' and set Target to the HomeDirectory * parameter value.

If the target of a logical directory entry does * not exist in Amazon S3, the entry will be ignored. As a workaround, you can use * the Amazon S3 API to create 0 byte objects as place holders for your directory. * If using the CLI, use the s3api call instead of s3 so * you can use the put-object operation. For example, you use the following: * aws s3api put-object --bucket bucketname --key path/to/folder/. * Make sure that the end of the key name ends in a '/' for it to be considered a * folder.

*/ inline CreateUserRequest& AddHomeDirectoryMappings(HomeDirectoryMapEntry&& value) { m_homeDirectoryMappingsHasBeenSet = true; m_homeDirectoryMappings.push_back(std::move(value)); return *this; } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline const Aws::String& GetPolicy() const{ return m_policy; } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline bool PolicyHasBeenSet() const { return m_policyHasBeenSet; } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline void SetPolicy(const Aws::String& value) { m_policyHasBeenSet = true; m_policy = value; } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline void SetPolicy(Aws::String&& value) { m_policyHasBeenSet = true; m_policy = std::move(value); } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline void SetPolicy(const char* value) { m_policyHasBeenSet = true; m_policy.assign(value); } /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline CreateUserRequest& WithPolicy(const Aws::String& value) { SetPolicy(value); return *this;} /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline CreateUserRequest& WithPolicy(Aws::String&& value) { SetPolicy(std::move(value)); return *this;} /** *

A scope-down policy for your user so you can use the same IAM role across * multiple users. This policy scopes down user access to portions of their Amazon * S3 bucket. Variables that you can use inside this policy include * ${Transfer:UserName}, ${Transfer:HomeDirectory}, and * ${Transfer:HomeBucket}.

For scope-down policies, AWS * Transfer Family stores the policy as a JSON blob, instead of the Amazon Resource * Name (ARN) of the policy. You save the policy as a JSON blob and pass it in the * Policy argument.

For an example of a scope-down policy, see * Creating * a scope-down policy.

For more information, see AssumeRole * in the AWS Security Token Service API Reference.

*/ inline CreateUserRequest& WithPolicy(const char* value) { SetPolicy(value); return *this;} /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline const Aws::String& GetRole() const{ return m_role; } /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline bool RoleHasBeenSet() const { return m_roleHasBeenSet; } /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline void SetRole(const Aws::String& value) { m_roleHasBeenSet = true; m_role = value; } /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline void SetRole(Aws::String&& value) { m_roleHasBeenSet = true; m_role = std::move(value); } /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline void SetRole(const char* value) { m_roleHasBeenSet = true; m_role.assign(value); } /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline CreateUserRequest& WithRole(const Aws::String& value) { SetRole(value); return *this;} /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline CreateUserRequest& WithRole(Aws::String&& value) { SetRole(std::move(value)); return *this;} /** *

The IAM role that controls your users' access to your Amazon S3 bucket. The * policies attached to this role will determine the level of access you want to * provide your users when transferring files into and out of your Amazon S3 bucket * or buckets. The IAM role should also contain a trust relationship that allows * the file transfer protocol-enabled server to access your resources when * servicing your users' transfer requests.

*/ inline CreateUserRequest& WithRole(const char* value) { SetRole(value); return *this;} /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline const Aws::String& GetServerId() const{ return m_serverId; } /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline bool ServerIdHasBeenSet() const { return m_serverIdHasBeenSet; } /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline void SetServerId(const Aws::String& value) { m_serverIdHasBeenSet = true; m_serverId = value; } /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline void SetServerId(Aws::String&& value) { m_serverIdHasBeenSet = true; m_serverId = std::move(value); } /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline void SetServerId(const char* value) { m_serverIdHasBeenSet = true; m_serverId.assign(value); } /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline CreateUserRequest& WithServerId(const Aws::String& value) { SetServerId(value); return *this;} /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline CreateUserRequest& WithServerId(Aws::String&& value) { SetServerId(std::move(value)); return *this;} /** *

A system-assigned unique identifier for a file transfer protocol-enabled * server instance. This is the specific server that you added your user to.

*/ inline CreateUserRequest& WithServerId(const char* value) { SetServerId(value); return *this;} /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline const Aws::String& GetSshPublicKeyBody() const{ return m_sshPublicKeyBody; } /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline bool SshPublicKeyBodyHasBeenSet() const { return m_sshPublicKeyBodyHasBeenSet; } /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline void SetSshPublicKeyBody(const Aws::String& value) { m_sshPublicKeyBodyHasBeenSet = true; m_sshPublicKeyBody = value; } /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline void SetSshPublicKeyBody(Aws::String&& value) { m_sshPublicKeyBodyHasBeenSet = true; m_sshPublicKeyBody = std::move(value); } /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline void SetSshPublicKeyBody(const char* value) { m_sshPublicKeyBodyHasBeenSet = true; m_sshPublicKeyBody.assign(value); } /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline CreateUserRequest& WithSshPublicKeyBody(const Aws::String& value) { SetSshPublicKeyBody(value); return *this;} /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline CreateUserRequest& WithSshPublicKeyBody(Aws::String&& value) { SetSshPublicKeyBody(std::move(value)); return *this;} /** *

The public portion of the Secure Shell (SSH) key used to authenticate the * user to the file transfer protocol-enabled server.

*/ inline CreateUserRequest& WithSshPublicKeyBody(const char* value) { SetSshPublicKeyBody(value); return *this;} /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline CreateUserRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline CreateUserRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline CreateUserRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

Key-value pairs that can be used to group and search for users. Tags are * metadata attached to users for any purpose.

*/ inline CreateUserRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline const Aws::String& GetUserName() const{ return m_userName; } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline bool UserNameHasBeenSet() const { return m_userNameHasBeenSet; } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline void SetUserName(const Aws::String& value) { m_userNameHasBeenSet = true; m_userName = value; } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline void SetUserName(Aws::String&& value) { m_userNameHasBeenSet = true; m_userName = std::move(value); } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline void SetUserName(const char* value) { m_userNameHasBeenSet = true; m_userName.assign(value); } /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline CreateUserRequest& WithUserName(const Aws::String& value) { SetUserName(value); return *this;} /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline CreateUserRequest& WithUserName(Aws::String&& value) { SetUserName(std::move(value)); return *this;} /** *

A unique string that identifies a user and is associated with a file transfer * protocol-enabled server as specified by the ServerId. This user * name must be a minimum of 3 and a maximum of 100 characters long. The following * are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and * at sign '@'. The user name can't start with a hyphen, period, and at sign.

*/ inline CreateUserRequest& WithUserName(const char* value) { SetUserName(value); return *this;} private: Aws::String m_homeDirectory; bool m_homeDirectoryHasBeenSet; HomeDirectoryType m_homeDirectoryType; bool m_homeDirectoryTypeHasBeenSet; Aws::Vector m_homeDirectoryMappings; bool m_homeDirectoryMappingsHasBeenSet; Aws::String m_policy; bool m_policyHasBeenSet; Aws::String m_role; bool m_roleHasBeenSet; Aws::String m_serverId; bool m_serverIdHasBeenSet; Aws::String m_sshPublicKeyBody; bool m_sshPublicKeyBodyHasBeenSet; Aws::Vector m_tags; bool m_tagsHasBeenSet; Aws::String m_userName; bool m_userNameHasBeenSet; }; } // namespace Model } // namespace Transfer } // namespace Aws