1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/awstransfer/Transfer_EXPORTS.h>
8 #include <aws/awstransfer/TransferRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/awstransfer/model/ProtocolDetails.h>
11 #include <aws/awstransfer/model/EndpointDetails.h>
12 #include <aws/awstransfer/model/EndpointType.h>
13 #include <aws/awstransfer/model/IdentityProviderDetails.h>
14 #include <aws/core/utils/memory/stl/AWSVector.h>
15 #include <aws/awstransfer/model/WorkflowDetails.h>
16 #include <aws/awstransfer/model/Protocol.h>
17 #include <utility>
18 
19 namespace Aws
20 {
21 namespace Transfer
22 {
23 namespace Model
24 {
25 
26   /**
27    */
28   class AWS_TRANSFER_API UpdateServerRequest : public TransferRequest
29   {
30   public:
31     UpdateServerRequest();
32 
33     // Service request name is the Operation name which will send this request out,
34     // each operation should has unique request name, so that we can get operation's name from this request.
35     // Note: this is not true for response, multiple operations may have the same response name,
36     // so we can not get operation's name from response.
GetServiceRequestName()37     inline virtual const char* GetServiceRequestName() const override { return "UpdateServer"; }
38 
39     Aws::String SerializePayload() const override;
40 
41     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
42 
43 
44     /**
45      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
46      * (ACM) certificate. Required when <code>Protocols</code> is set to
47      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
48      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
49      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
50      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
51      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
52      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
53      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
54      * IP addresses, see <a
55      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
56      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
57      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
58      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
59      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
60      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
61      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
62      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
63      * certificate with FQDN or IP address specified and information about the
64      * issuer.</p>
65      */
GetCertificate()66     inline const Aws::String& GetCertificate() const{ return m_certificate; }
67 
68     /**
69      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
70      * (ACM) certificate. Required when <code>Protocols</code> is set to
71      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
72      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
73      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
74      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
75      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
76      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
77      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
78      * IP addresses, see <a
79      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
80      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
81      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
82      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
83      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
84      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
85      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
86      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
87      * certificate with FQDN or IP address specified and information about the
88      * issuer.</p>
89      */
CertificateHasBeenSet()90     inline bool CertificateHasBeenSet() const { return m_certificateHasBeenSet; }
91 
92     /**
93      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
94      * (ACM) certificate. Required when <code>Protocols</code> is set to
95      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
96      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
97      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
98      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
99      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
100      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
101      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
102      * IP addresses, see <a
103      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
104      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
105      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
106      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
107      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
108      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
109      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
110      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
111      * certificate with FQDN or IP address specified and information about the
112      * issuer.</p>
113      */
SetCertificate(const Aws::String & value)114     inline void SetCertificate(const Aws::String& value) { m_certificateHasBeenSet = true; m_certificate = value; }
115 
116     /**
117      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
118      * (ACM) certificate. Required when <code>Protocols</code> is set to
119      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
120      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
121      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
122      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
123      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
124      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
125      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
126      * IP addresses, see <a
127      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
128      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
129      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
130      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
131      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
132      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
133      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
134      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
135      * certificate with FQDN or IP address specified and information about the
136      * issuer.</p>
137      */
SetCertificate(Aws::String && value)138     inline void SetCertificate(Aws::String&& value) { m_certificateHasBeenSet = true; m_certificate = std::move(value); }
139 
140     /**
141      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
142      * (ACM) certificate. Required when <code>Protocols</code> is set to
143      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
144      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
145      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
146      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
147      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
148      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
149      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
150      * IP addresses, see <a
151      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
152      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
153      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
154      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
155      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
156      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
157      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
158      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
159      * certificate with FQDN or IP address specified and information about the
160      * issuer.</p>
161      */
SetCertificate(const char * value)162     inline void SetCertificate(const char* value) { m_certificateHasBeenSet = true; m_certificate.assign(value); }
163 
164     /**
165      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
166      * (ACM) certificate. Required when <code>Protocols</code> is set to
167      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
168      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
169      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
170      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
171      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
172      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
173      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
174      * IP addresses, see <a
175      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
176      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
177      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
178      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
179      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
180      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
181      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
182      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
183      * certificate with FQDN or IP address specified and information about the
184      * issuer.</p>
185      */
WithCertificate(const Aws::String & value)186     inline UpdateServerRequest& WithCertificate(const Aws::String& value) { SetCertificate(value); return *this;}
187 
188     /**
189      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
190      * (ACM) certificate. Required when <code>Protocols</code> is set to
191      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
192      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
193      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
194      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
195      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
196      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
197      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
198      * IP addresses, see <a
199      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
200      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
201      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
202      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
203      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
204      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
205      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
206      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
207      * certificate with FQDN or IP address specified and information about the
208      * issuer.</p>
209      */
WithCertificate(Aws::String && value)210     inline UpdateServerRequest& WithCertificate(Aws::String&& value) { SetCertificate(std::move(value)); return *this;}
211 
212     /**
213      * <p>The Amazon Resource Name (ARN) of the Amazon Web ServicesCertificate Manager
214      * (ACM) certificate. Required when <code>Protocols</code> is set to
215      * <code>FTPS</code>.</p> <p>To request a new public certificate, see <a
216      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html">Request
217      * a public certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
218      * Guide</i>.</p> <p>To import an existing certificate into ACM, see <a
219      * href="https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html">Importing
220      * certificates into ACM</a> in the <i> Amazon Web ServicesCertificate Manager User
221      * Guide</i>.</p> <p>To request a private certificate to use FTPS through private
222      * IP addresses, see <a
223      * href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html">Request
224      * a private certificate</a> in the <i> Amazon Web ServicesCertificate Manager User
225      * Guide</i>.</p> <p>Certificates with the following cryptographic algorithms and
226      * key sizes are supported:</p> <ul> <li> <p>2048-bit RSA (RSA_2048)</p> </li> <li>
227      * <p>4096-bit RSA (RSA_4096)</p> </li> <li> <p>Elliptic Prime Curve 256 bit
228      * (EC_prime256v1)</p> </li> <li> <p>Elliptic Prime Curve 384 bit
229      * (EC_secp384r1)</p> </li> <li> <p>Elliptic Prime Curve 521 bit (EC_secp521r1)</p>
230      * </li> </ul>  <p>The certificate must be a valid SSL/TLS X.509 version 3
231      * certificate with FQDN or IP address specified and information about the
232      * issuer.</p>
233      */
WithCertificate(const char * value)234     inline UpdateServerRequest& WithCertificate(const char* value) { SetCertificate(value); return *this;}
235 
236 
237     /**
238      * <p> The protocol settings that are configured for your server. </p> <p> Use the
239      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
240      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
241      * address of a firewall, router, or load balancer. </p>
242      */
GetProtocolDetails()243     inline const ProtocolDetails& GetProtocolDetails() const{ return m_protocolDetails; }
244 
245     /**
246      * <p> The protocol settings that are configured for your server. </p> <p> Use the
247      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
248      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
249      * address of a firewall, router, or load balancer. </p>
250      */
ProtocolDetailsHasBeenSet()251     inline bool ProtocolDetailsHasBeenSet() const { return m_protocolDetailsHasBeenSet; }
252 
253     /**
254      * <p> The protocol settings that are configured for your server. </p> <p> Use the
255      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
256      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
257      * address of a firewall, router, or load balancer. </p>
258      */
SetProtocolDetails(const ProtocolDetails & value)259     inline void SetProtocolDetails(const ProtocolDetails& value) { m_protocolDetailsHasBeenSet = true; m_protocolDetails = value; }
260 
261     /**
262      * <p> The protocol settings that are configured for your server. </p> <p> Use the
263      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
264      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
265      * address of a firewall, router, or load balancer. </p>
266      */
SetProtocolDetails(ProtocolDetails && value)267     inline void SetProtocolDetails(ProtocolDetails&& value) { m_protocolDetailsHasBeenSet = true; m_protocolDetails = std::move(value); }
268 
269     /**
270      * <p> The protocol settings that are configured for your server. </p> <p> Use the
271      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
272      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
273      * address of a firewall, router, or load balancer. </p>
274      */
WithProtocolDetails(const ProtocolDetails & value)275     inline UpdateServerRequest& WithProtocolDetails(const ProtocolDetails& value) { SetProtocolDetails(value); return *this;}
276 
277     /**
278      * <p> The protocol settings that are configured for your server. </p> <p> Use the
279      * <code>PassiveIp</code> parameter to indicate passive mode (for FTP and FTPS
280      * protocols). Enter a single dotted-quad IPv4 address, such as the external IP
281      * address of a firewall, router, or load balancer. </p>
282      */
WithProtocolDetails(ProtocolDetails && value)283     inline UpdateServerRequest& WithProtocolDetails(ProtocolDetails&& value) { SetProtocolDetails(std::move(value)); return *this;}
284 
285 
286     /**
287      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
288      * your server. When you host your endpoint within your VPC, you can make it
289      * accessible only to resources within your VPC, or you can attach Elastic IP
290      * addresses and make it accessible to clients over the internet. Your VPC's
291      * default security groups are automatically assigned to your endpoint.</p>
292      */
GetEndpointDetails()293     inline const EndpointDetails& GetEndpointDetails() const{ return m_endpointDetails; }
294 
295     /**
296      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
297      * your server. When you host your endpoint within your VPC, you can make it
298      * accessible only to resources within your VPC, or you can attach Elastic IP
299      * addresses and make it accessible to clients over the internet. Your VPC's
300      * default security groups are automatically assigned to your endpoint.</p>
301      */
EndpointDetailsHasBeenSet()302     inline bool EndpointDetailsHasBeenSet() const { return m_endpointDetailsHasBeenSet; }
303 
304     /**
305      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
306      * your server. When you host your endpoint within your VPC, you can make it
307      * accessible only to resources within your VPC, or you can attach Elastic IP
308      * addresses and make it accessible to clients over the internet. Your VPC's
309      * default security groups are automatically assigned to your endpoint.</p>
310      */
SetEndpointDetails(const EndpointDetails & value)311     inline void SetEndpointDetails(const EndpointDetails& value) { m_endpointDetailsHasBeenSet = true; m_endpointDetails = value; }
312 
313     /**
314      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
315      * your server. When you host your endpoint within your VPC, you can make it
316      * accessible only to resources within your VPC, or you can attach Elastic IP
317      * addresses and make it accessible to clients over the internet. Your VPC's
318      * default security groups are automatically assigned to your endpoint.</p>
319      */
SetEndpointDetails(EndpointDetails && value)320     inline void SetEndpointDetails(EndpointDetails&& value) { m_endpointDetailsHasBeenSet = true; m_endpointDetails = std::move(value); }
321 
322     /**
323      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
324      * your server. When you host your endpoint within your VPC, you can make it
325      * accessible only to resources within your VPC, or you can attach Elastic IP
326      * addresses and make it accessible to clients over the internet. Your VPC's
327      * default security groups are automatically assigned to your endpoint.</p>
328      */
WithEndpointDetails(const EndpointDetails & value)329     inline UpdateServerRequest& WithEndpointDetails(const EndpointDetails& value) { SetEndpointDetails(value); return *this;}
330 
331     /**
332      * <p>The virtual private cloud (VPC) endpoint settings that are configured for
333      * your server. When you host your endpoint within your VPC, you can make it
334      * accessible only to resources within your VPC, or you can attach Elastic IP
335      * addresses and make it accessible to clients over the internet. Your VPC's
336      * default security groups are automatically assigned to your endpoint.</p>
337      */
WithEndpointDetails(EndpointDetails && value)338     inline UpdateServerRequest& WithEndpointDetails(EndpointDetails&& value) { SetEndpointDetails(std::move(value)); return *this;}
339 
340 
341     /**
342      * <p>The type of endpoint that you want your server to use. You can choose to make
343      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
344      * With an endpoint that is hosted in a VPC, you can restrict access to your server
345      * and resources only within your VPC or choose to make it internet facing by
346      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
347      * 2021, you won't be able to create a server using
348      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
349      * your account hasn't already done so before May 19, 2021. If you have already
350      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
351      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
352      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
353      * information, see
354      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
355      * <p>It is recommended that you use <code>VPC</code> as the
356      * <code>EndpointType</code>. With this endpoint type, you have the option to
357      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
358      * your server's endpoint and use VPC security groups to restrict traffic by the
359      * client's public IP address. This is not possible with <code>EndpointType</code>
360      * set to <code>VPC_ENDPOINT</code>.</p>
361      */
GetEndpointType()362     inline const EndpointType& GetEndpointType() const{ return m_endpointType; }
363 
364     /**
365      * <p>The type of endpoint that you want your server to use. You can choose to make
366      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
367      * With an endpoint that is hosted in a VPC, you can restrict access to your server
368      * and resources only within your VPC or choose to make it internet facing by
369      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
370      * 2021, you won't be able to create a server using
371      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
372      * your account hasn't already done so before May 19, 2021. If you have already
373      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
374      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
375      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
376      * information, see
377      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
378      * <p>It is recommended that you use <code>VPC</code> as the
379      * <code>EndpointType</code>. With this endpoint type, you have the option to
380      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
381      * your server's endpoint and use VPC security groups to restrict traffic by the
382      * client's public IP address. This is not possible with <code>EndpointType</code>
383      * set to <code>VPC_ENDPOINT</code>.</p>
384      */
EndpointTypeHasBeenSet()385     inline bool EndpointTypeHasBeenSet() const { return m_endpointTypeHasBeenSet; }
386 
387     /**
388      * <p>The type of endpoint that you want your server to use. You can choose to make
389      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
390      * With an endpoint that is hosted in a VPC, you can restrict access to your server
391      * and resources only within your VPC or choose to make it internet facing by
392      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
393      * 2021, you won't be able to create a server using
394      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
395      * your account hasn't already done so before May 19, 2021. If you have already
396      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
397      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
398      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
399      * information, see
400      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
401      * <p>It is recommended that you use <code>VPC</code> as the
402      * <code>EndpointType</code>. With this endpoint type, you have the option to
403      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
404      * your server's endpoint and use VPC security groups to restrict traffic by the
405      * client's public IP address. This is not possible with <code>EndpointType</code>
406      * set to <code>VPC_ENDPOINT</code>.</p>
407      */
SetEndpointType(const EndpointType & value)408     inline void SetEndpointType(const EndpointType& value) { m_endpointTypeHasBeenSet = true; m_endpointType = value; }
409 
410     /**
411      * <p>The type of endpoint that you want your server to use. You can choose to make
412      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
413      * With an endpoint that is hosted in a VPC, you can restrict access to your server
414      * and resources only within your VPC or choose to make it internet facing by
415      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
416      * 2021, you won't be able to create a server using
417      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
418      * your account hasn't already done so before May 19, 2021. If you have already
419      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
420      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
421      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
422      * information, see
423      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
424      * <p>It is recommended that you use <code>VPC</code> as the
425      * <code>EndpointType</code>. With this endpoint type, you have the option to
426      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
427      * your server's endpoint and use VPC security groups to restrict traffic by the
428      * client's public IP address. This is not possible with <code>EndpointType</code>
429      * set to <code>VPC_ENDPOINT</code>.</p>
430      */
SetEndpointType(EndpointType && value)431     inline void SetEndpointType(EndpointType&& value) { m_endpointTypeHasBeenSet = true; m_endpointType = std::move(value); }
432 
433     /**
434      * <p>The type of endpoint that you want your server to use. You can choose to make
435      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
436      * With an endpoint that is hosted in a VPC, you can restrict access to your server
437      * and resources only within your VPC or choose to make it internet facing by
438      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
439      * 2021, you won't be able to create a server using
440      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
441      * your account hasn't already done so before May 19, 2021. If you have already
442      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
443      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
444      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
445      * information, see
446      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
447      * <p>It is recommended that you use <code>VPC</code> as the
448      * <code>EndpointType</code>. With this endpoint type, you have the option to
449      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
450      * your server's endpoint and use VPC security groups to restrict traffic by the
451      * client's public IP address. This is not possible with <code>EndpointType</code>
452      * set to <code>VPC_ENDPOINT</code>.</p>
453      */
WithEndpointType(const EndpointType & value)454     inline UpdateServerRequest& WithEndpointType(const EndpointType& value) { SetEndpointType(value); return *this;}
455 
456     /**
457      * <p>The type of endpoint that you want your server to use. You can choose to make
458      * your server's endpoint publicly accessible (PUBLIC) or host it inside your VPC.
459      * With an endpoint that is hosted in a VPC, you can restrict access to your server
460      * and resources only within your VPC or choose to make it internet facing by
461      * attaching Elastic IP addresses directly to it.</p>  <p> After May 19,
462      * 2021, you won't be able to create a server using
463      * <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web Servicesaccount if
464      * your account hasn't already done so before May 19, 2021. If you have already
465      * created servers with <code>EndpointType=VPC_ENDPOINT</code> in your Amazon Web
466      * Servicesaccount on or before May 19, 2021, you will not be affected. After this
467      * date, use <code>EndpointType</code>=<code>VPC</code>.</p> <p>For more
468      * information, see
469      * https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint.</p>
470      * <p>It is recommended that you use <code>VPC</code> as the
471      * <code>EndpointType</code>. With this endpoint type, you have the option to
472      * directly associate up to three Elastic IPv4 addresses (BYO IP included) with
473      * your server's endpoint and use VPC security groups to restrict traffic by the
474      * client's public IP address. This is not possible with <code>EndpointType</code>
475      * set to <code>VPC_ENDPOINT</code>.</p>
476      */
WithEndpointType(EndpointType && value)477     inline UpdateServerRequest& WithEndpointType(EndpointType&& value) { SetEndpointType(std::move(value)); return *this;}
478 
479 
480     /**
481      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
482      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
483      * existing users from an existing server to a new server, don't update the host
484      * key. Accidentally changing a server's host key can be disruptive.</p>
485      *  <p>For more information, see <a
486      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
487      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
488      * ServicesTransfer Family User Guide</i>.</p>
489      */
GetHostKey()490     inline const Aws::String& GetHostKey() const{ return m_hostKey; }
491 
492     /**
493      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
494      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
495      * existing users from an existing server to a new server, don't update the host
496      * key. Accidentally changing a server's host key can be disruptive.</p>
497      *  <p>For more information, see <a
498      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
499      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
500      * ServicesTransfer Family User Guide</i>.</p>
501      */
HostKeyHasBeenSet()502     inline bool HostKeyHasBeenSet() const { return m_hostKeyHasBeenSet; }
503 
504     /**
505      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
506      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
507      * existing users from an existing server to a new server, don't update the host
508      * key. Accidentally changing a server's host key can be disruptive.</p>
509      *  <p>For more information, see <a
510      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
511      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
512      * ServicesTransfer Family User Guide</i>.</p>
513      */
SetHostKey(const Aws::String & value)514     inline void SetHostKey(const Aws::String& value) { m_hostKeyHasBeenSet = true; m_hostKey = value; }
515 
516     /**
517      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
518      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
519      * existing users from an existing server to a new server, don't update the host
520      * key. Accidentally changing a server's host key can be disruptive.</p>
521      *  <p>For more information, see <a
522      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
523      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
524      * ServicesTransfer Family User Guide</i>.</p>
525      */
SetHostKey(Aws::String && value)526     inline void SetHostKey(Aws::String&& value) { m_hostKeyHasBeenSet = true; m_hostKey = std::move(value); }
527 
528     /**
529      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
530      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
531      * existing users from an existing server to a new server, don't update the host
532      * key. Accidentally changing a server's host key can be disruptive.</p>
533      *  <p>For more information, see <a
534      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
535      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
536      * ServicesTransfer Family User Guide</i>.</p>
537      */
SetHostKey(const char * value)538     inline void SetHostKey(const char* value) { m_hostKeyHasBeenSet = true; m_hostKey.assign(value); }
539 
540     /**
541      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
542      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
543      * existing users from an existing server to a new server, don't update the host
544      * key. Accidentally changing a server's host key can be disruptive.</p>
545      *  <p>For more information, see <a
546      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
547      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
548      * ServicesTransfer Family User Guide</i>.</p>
549      */
WithHostKey(const Aws::String & value)550     inline UpdateServerRequest& WithHostKey(const Aws::String& value) { SetHostKey(value); return *this;}
551 
552     /**
553      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
554      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
555      * existing users from an existing server to a new server, don't update the host
556      * key. Accidentally changing a server's host key can be disruptive.</p>
557      *  <p>For more information, see <a
558      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
559      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
560      * ServicesTransfer Family User Guide</i>.</p>
561      */
WithHostKey(Aws::String && value)562     inline UpdateServerRequest& WithHostKey(Aws::String&& value) { SetHostKey(std::move(value)); return *this;}
563 
564     /**
565      * <p>The RSA private key as generated by <code>ssh-keygen -N "" -m PEM -f
566      * my-new-server-key</code>.</p>  <p>If you aren't planning to migrate
567      * existing users from an existing server to a new server, don't update the host
568      * key. Accidentally changing a server's host key can be disruptive.</p>
569      *  <p>For more information, see <a
570      * href="https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html#configuring-servers-change-host-key">Change
571      * the host key for your SFTP-enabled server</a> in the <i>Amazon Web
572      * ServicesTransfer Family User Guide</i>.</p>
573      */
WithHostKey(const char * value)574     inline UpdateServerRequest& WithHostKey(const char* value) { SetHostKey(value); return *this;}
575 
576 
577     /**
578      * <p>An array containing all of the information required to call a customer's
579      * authentication API method.</p>
580      */
GetIdentityProviderDetails()581     inline const IdentityProviderDetails& GetIdentityProviderDetails() const{ return m_identityProviderDetails; }
582 
583     /**
584      * <p>An array containing all of the information required to call a customer's
585      * authentication API method.</p>
586      */
IdentityProviderDetailsHasBeenSet()587     inline bool IdentityProviderDetailsHasBeenSet() const { return m_identityProviderDetailsHasBeenSet; }
588 
589     /**
590      * <p>An array containing all of the information required to call a customer's
591      * authentication API method.</p>
592      */
SetIdentityProviderDetails(const IdentityProviderDetails & value)593     inline void SetIdentityProviderDetails(const IdentityProviderDetails& value) { m_identityProviderDetailsHasBeenSet = true; m_identityProviderDetails = value; }
594 
595     /**
596      * <p>An array containing all of the information required to call a customer's
597      * authentication API method.</p>
598      */
SetIdentityProviderDetails(IdentityProviderDetails && value)599     inline void SetIdentityProviderDetails(IdentityProviderDetails&& value) { m_identityProviderDetailsHasBeenSet = true; m_identityProviderDetails = std::move(value); }
600 
601     /**
602      * <p>An array containing all of the information required to call a customer's
603      * authentication API method.</p>
604      */
WithIdentityProviderDetails(const IdentityProviderDetails & value)605     inline UpdateServerRequest& WithIdentityProviderDetails(const IdentityProviderDetails& value) { SetIdentityProviderDetails(value); return *this;}
606 
607     /**
608      * <p>An array containing all of the information required to call a customer's
609      * authentication API method.</p>
610      */
WithIdentityProviderDetails(IdentityProviderDetails && value)611     inline UpdateServerRequest& WithIdentityProviderDetails(IdentityProviderDetails&& value) { SetIdentityProviderDetails(std::move(value)); return *this;}
612 
613 
614     /**
615      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
616      * and Access Management (IAM) role that allows a server to turn on Amazon
617      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
618      * can be viewed in your CloudWatch logs.</p>
619      */
GetLoggingRole()620     inline const Aws::String& GetLoggingRole() const{ return m_loggingRole; }
621 
622     /**
623      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
624      * and Access Management (IAM) role that allows a server to turn on Amazon
625      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
626      * can be viewed in your CloudWatch logs.</p>
627      */
LoggingRoleHasBeenSet()628     inline bool LoggingRoleHasBeenSet() const { return m_loggingRoleHasBeenSet; }
629 
630     /**
631      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
632      * and Access Management (IAM) role that allows a server to turn on Amazon
633      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
634      * can be viewed in your CloudWatch logs.</p>
635      */
SetLoggingRole(const Aws::String & value)636     inline void SetLoggingRole(const Aws::String& value) { m_loggingRoleHasBeenSet = true; m_loggingRole = value; }
637 
638     /**
639      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
640      * and Access Management (IAM) role that allows a server to turn on Amazon
641      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
642      * can be viewed in your CloudWatch logs.</p>
643      */
SetLoggingRole(Aws::String && value)644     inline void SetLoggingRole(Aws::String&& value) { m_loggingRoleHasBeenSet = true; m_loggingRole = std::move(value); }
645 
646     /**
647      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
648      * and Access Management (IAM) role that allows a server to turn on Amazon
649      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
650      * can be viewed in your CloudWatch logs.</p>
651      */
SetLoggingRole(const char * value)652     inline void SetLoggingRole(const char* value) { m_loggingRoleHasBeenSet = true; m_loggingRole.assign(value); }
653 
654     /**
655      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
656      * and Access Management (IAM) role that allows a server to turn on Amazon
657      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
658      * can be viewed in your CloudWatch logs.</p>
659      */
WithLoggingRole(const Aws::String & value)660     inline UpdateServerRequest& WithLoggingRole(const Aws::String& value) { SetLoggingRole(value); return *this;}
661 
662     /**
663      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
664      * and Access Management (IAM) role that allows a server to turn on Amazon
665      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
666      * can be viewed in your CloudWatch logs.</p>
667      */
WithLoggingRole(Aws::String && value)668     inline UpdateServerRequest& WithLoggingRole(Aws::String&& value) { SetLoggingRole(std::move(value)); return *this;}
669 
670     /**
671      * <p>Specifies the Amazon Resource Name (ARN) of the Amazon Web Services Identity
672      * and Access Management (IAM) role that allows a server to turn on Amazon
673      * CloudWatch logging for Amazon S3 or Amazon EFS events. When set, user activity
674      * can be viewed in your CloudWatch logs.</p>
675      */
WithLoggingRole(const char * value)676     inline UpdateServerRequest& WithLoggingRole(const char* value) { SetLoggingRole(value); return *this;}
677 
678 
679     /**
680      * <p>Specifies the file transfer protocol or protocols over which your file
681      * transfer protocol client can connect to your server's endpoint. The available
682      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
683      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
684      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
685      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
686      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
687      * ServicesCertificate Manager (ACM) which will be used to identify your server
688      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
689      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
690      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
691      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
692      * <code>Protocol</code> includes <code>FTP</code>, then
693      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
694      * <code>Protocol</code> is set only to <code>SFTP</code>, the
695      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
696      * <code>IdentityProviderType</code> can be set to
697      * <code>SERVICE_MANAGED</code>.</p>
698      */
GetProtocols()699     inline const Aws::Vector<Protocol>& GetProtocols() const{ return m_protocols; }
700 
701     /**
702      * <p>Specifies the file transfer protocol or protocols over which your file
703      * transfer protocol client can connect to your server's endpoint. The available
704      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
705      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
706      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
707      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
708      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
709      * ServicesCertificate Manager (ACM) which will be used to identify your server
710      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
711      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
712      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
713      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
714      * <code>Protocol</code> includes <code>FTP</code>, then
715      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
716      * <code>Protocol</code> is set only to <code>SFTP</code>, the
717      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
718      * <code>IdentityProviderType</code> can be set to
719      * <code>SERVICE_MANAGED</code>.</p>
720      */
ProtocolsHasBeenSet()721     inline bool ProtocolsHasBeenSet() const { return m_protocolsHasBeenSet; }
722 
723     /**
724      * <p>Specifies the file transfer protocol or protocols over which your file
725      * transfer protocol client can connect to your server's endpoint. The available
726      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
727      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
728      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
729      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
730      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
731      * ServicesCertificate Manager (ACM) which will be used to identify your server
732      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
733      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
734      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
735      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
736      * <code>Protocol</code> includes <code>FTP</code>, then
737      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
738      * <code>Protocol</code> is set only to <code>SFTP</code>, the
739      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
740      * <code>IdentityProviderType</code> can be set to
741      * <code>SERVICE_MANAGED</code>.</p>
742      */
SetProtocols(const Aws::Vector<Protocol> & value)743     inline void SetProtocols(const Aws::Vector<Protocol>& value) { m_protocolsHasBeenSet = true; m_protocols = value; }
744 
745     /**
746      * <p>Specifies the file transfer protocol or protocols over which your file
747      * transfer protocol client can connect to your server's endpoint. The available
748      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
749      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
750      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
751      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
752      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
753      * ServicesCertificate Manager (ACM) which will be used to identify your server
754      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
755      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
756      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
757      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
758      * <code>Protocol</code> includes <code>FTP</code>, then
759      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
760      * <code>Protocol</code> is set only to <code>SFTP</code>, the
761      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
762      * <code>IdentityProviderType</code> can be set to
763      * <code>SERVICE_MANAGED</code>.</p>
764      */
SetProtocols(Aws::Vector<Protocol> && value)765     inline void SetProtocols(Aws::Vector<Protocol>&& value) { m_protocolsHasBeenSet = true; m_protocols = std::move(value); }
766 
767     /**
768      * <p>Specifies the file transfer protocol or protocols over which your file
769      * transfer protocol client can connect to your server's endpoint. The available
770      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
771      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
772      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
773      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
774      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
775      * ServicesCertificate Manager (ACM) which will be used to identify your server
776      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
777      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
778      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
779      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
780      * <code>Protocol</code> includes <code>FTP</code>, then
781      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
782      * <code>Protocol</code> is set only to <code>SFTP</code>, the
783      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
784      * <code>IdentityProviderType</code> can be set to
785      * <code>SERVICE_MANAGED</code>.</p>
786      */
WithProtocols(const Aws::Vector<Protocol> & value)787     inline UpdateServerRequest& WithProtocols(const Aws::Vector<Protocol>& value) { SetProtocols(value); return *this;}
788 
789     /**
790      * <p>Specifies the file transfer protocol or protocols over which your file
791      * transfer protocol client can connect to your server's endpoint. The available
792      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
793      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
794      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
795      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
796      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
797      * ServicesCertificate Manager (ACM) which will be used to identify your server
798      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
799      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
800      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
801      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
802      * <code>Protocol</code> includes <code>FTP</code>, then
803      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
804      * <code>Protocol</code> is set only to <code>SFTP</code>, the
805      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
806      * <code>IdentityProviderType</code> can be set to
807      * <code>SERVICE_MANAGED</code>.</p>
808      */
WithProtocols(Aws::Vector<Protocol> && value)809     inline UpdateServerRequest& WithProtocols(Aws::Vector<Protocol>&& value) { SetProtocols(std::move(value)); return *this;}
810 
811     /**
812      * <p>Specifies the file transfer protocol or protocols over which your file
813      * transfer protocol client can connect to your server's endpoint. The available
814      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
815      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
816      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
817      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
818      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
819      * ServicesCertificate Manager (ACM) which will be used to identify your server
820      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
821      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
822      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
823      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
824      * <code>Protocol</code> includes <code>FTP</code>, then
825      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
826      * <code>Protocol</code> is set only to <code>SFTP</code>, the
827      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
828      * <code>IdentityProviderType</code> can be set to
829      * <code>SERVICE_MANAGED</code>.</p>
830      */
AddProtocols(const Protocol & value)831     inline UpdateServerRequest& AddProtocols(const Protocol& value) { m_protocolsHasBeenSet = true; m_protocols.push_back(value); return *this; }
832 
833     /**
834      * <p>Specifies the file transfer protocol or protocols over which your file
835      * transfer protocol client can connect to your server's endpoint. The available
836      * protocols are:</p> <ul> <li> <p>Secure Shell (SSH) File Transfer Protocol
837      * (SFTP): File transfer over SSH</p> </li> <li> <p>File Transfer Protocol Secure
838      * (FTPS): File transfer with TLS encryption</p> </li> <li> <p>File Transfer
839      * Protocol (FTP): Unencrypted file transfer</p> </li> </ul>  <p>If you
840      * select <code>FTPS</code>, you must choose a certificate stored in Amazon Web
841      * ServicesCertificate Manager (ACM) which will be used to identify your server
842      * when clients connect to it over FTPS.</p> <p>If <code>Protocol</code> includes
843      * either <code>FTP</code> or <code>FTPS</code>, then the <code>EndpointType</code>
844      * must be <code>VPC</code> and the <code>IdentityProviderType</code> must be
845      * <code>AWS_DIRECTORY_SERVICE</code> or <code>API_GATEWAY</code>.</p> <p>If
846      * <code>Protocol</code> includes <code>FTP</code>, then
847      * <code>AddressAllocationIds</code> cannot be associated.</p> <p>If
848      * <code>Protocol</code> is set only to <code>SFTP</code>, the
849      * <code>EndpointType</code> can be set to <code>PUBLIC</code> and the
850      * <code>IdentityProviderType</code> can be set to
851      * <code>SERVICE_MANAGED</code>.</p>
852      */
AddProtocols(Protocol && value)853     inline UpdateServerRequest& AddProtocols(Protocol&& value) { m_protocolsHasBeenSet = true; m_protocols.push_back(std::move(value)); return *this; }
854 
855 
856     /**
857      * <p>Specifies the name of the security policy that is attached to the server.</p>
858      */
GetSecurityPolicyName()859     inline const Aws::String& GetSecurityPolicyName() const{ return m_securityPolicyName; }
860 
861     /**
862      * <p>Specifies the name of the security policy that is attached to the server.</p>
863      */
SecurityPolicyNameHasBeenSet()864     inline bool SecurityPolicyNameHasBeenSet() const { return m_securityPolicyNameHasBeenSet; }
865 
866     /**
867      * <p>Specifies the name of the security policy that is attached to the server.</p>
868      */
SetSecurityPolicyName(const Aws::String & value)869     inline void SetSecurityPolicyName(const Aws::String& value) { m_securityPolicyNameHasBeenSet = true; m_securityPolicyName = value; }
870 
871     /**
872      * <p>Specifies the name of the security policy that is attached to the server.</p>
873      */
SetSecurityPolicyName(Aws::String && value)874     inline void SetSecurityPolicyName(Aws::String&& value) { m_securityPolicyNameHasBeenSet = true; m_securityPolicyName = std::move(value); }
875 
876     /**
877      * <p>Specifies the name of the security policy that is attached to the server.</p>
878      */
SetSecurityPolicyName(const char * value)879     inline void SetSecurityPolicyName(const char* value) { m_securityPolicyNameHasBeenSet = true; m_securityPolicyName.assign(value); }
880 
881     /**
882      * <p>Specifies the name of the security policy that is attached to the server.</p>
883      */
WithSecurityPolicyName(const Aws::String & value)884     inline UpdateServerRequest& WithSecurityPolicyName(const Aws::String& value) { SetSecurityPolicyName(value); return *this;}
885 
886     /**
887      * <p>Specifies the name of the security policy that is attached to the server.</p>
888      */
WithSecurityPolicyName(Aws::String && value)889     inline UpdateServerRequest& WithSecurityPolicyName(Aws::String&& value) { SetSecurityPolicyName(std::move(value)); return *this;}
890 
891     /**
892      * <p>Specifies the name of the security policy that is attached to the server.</p>
893      */
WithSecurityPolicyName(const char * value)894     inline UpdateServerRequest& WithSecurityPolicyName(const char* value) { SetSecurityPolicyName(value); return *this;}
895 
896 
897     /**
898      * <p>A system-assigned unique identifier for a server instance that the user
899      * account is assigned to.</p>
900      */
GetServerId()901     inline const Aws::String& GetServerId() const{ return m_serverId; }
902 
903     /**
904      * <p>A system-assigned unique identifier for a server instance that the user
905      * account is assigned to.</p>
906      */
ServerIdHasBeenSet()907     inline bool ServerIdHasBeenSet() const { return m_serverIdHasBeenSet; }
908 
909     /**
910      * <p>A system-assigned unique identifier for a server instance that the user
911      * account is assigned to.</p>
912      */
SetServerId(const Aws::String & value)913     inline void SetServerId(const Aws::String& value) { m_serverIdHasBeenSet = true; m_serverId = value; }
914 
915     /**
916      * <p>A system-assigned unique identifier for a server instance that the user
917      * account is assigned to.</p>
918      */
SetServerId(Aws::String && value)919     inline void SetServerId(Aws::String&& value) { m_serverIdHasBeenSet = true; m_serverId = std::move(value); }
920 
921     /**
922      * <p>A system-assigned unique identifier for a server instance that the user
923      * account is assigned to.</p>
924      */
SetServerId(const char * value)925     inline void SetServerId(const char* value) { m_serverIdHasBeenSet = true; m_serverId.assign(value); }
926 
927     /**
928      * <p>A system-assigned unique identifier for a server instance that the user
929      * account is assigned to.</p>
930      */
WithServerId(const Aws::String & value)931     inline UpdateServerRequest& WithServerId(const Aws::String& value) { SetServerId(value); return *this;}
932 
933     /**
934      * <p>A system-assigned unique identifier for a server instance that the user
935      * account is assigned to.</p>
936      */
WithServerId(Aws::String && value)937     inline UpdateServerRequest& WithServerId(Aws::String&& value) { SetServerId(std::move(value)); return *this;}
938 
939     /**
940      * <p>A system-assigned unique identifier for a server instance that the user
941      * account is assigned to.</p>
942      */
WithServerId(const char * value)943     inline UpdateServerRequest& WithServerId(const char* value) { SetServerId(value); return *this;}
944 
945 
946     /**
947      * <p>Specifies the workflow ID for the workflow to assign and the execution role
948      * used for executing the workflow.</p>
949      */
GetWorkflowDetails()950     inline const WorkflowDetails& GetWorkflowDetails() const{ return m_workflowDetails; }
951 
952     /**
953      * <p>Specifies the workflow ID for the workflow to assign and the execution role
954      * used for executing the workflow.</p>
955      */
WorkflowDetailsHasBeenSet()956     inline bool WorkflowDetailsHasBeenSet() const { return m_workflowDetailsHasBeenSet; }
957 
958     /**
959      * <p>Specifies the workflow ID for the workflow to assign and the execution role
960      * used for executing the workflow.</p>
961      */
SetWorkflowDetails(const WorkflowDetails & value)962     inline void SetWorkflowDetails(const WorkflowDetails& value) { m_workflowDetailsHasBeenSet = true; m_workflowDetails = value; }
963 
964     /**
965      * <p>Specifies the workflow ID for the workflow to assign and the execution role
966      * used for executing the workflow.</p>
967      */
SetWorkflowDetails(WorkflowDetails && value)968     inline void SetWorkflowDetails(WorkflowDetails&& value) { m_workflowDetailsHasBeenSet = true; m_workflowDetails = std::move(value); }
969 
970     /**
971      * <p>Specifies the workflow ID for the workflow to assign and the execution role
972      * used for executing the workflow.</p>
973      */
WithWorkflowDetails(const WorkflowDetails & value)974     inline UpdateServerRequest& WithWorkflowDetails(const WorkflowDetails& value) { SetWorkflowDetails(value); return *this;}
975 
976     /**
977      * <p>Specifies the workflow ID for the workflow to assign and the execution role
978      * used for executing the workflow.</p>
979      */
WithWorkflowDetails(WorkflowDetails && value)980     inline UpdateServerRequest& WithWorkflowDetails(WorkflowDetails&& value) { SetWorkflowDetails(std::move(value)); return *this;}
981 
982   private:
983 
984     Aws::String m_certificate;
985     bool m_certificateHasBeenSet;
986 
987     ProtocolDetails m_protocolDetails;
988     bool m_protocolDetailsHasBeenSet;
989 
990     EndpointDetails m_endpointDetails;
991     bool m_endpointDetailsHasBeenSet;
992 
993     EndpointType m_endpointType;
994     bool m_endpointTypeHasBeenSet;
995 
996     Aws::String m_hostKey;
997     bool m_hostKeyHasBeenSet;
998 
999     IdentityProviderDetails m_identityProviderDetails;
1000     bool m_identityProviderDetailsHasBeenSet;
1001 
1002     Aws::String m_loggingRole;
1003     bool m_loggingRoleHasBeenSet;
1004 
1005     Aws::Vector<Protocol> m_protocols;
1006     bool m_protocolsHasBeenSet;
1007 
1008     Aws::String m_securityPolicyName;
1009     bool m_securityPolicyNameHasBeenSet;
1010 
1011     Aws::String m_serverId;
1012     bool m_serverIdHasBeenSet;
1013 
1014     WorkflowDetails m_workflowDetails;
1015     bool m_workflowDetailsHasBeenSet;
1016   };
1017 
1018 } // namespace Model
1019 } // namespace Transfer
1020 } // namespace Aws
1021