inviteAccountToOrganization method

Future<InviteAccountToOrganizationResponse> inviteAccountToOrganization({
  1. required HandshakeParty target,
  2. String? notes,
  3. List<Tag>? tags,
})

Sends an invitation to another account to join your organization as a member account. Organizations sends email on your behalf to the email address that is associated with the other account's owner. The invitation is implemented as a Handshake whose details are in the response. If the request includes tags, then the requester must have the organizations:TagResource permission.

You can only call this operation from the management account.

May throw AccessDeniedException. May throw AccountOwnerNotVerifiedException. May throw AWSOrganizationsNotInUseException. May throw ConcurrentModificationException. May throw ConstraintViolationException. May throw DuplicateHandshakeException. May throw FinalizingOrganizationException. May throw HandshakeConstraintViolationException. May throw InvalidInputException. May throw ServiceException. May throw TooManyRequestsException.

Parameter target : The identifier (ID) of the Amazon Web Services account that you want to invite to join your organization. This is a JSON object that contains the following elements:

{ "Type": "ACCOUNT", "Id": "< account id number >" }

If you use the CLI, you can submit this as a single string, similar to the following example:

--target Id=123456789012,Type=ACCOUNT

If you specify "Type": "ACCOUNT", you must provide the Amazon Web Services account ID number as the Id. If you specify "Type": "EMAIL", you must specify the email address that is associated with the account.

--target Id=diego@example.com,Type=EMAIL

Parameter notes : Additional information that you want to include in the generated email to the recipient account owner.

Parameter tags : A list of tags that you want to attach to the account when it becomes a member of the organization. For each tag in the list, you must specify both a tag key and a value. You can set the value to an empty string, but you can't set it to null. For more information about tagging, see Tagging Organizations resources in the Organizations User Guide.

Implementation

Future<InviteAccountToOrganizationResponse> inviteAccountToOrganization({
  required HandshakeParty target,
  String? notes,
  List<Tag>? tags,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSOrganizationsV20161128.InviteAccountToOrganization'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Target': target,
      if (notes != null) 'Notes': notes,
      if (tags != null) 'Tags': tags,
    },
  );

  return InviteAccountToOrganizationResponse.fromJson(jsonResponse.body);
}