/** * 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 #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace Organizations { namespace Model { /** *

Contains information that must be exchanged to securely establish a * relationship between two accounts (an originator and a recipient). * For example, when a management account (the originator) invites another account * (the recipient) to join its organization, the two accounts exchange information * as a series of handshake requests and responses.

Note: Handshakes * that are CANCELED, ACCEPTED, DECLINED, or * EXPIRED show up in lists for only 30 days after entering that state * After that they are deleted.

See Also:

AWS * API Reference

*/ class Handshake { public: AWS_ORGANIZATIONS_API Handshake(); AWS_ORGANIZATIONS_API Handshake(Aws::Utils::Json::JsonView jsonValue); AWS_ORGANIZATIONS_API Handshake& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ORGANIZATIONS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline const Aws::String& GetId() const{ return m_id; } /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline bool IdHasBeenSet() const { return m_idHasBeenSet; } /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; } /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); } /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); } /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline Handshake& WithId(const Aws::String& value) { SetId(value); return *this;} /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline Handshake& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;} /** *

The unique identifier (ID) of a handshake. The originating account creates * the ID when it initiates the handshake.

The regex pattern for handshake ID string * requires "h-" followed by from 8 to 32 lowercase letters or digits.

*/ inline Handshake& WithId(const char* value) { SetId(value); return *this;} /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline const Aws::String& GetArn() const{ return m_arn; } /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; } /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); } /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); } /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline Handshake& WithArn(const Aws::String& value) { SetArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline Handshake& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of a handshake.

For more information * about ARNs in Organizations, see ARN * Formats Supported by Organizations in the Amazon Web Services Service * Authorization Reference.

*/ inline Handshake& WithArn(const char* value) { SetArn(value); return *this;} /** *

Information about the two accounts that are participating in the * handshake.

*/ inline const Aws::Vector& GetParties() const{ return m_parties; } /** *

Information about the two accounts that are participating in the * handshake.

*/ inline bool PartiesHasBeenSet() const { return m_partiesHasBeenSet; } /** *

Information about the two accounts that are participating in the * handshake.

*/ inline void SetParties(const Aws::Vector& value) { m_partiesHasBeenSet = true; m_parties = value; } /** *

Information about the two accounts that are participating in the * handshake.

*/ inline void SetParties(Aws::Vector&& value) { m_partiesHasBeenSet = true; m_parties = std::move(value); } /** *

Information about the two accounts that are participating in the * handshake.

*/ inline Handshake& WithParties(const Aws::Vector& value) { SetParties(value); return *this;} /** *

Information about the two accounts that are participating in the * handshake.

*/ inline Handshake& WithParties(Aws::Vector&& value) { SetParties(std::move(value)); return *this;} /** *

Information about the two accounts that are participating in the * handshake.

*/ inline Handshake& AddParties(const HandshakeParty& value) { m_partiesHasBeenSet = true; m_parties.push_back(value); return *this; } /** *

Information about the two accounts that are participating in the * handshake.

*/ inline Handshake& AddParties(HandshakeParty&& value) { m_partiesHasBeenSet = true; m_parties.push_back(std::move(value)); return *this; } /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline const HandshakeState& GetState() const{ return m_state; } /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline bool StateHasBeenSet() const { return m_stateHasBeenSet; } /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline void SetState(const HandshakeState& value) { m_stateHasBeenSet = true; m_state = value; } /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline void SetState(HandshakeState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); } /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline Handshake& WithState(const HandshakeState& value) { SetState(value); return *this;} /** *

The current state of the handshake. Use the state to trace the flow of the * handshake through the process from its creation to its acceptance. The meaning * of each of the valid values is as follows:

  • REQUESTED: * This handshake was sent to multiple recipients (applicable to only some * handshake types) and not all recipients have responded yet. The request stays in * this state until all recipients respond.

  • OPEN: This * handshake was sent to multiple recipients (applicable to only some policy types) * and all recipients have responded, allowing the originator to complete the * handshake action.

  • CANCELED: This handshake is no * longer active because it was canceled by the originating account.

  • *

    ACCEPTED: This handshake is complete because it has been accepted by * the recipient.

  • DECLINED: This handshake is no longer * active because it was declined by the recipient account.

  • * EXPIRED: This handshake is no longer active because the originator did * not receive a response of any kind from the recipient before the expiration time * (15 days).

*/ inline Handshake& WithState(HandshakeState&& value) { SetState(std::move(value)); return *this;} /** *

The date and time that the handshake request was made.

*/ inline const Aws::Utils::DateTime& GetRequestedTimestamp() const{ return m_requestedTimestamp; } /** *

The date and time that the handshake request was made.

*/ inline bool RequestedTimestampHasBeenSet() const { return m_requestedTimestampHasBeenSet; } /** *

The date and time that the handshake request was made.

*/ inline void SetRequestedTimestamp(const Aws::Utils::DateTime& value) { m_requestedTimestampHasBeenSet = true; m_requestedTimestamp = value; } /** *

The date and time that the handshake request was made.

*/ inline void SetRequestedTimestamp(Aws::Utils::DateTime&& value) { m_requestedTimestampHasBeenSet = true; m_requestedTimestamp = std::move(value); } /** *

The date and time that the handshake request was made.

*/ inline Handshake& WithRequestedTimestamp(const Aws::Utils::DateTime& value) { SetRequestedTimestamp(value); return *this;} /** *

The date and time that the handshake request was made.

*/ inline Handshake& WithRequestedTimestamp(Aws::Utils::DateTime&& value) { SetRequestedTimestamp(std::move(value)); return *this;} /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline const Aws::Utils::DateTime& GetExpirationTimestamp() const{ return m_expirationTimestamp; } /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline bool ExpirationTimestampHasBeenSet() const { return m_expirationTimestampHasBeenSet; } /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline void SetExpirationTimestamp(const Aws::Utils::DateTime& value) { m_expirationTimestampHasBeenSet = true; m_expirationTimestamp = value; } /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline void SetExpirationTimestamp(Aws::Utils::DateTime&& value) { m_expirationTimestampHasBeenSet = true; m_expirationTimestamp = std::move(value); } /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline Handshake& WithExpirationTimestamp(const Aws::Utils::DateTime& value) { SetExpirationTimestamp(value); return *this;} /** *

The date and time that the handshake expires. If the recipient of the * handshake request fails to respond before the specified date and time, the * handshake becomes inactive and is no longer valid.

*/ inline Handshake& WithExpirationTimestamp(Aws::Utils::DateTime&& value) { SetExpirationTimestamp(std::move(value)); return *this;} /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline const ActionType& GetAction() const{ return m_action; } /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline bool ActionHasBeenSet() const { return m_actionHasBeenSet; } /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline void SetAction(const ActionType& value) { m_actionHasBeenSet = true; m_action = value; } /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline void SetAction(ActionType&& value) { m_actionHasBeenSet = true; m_action = std::move(value); } /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline Handshake& WithAction(const ActionType& value) { SetAction(value); return *this;} /** *

The type of handshake, indicating what action occurs when the recipient * accepts the handshake. The following handshake types are supported:

    *
  • INVITE: This type of handshake represents a request to join an * organization. It is always sent from the management account to only non-member * accounts.

  • ENABLE_ALL_FEATURES: This type of handshake * represents a request to enable all features in an organization. It is always * sent from the management account to only invited member accounts. Created * accounts do not receive this because those accounts were created by the * organization's management account and approval is inferred.

  • * APPROVE_ALL_FEATURES: This type of handshake is sent from the * Organizations service when all member accounts have approved the * ENABLE_ALL_FEATURES invitation. It is sent only to the management * account and signals the master that it can finalize the process to enable all * features.

*/ inline Handshake& WithAction(ActionType&& value) { SetAction(std::move(value)); return *this;} /** *

Additional information that is needed to process the handshake.

*/ inline const Aws::Vector& GetResources() const{ return m_resources; } /** *

Additional information that is needed to process the handshake.

*/ inline bool ResourcesHasBeenSet() const { return m_resourcesHasBeenSet; } /** *

Additional information that is needed to process the handshake.

*/ inline void SetResources(const Aws::Vector& value) { m_resourcesHasBeenSet = true; m_resources = value; } /** *

Additional information that is needed to process the handshake.

*/ inline void SetResources(Aws::Vector&& value) { m_resourcesHasBeenSet = true; m_resources = std::move(value); } /** *

Additional information that is needed to process the handshake.

*/ inline Handshake& WithResources(const Aws::Vector& value) { SetResources(value); return *this;} /** *

Additional information that is needed to process the handshake.

*/ inline Handshake& WithResources(Aws::Vector&& value) { SetResources(std::move(value)); return *this;} /** *

Additional information that is needed to process the handshake.

*/ inline Handshake& AddResources(const HandshakeResource& value) { m_resourcesHasBeenSet = true; m_resources.push_back(value); return *this; } /** *

Additional information that is needed to process the handshake.

*/ inline Handshake& AddResources(HandshakeResource&& value) { m_resourcesHasBeenSet = true; m_resources.push_back(std::move(value)); return *this; } private: Aws::String m_id; bool m_idHasBeenSet = false; Aws::String m_arn; bool m_arnHasBeenSet = false; Aws::Vector m_parties; bool m_partiesHasBeenSet = false; HandshakeState m_state; bool m_stateHasBeenSet = false; Aws::Utils::DateTime m_requestedTimestamp; bool m_requestedTimestampHasBeenSet = false; Aws::Utils::DateTime m_expirationTimestamp; bool m_expirationTimestampHasBeenSet = false; ActionType m_action; bool m_actionHasBeenSet = false; Aws::Vector m_resources; bool m_resourcesHasBeenSet = false; }; } // namespace Model } // namespace Organizations } // namespace Aws