:doc:`Organizations <../../organizations>` / Client / accept_handshake

****************
accept_handshake
****************



.. py:method:: Organizations.Client.accept_handshake(**kwargs)

  

  Accepts a handshake by sending an ``ACCEPTED`` response to the sender. You can view accepted handshakes in API responses for 30 days before they are deleted.

   

  **Only the management account can accept the following handshakes**:

   

  
  * Enable all features final confirmation ( ``APPROVE_ALL_FEATURES``)
   
  * Billing transfer ( ``TRANSFER_RESPONSIBILITY``)
  

   

  For more information, see `Enabling all features <https://docs.aws.amazon.com/organizations/latest/userguide/manage-begin-all-features-standard-migration.html#manage-approve-all-features-invite>`__ and `Responding to a billing transfer invitation <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_transfer_billing-respond-invitation.html>`__ in the *Organizations User Guide*.

   

  **Only a member account can accept the following handshakes**:

   

  
  * Invitation to join ( ``INVITE``)
   
  * Approve all features request ( ``ENABLE_ALL_FEATURES``)
  

   

  For more information, see `Responding to invitations <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_accept-decline-invite.html>`__ and `Enabling all features <https://docs.aws.amazon.com/organizations/latest/userguide/manage-begin-all-features-standard-migration.html#manage-approve-all-features-invite>`__ in the *Organizations User Guide*.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/organizations-2016-11-28/AcceptHandshake>`_  


  **Request Syntax**
  ::

    response = client.accept_handshake(
        HandshakeId='string'
    )
    
  :type HandshakeId: string
  :param HandshakeId: **[REQUIRED]** 

    ID for the handshake that you want to accept.

     

    The `regex pattern <http://wikipedia.org/wiki/regex>`__ for handshake ID string requires "h-" followed by from 8 to 32 lowercase letters or digits.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'Handshake': {
              'Id': 'string',
              'Arn': 'string',
              'Parties': [
                  {
                      'Id': 'string',
                      'Type': 'ACCOUNT'|'ORGANIZATION'|'EMAIL'
                  },
              ],
              'State': 'REQUESTED'|'OPEN'|'CANCELED'|'ACCEPTED'|'DECLINED'|'EXPIRED',
              'RequestedTimestamp': datetime(2015, 1, 1),
              'ExpirationTimestamp': datetime(2015, 1, 1),
              'Action': 'INVITE'|'ENABLE_ALL_FEATURES'|'APPROVE_ALL_FEATURES'|'ADD_ORGANIZATIONS_SERVICE_LINKED_ROLE'|'TRANSFER_RESPONSIBILITY',
              'Resources': [
                  {
                      'Value': 'string',
                      'Type': 'ACCOUNT'|'ORGANIZATION'|'ORGANIZATION_FEATURE_SET'|'EMAIL'|'MASTER_EMAIL'|'MASTER_NAME'|'NOTES'|'PARENT_HANDSHAKE'|'RESPONSIBILITY_TRANSFER'|'TRANSFER_START_TIMESTAMP'|'TRANSFER_TYPE'|'MANAGEMENT_ACCOUNT'|'MANAGEMENT_EMAIL'|'MANAGEMENT_NAME',
                      'Resources': {'... recursive ...'}
                  },
              ]
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **Handshake** *(dict) --* 

        A ``Handshake`` object. Contains details for the handshake.

        
        

        - **Id** *(string) --* 

          ID for the handshake.

           

          The `regex pattern <http://wikipedia.org/wiki/regex>`__ for handshake ID string requires "h-" followed by from 8 to 32 lowercase letters or digits.

          
        

        - **Arn** *(string) --* 

          Amazon Resource Name (ARN) for the handshake.

           

          For more information about ARNs in Organizations, see `ARN Formats Supported by Organizations <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsorganizations.html#awsorganizations-resources-for-iam-policies>`__ in the *Amazon Web Services Service Authorization Reference*.

          
        

        - **Parties** *(list) --* 

          An array of ``HandshakeParty`` objects. Contains details for participant in a handshake.

          
          

          - *(dict) --* 

            Contains details for a participant in a handshake.

            
            

            - **Id** *(string) --* 

              ID for the participant: Acccount ID, organization ID, or email address.

               

              The `regex pattern <http://wikipedia.org/wiki/regex>`__ for handshake ID string requires "h-" followed by from 8 to 32 lowercase letters or digits.

              
            

            - **Type** *(string) --* 

              The type of ID for the participant.

              
        
      
        

        - **State** *(string) --* 

          Current state for the handshake.

           

          
          * **REQUESTED**: Handshake awaiting a response from the recipient.
           
          * **OPEN**: Handshake sent to multiple recipients and all recipients have responded. The sender can now complete the handshake action.
           
          * **CANCELED**: Handshake canceled by the sender.
           
          * **ACCEPTED**: Handshake accepted by the recipient.
           
          * **DECLINED**: Handshake declined by the recipient.
           
          * **EXPIRED**: Handshake has expired.
          

          
        

        - **RequestedTimestamp** *(datetime) --* 

          Timestamp when the handshake request was made.

          
        

        - **ExpirationTimestamp** *(datetime) --* 

          Timestamp when the handshake expires.

          
        

        - **Action** *(string) --* 

          The type of handshake:

           

          
          * **INVITE**: Handshake sent to a standalone account requesting that it to join the sender's organization.
           
          * **ENABLE_ALL_FEATURES**: Handshake sent to invited member accounts to enable all features for the organization.
           
          * **APPROVE_ALL_FEATURES**: Handshake sent to the management account when all invited member accounts have approved to enable all features.
           
          * **TRANSFER_RESPONSIBILITY**: Handshake sent to another organization's management account requesting that it designate the sender with the specified responsibilities for recipient's organization.
          

          
        

        - **Resources** *(list) --* 

          An array of ``HandshakeResource`` objects. When needed, contains additional details for a handshake. For example, the email address for the sender.

          
          

          - *(dict) --* 

            Contains additional details for a handshake.

            
            

            - **Value** *(string) --* 

              Additional information for the handshake. The format of the value string must match the requirements of the specified type.

              
            

            - **Type** *(string) --* 

              The type of information being passed, specifying how the value is to be interpreted by the other party:

               

              
              * **ACCOUNT**: ID for an Amazon Web Services account.
               
              * **ORGANIZATION**: ID for an organization.
               
              * **EMAIL**: Email address for the recipient.
               
              * **OWNER_EMAIL**: Email address for the sender.
               
              * **OWNER_NAME**: Name of the sender.
               
              * **NOTES**: Additional text included by the sender for the recipient.
              

              
            

            - **Resources** *(list) --* 

              An array of ``HandshakeResource`` objects. When needed, contains additional details for a handshake. For example, the email address for the sender.

              
        
      
    
  
  **Exceptions**
  
  *   :py:class:`Organizations.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`Organizations.Client.exceptions.AWSOrganizationsNotInUseException`

  
  *   :py:class:`Organizations.Client.exceptions.HandshakeConstraintViolationException`

  
  *   :py:class:`Organizations.Client.exceptions.HandshakeNotFoundException`

  
  *   :py:class:`Organizations.Client.exceptions.InvalidHandshakeTransitionException`

  
  *   :py:class:`Organizations.Client.exceptions.HandshakeAlreadyInStateException`

  
  *   :py:class:`Organizations.Client.exceptions.InvalidInputException`

  
  *   :py:class:`Organizations.Client.exceptions.ConcurrentModificationException`

  
  *   :py:class:`Organizations.Client.exceptions.ServiceException`

  
  *   :py:class:`Organizations.Client.exceptions.TooManyRequestsException`

  
  *   :py:class:`Organizations.Client.exceptions.AccessDeniedForDependencyException`

  
  *   :py:class:`Organizations.Client.exceptions.ConstraintViolationException`

  
  *   :py:class:`Organizations.Client.exceptions.MasterCannotLeaveOrganizationException`

  

  **Examples**

  Bill is the owner of an organization, and he invites Juan's account (222222222222) to join his organization. The following example shows Juan's account accepting the handshake and thus agreeing to the invitation.
  ::

    response = client.accept_handshake(
        HandshakeId='h-examplehandshakeid111',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'Handshake': {
            'Action': 'INVITE',
            'Arn': 'arn:aws:organizations::111111111111:handshake/o-exampleorgid/invite/h-examplehandshakeid111',
            'ExpirationTimestamp': datetime(2017, 2, 28, 12, 15, 0, 1, 59, 0),
            'Id': 'h-examplehandshakeid111',
            'Parties': [
                {
                    'Id': 'o-exampleorgid',
                    'Type': 'ORGANIZATION',
                },
                {
                    'Id': 'juan@example.com',
                    'Type': 'EMAIL',
                },
            ],
            'RequestedTimestamp': datetime(2017, 2, 14, 12, 15, 0, 1, 45, 0),
            'Resources': [
                {
                    'Resources': [
                        {
                            'Type': 'MASTER_EMAIL',
                            'Value': 'bill@amazon.com',
                        },
                        {
                            'Type': 'MASTER_NAME',
                            'Value': 'Org Master Account',
                        },
                        {
                            'Type': 'ORGANIZATION_FEATURE_SET',
                            'Value': 'ALL',
                        },
                    ],
                    'Type': 'ORGANIZATION',
                    'Value': 'o-exampleorgid',
                },
                {
                    'Type': 'ACCOUNT',
                    'Value': '222222222222',
                },
            ],
            'State': 'ACCEPTED',
        },
        'ResponseMetadata': {
            '...': '...',
        },
    }

  