shareDirectory method

Future<ShareDirectoryResult> shareDirectory({
  1. required String directoryId,
  2. required ShareMethod shareMethod,
  3. required ShareTarget shareTarget,
  4. String? shareNotes,
})

Shares a specified directory (DirectoryId) in your AWS account (directory owner) with another AWS account (directory consumer). With this operation you can use your directory from any AWS account and from any Amazon VPC within an AWS Region.

When you share your AWS Managed Microsoft AD directory, AWS Directory Service creates a shared directory in the directory consumer account. This shared directory contains the metadata to provide access to the directory within the directory owner account. The shared directory is visible in all VPCs in the directory consumer account.

The ShareMethod parameter determines whether the specified directory can be shared between AWS accounts inside the same AWS organization (ORGANIZATIONS). It also determines whether you can share the directory with any other AWS account either inside or outside of the organization (HANDSHAKE).

The ShareNotes parameter is only used when HANDSHAKE is called, which sends a directory sharing request to the directory consumer.

May throw DirectoryAlreadySharedException. May throw EntityDoesNotExistException. May throw InvalidTargetException. May throw InvalidParameterException. May throw ClientException. May throw ShareLimitExceededException. May throw OrganizationsException. May throw AccessDeniedException. May throw UnsupportedOperationException. May throw ServiceException.

Parameter directoryId : Identifier of the AWS Managed Microsoft AD directory that you want to share with other AWS accounts.

Parameter shareMethod : The method used when sharing a directory to determine whether the directory should be shared within your AWS organization (ORGANIZATIONS) or with any AWS account by sending a directory sharing request (HANDSHAKE).

Parameter shareTarget : Identifier for the directory consumer account with whom the directory is to be shared.

Parameter shareNotes : A directory share request that is sent by the directory owner to the directory consumer. The request includes a typed message to help the directory consumer administrator determine whether to approve or reject the share invitation.

Implementation

Future<ShareDirectoryResult> shareDirectory({
  required String directoryId,
  required ShareMethod shareMethod,
  required ShareTarget shareTarget,
  String? shareNotes,
}) async {
  ArgumentError.checkNotNull(directoryId, 'directoryId');
  ArgumentError.checkNotNull(shareMethod, 'shareMethod');
  ArgumentError.checkNotNull(shareTarget, 'shareTarget');
  _s.validateStringLength(
    'shareNotes',
    shareNotes,
    0,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'DirectoryService_20150416.ShareDirectory'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'DirectoryId': directoryId,
      'ShareMethod': shareMethod.toValue(),
      'ShareTarget': shareTarget,
      if (shareNotes != null) 'ShareNotes': shareNotes,
    },
  );

  return ShareDirectoryResult.fromJson(jsonResponse.body);
}