# This file is generated by make.paws. Please do not edit here.
#' @importFrom paws.common get_config new_operation new_request send_request
#' @include workmail_service.R
NULL

#' Adds a member (user or group) to the resource's set of delegates
#'
#' @description
#' Adds a member (user or group) to the resource's set of delegates.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_associate_delegate_to_resource/](https://www.paws-r-sdk.com/docs/workmail_associate_delegate_to_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization under which the resource exists.
#' @param ResourceId &#91;required&#93; The resource for which members (users or groups) are associated.
#' 
#' The identifier can accept *ResourceId*, *Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Email address: resource@@domain.tld
#' 
#' -   Resource name: resource
#' @param EntityId &#91;required&#93; The member (user or group) to associate to the resource.
#' 
#' The entity ID can accept *UserId or GroupID*, *Username or Groupname*, or *email*.
#' 
#' -   Entity: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity: entity
#'
#' @keywords internal
#'
#' @rdname workmail_associate_delegate_to_resource
workmail_associate_delegate_to_resource <- function(OrganizationId, ResourceId, EntityId) {
  op <- new_operation(
    name = "AssociateDelegateToResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$associate_delegate_to_resource_input(OrganizationId = OrganizationId, ResourceId = ResourceId, EntityId = EntityId)
  output <- .workmail$associate_delegate_to_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$associate_delegate_to_resource <- workmail_associate_delegate_to_resource

#' Adds a member (user or group) to the group's set
#'
#' @description
#' Adds a member (user or group) to the group's set.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_associate_member_to_group/](https://www.paws-r-sdk.com/docs/workmail_associate_member_to_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization under which the group exists.
#' @param GroupId &#91;required&#93; The group to which the member (user or group) is associated.
#' 
#' The identifier can accept *GroupId*, *Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: group@@domain.tld
#' 
#' -   Group name: group
#' @param MemberId &#91;required&#93; The member (user or group) to associate to the group.
#' 
#' The member ID can accept *UserID or GroupId*, *Username or Groupname*, or *email*.
#' 
#' -   Member: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: member@@domain.tld
#' 
#' -   Member name: member
#'
#' @keywords internal
#'
#' @rdname workmail_associate_member_to_group
workmail_associate_member_to_group <- function(OrganizationId, GroupId, MemberId) {
  op <- new_operation(
    name = "AssociateMemberToGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$associate_member_to_group_input(OrganizationId = OrganizationId, GroupId = GroupId, MemberId = MemberId)
  output <- .workmail$associate_member_to_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$associate_member_to_group <- workmail_associate_member_to_group

#' Assumes an impersonation role for the given WorkMail organization
#'
#' @description
#' Assumes an impersonation role for the given WorkMail organization. This method returns an authentication token you can use to make impersonated calls.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_assume_impersonation_role/](https://www.paws-r-sdk.com/docs/workmail_assume_impersonation_role/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which the impersonation role will be assumed.
#' @param ImpersonationRoleId &#91;required&#93; The impersonation role ID to assume.
#'
#' @keywords internal
#'
#' @rdname workmail_assume_impersonation_role
workmail_assume_impersonation_role <- function(OrganizationId, ImpersonationRoleId) {
  op <- new_operation(
    name = "AssumeImpersonationRole",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$assume_impersonation_role_input(OrganizationId = OrganizationId, ImpersonationRoleId = ImpersonationRoleId)
  output <- .workmail$assume_impersonation_role_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$assume_impersonation_role <- workmail_assume_impersonation_role

#' Cancels a mailbox export job
#'
#' @description
#' Cancels a mailbox export job.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_cancel_mailbox_export_job/](https://www.paws-r-sdk.com/docs/workmail_cancel_mailbox_export_job/) for full documentation.
#'
#' @param ClientToken &#91;required&#93; The idempotency token for the client request.
#' @param JobId &#91;required&#93; The job ID.
#' @param OrganizationId &#91;required&#93; The organization ID.
#'
#' @keywords internal
#'
#' @rdname workmail_cancel_mailbox_export_job
workmail_cancel_mailbox_export_job <- function(ClientToken, JobId, OrganizationId) {
  op <- new_operation(
    name = "CancelMailboxExportJob",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$cancel_mailbox_export_job_input(ClientToken = ClientToken, JobId = JobId, OrganizationId = OrganizationId)
  output <- .workmail$cancel_mailbox_export_job_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$cancel_mailbox_export_job <- workmail_cancel_mailbox_export_job

#' Adds an alias to the set of a given member (user or group) of WorkMail
#'
#' @description
#' Adds an alias to the set of a given member (user or group) of WorkMail.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_alias/](https://www.paws-r-sdk.com/docs/workmail_create_alias/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization under which the member (user or group) exists.
#' @param EntityId &#91;required&#93; The member (user or group) to which this alias is added.
#' @param Alias &#91;required&#93; The alias to add to the member set.
#'
#' @keywords internal
#'
#' @rdname workmail_create_alias
workmail_create_alias <- function(OrganizationId, EntityId, Alias) {
  op <- new_operation(
    name = "CreateAlias",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_alias_input(OrganizationId = OrganizationId, EntityId = EntityId, Alias = Alias)
  output <- .workmail$create_alias_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_alias <- workmail_create_alias

#' Creates an AvailabilityConfiguration for the given WorkMail organization
#' and domain
#'
#' @description
#' Creates an `AvailabilityConfiguration` for the given WorkMail organization and domain.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_availability_configuration/](https://www.paws-r-sdk.com/docs/workmail_create_availability_configuration/) for full documentation.
#'
#' @param ClientToken An idempotent token that ensures that an API request is executed only once.
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the `AvailabilityConfiguration` will be created.
#' @param DomainName &#91;required&#93; The domain to which the provider applies.
#' @param EwsProvider Exchange Web Services (EWS) availability provider definition. The request must contain exactly one provider definition, either `EwsProvider` or `LambdaProvider`.
#' @param LambdaProvider Lambda availability provider definition. The request must contain exactly one provider definition, either `EwsProvider` or `LambdaProvider`.
#'
#' @keywords internal
#'
#' @rdname workmail_create_availability_configuration
workmail_create_availability_configuration <- function(ClientToken = NULL, OrganizationId, DomainName, EwsProvider = NULL, LambdaProvider = NULL) {
  op <- new_operation(
    name = "CreateAvailabilityConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_availability_configuration_input(ClientToken = ClientToken, OrganizationId = OrganizationId, DomainName = DomainName, EwsProvider = EwsProvider, LambdaProvider = LambdaProvider)
  output <- .workmail$create_availability_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_availability_configuration <- workmail_create_availability_configuration

#' Creates a group that can be used in WorkMail by calling the
#' RegisterToWorkMail operation
#'
#' @description
#' Creates a group that can be used in WorkMail by calling the [`register_to_work_mail`][workmail_register_to_work_mail] operation.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_group/](https://www.paws-r-sdk.com/docs/workmail_create_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization under which the group is to be created.
#' @param Name &#91;required&#93; The name of the group.
#' @param HiddenFromGlobalAddressList If this parameter is enabled, the group will be hidden from the address book.
#'
#' @keywords internal
#'
#' @rdname workmail_create_group
workmail_create_group <- function(OrganizationId, Name, HiddenFromGlobalAddressList = NULL) {
  op <- new_operation(
    name = "CreateGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_group_input(OrganizationId = OrganizationId, Name = Name, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList)
  output <- .workmail$create_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_group <- workmail_create_group

#' Creates the WorkMail application in IAM Identity Center that can be used
#' later in the WorkMail - IdC integration
#'
#' @description
#' Creates the WorkMail application in IAM Identity Center that can be used later in the WorkMail - IdC integration. For more information, see PutIdentityProviderConfiguration. This action does not affect the authentication settings for any WorkMail organizations.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_identity_center_application/](https://www.paws-r-sdk.com/docs/workmail_create_identity_center_application/) for full documentation.
#'
#' @param Name &#91;required&#93; The name of the IAM Identity Center application.
#' @param InstanceArn &#91;required&#93; The Amazon Resource Name (ARN) of the instance.
#' @param ClientToken The idempotency token associated with the request.
#'
#' @keywords internal
#'
#' @rdname workmail_create_identity_center_application
workmail_create_identity_center_application <- function(Name, InstanceArn, ClientToken = NULL) {
  op <- new_operation(
    name = "CreateIdentityCenterApplication",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_identity_center_application_input(Name = Name, InstanceArn = InstanceArn, ClientToken = ClientToken)
  output <- .workmail$create_identity_center_application_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_identity_center_application <- workmail_create_identity_center_application

#' Creates an impersonation role for the given WorkMail organization
#'
#' @description
#' Creates an impersonation role for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_impersonation_role/](https://www.paws-r-sdk.com/docs/workmail_create_impersonation_role/) for full documentation.
#'
#' @param ClientToken The idempotency token for the client request.
#' @param OrganizationId &#91;required&#93; The WorkMail organization to create the new impersonation role within.
#' @param Name &#91;required&#93; The name of the new impersonation role.
#' @param Type &#91;required&#93; The impersonation role's type. The available impersonation role types are `READ_ONLY` or `FULL_ACCESS`.
#' @param Description The description of the new impersonation role.
#' @param Rules &#91;required&#93; The list of rules for the impersonation role.
#'
#' @keywords internal
#'
#' @rdname workmail_create_impersonation_role
workmail_create_impersonation_role <- function(ClientToken = NULL, OrganizationId, Name, Type, Description = NULL, Rules) {
  op <- new_operation(
    name = "CreateImpersonationRole",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_impersonation_role_input(ClientToken = ClientToken, OrganizationId = OrganizationId, Name = Name, Type = Type, Description = Description, Rules = Rules)
  output <- .workmail$create_impersonation_role_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_impersonation_role <- workmail_create_impersonation_role

#' Creates a new mobile device access rule for the specified WorkMail
#' organization
#'
#' @description
#' Creates a new mobile device access rule for the specified WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_mobile_device_access_rule/](https://www.paws-r-sdk.com/docs/workmail_create_mobile_device_access_rule/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which the rule will be created.
#' @param ClientToken The idempotency token for the client request.
#' @param Name &#91;required&#93; The rule name.
#' @param Description The rule description.
#' @param Effect &#91;required&#93; The effect of the rule when it matches. Allowed values are `ALLOW` or `DENY`.
#' @param DeviceTypes Device types that the rule will match.
#' @param NotDeviceTypes Device types that the rule **will not** match. All other device types will match.
#' @param DeviceModels Device models that the rule will match.
#' @param NotDeviceModels Device models that the rule **will not** match. All other device models will match.
#' @param DeviceOperatingSystems Device operating systems that the rule will match.
#' @param NotDeviceOperatingSystems Device operating systems that the rule **will not** match. All other device operating systems will match.
#' @param DeviceUserAgents Device user agents that the rule will match.
#' @param NotDeviceUserAgents Device user agents that the rule **will not** match. All other device user agents will match.
#'
#' @keywords internal
#'
#' @rdname workmail_create_mobile_device_access_rule
workmail_create_mobile_device_access_rule <- function(OrganizationId, ClientToken = NULL, Name, Description = NULL, Effect, DeviceTypes = NULL, NotDeviceTypes = NULL, DeviceModels = NULL, NotDeviceModels = NULL, DeviceOperatingSystems = NULL, NotDeviceOperatingSystems = NULL, DeviceUserAgents = NULL, NotDeviceUserAgents = NULL) {
  op <- new_operation(
    name = "CreateMobileDeviceAccessRule",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_mobile_device_access_rule_input(OrganizationId = OrganizationId, ClientToken = ClientToken, Name = Name, Description = Description, Effect = Effect, DeviceTypes = DeviceTypes, NotDeviceTypes = NotDeviceTypes, DeviceModels = DeviceModels, NotDeviceModels = NotDeviceModels, DeviceOperatingSystems = DeviceOperatingSystems, NotDeviceOperatingSystems = NotDeviceOperatingSystems, DeviceUserAgents = DeviceUserAgents, NotDeviceUserAgents = NotDeviceUserAgents)
  output <- .workmail$create_mobile_device_access_rule_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_mobile_device_access_rule <- workmail_create_mobile_device_access_rule

#' Creates a new WorkMail organization
#'
#' @description
#' Creates a new WorkMail organization. Optionally, you can choose to associate an existing AWS Directory Service directory with your organization. If an AWS Directory Service directory ID is specified, the organization alias must match the directory alias. If you choose not to associate an existing directory with your organization, then we create a new WorkMail directory for you. For more information, see [Adding an organization](https://docs.aws.amazon.com/workmail/latest/adminguide/add_new_organization.html) in the *WorkMail Administrator Guide*.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_organization/](https://www.paws-r-sdk.com/docs/workmail_create_organization/) for full documentation.
#'
#' @param DirectoryId The AWS Directory Service directory ID.
#' @param Alias &#91;required&#93; The organization alias.
#' @param ClientToken The idempotency token associated with the request.
#' @param Domains The email domains to associate with the organization.
#' @param KmsKeyArn The Amazon Resource Name (ARN) of a customer managed key from AWS KMS.
#' @param EnableInteroperability When `true`, allows organization interoperability between WorkMail and Microsoft Exchange. If `true`, you must include a AD Connector directory ID in the request.
#'
#' @keywords internal
#'
#' @rdname workmail_create_organization
workmail_create_organization <- function(DirectoryId = NULL, Alias, ClientToken = NULL, Domains = NULL, KmsKeyArn = NULL, EnableInteroperability = NULL) {
  op <- new_operation(
    name = "CreateOrganization",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_organization_input(DirectoryId = DirectoryId, Alias = Alias, ClientToken = ClientToken, Domains = Domains, KmsKeyArn = KmsKeyArn, EnableInteroperability = EnableInteroperability)
  output <- .workmail$create_organization_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_organization <- workmail_create_organization

#' Creates a new WorkMail resource
#'
#' @description
#' Creates a new WorkMail resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_resource/](https://www.paws-r-sdk.com/docs/workmail_create_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier associated with the organization for which the resource is created.
#' @param Name &#91;required&#93; The name of the new resource.
#' @param Type &#91;required&#93; The type of the new resource. The available types are `equipment` and `room`.
#' @param Description Resource description.
#' @param HiddenFromGlobalAddressList If this parameter is enabled, the resource will be hidden from the address book.
#'
#' @keywords internal
#'
#' @rdname workmail_create_resource
workmail_create_resource <- function(OrganizationId, Name, Type, Description = NULL, HiddenFromGlobalAddressList = NULL) {
  op <- new_operation(
    name = "CreateResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_resource_input(OrganizationId = OrganizationId, Name = Name, Type = Type, Description = Description, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList)
  output <- .workmail$create_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_resource <- workmail_create_resource

#' Creates a user who can be used in WorkMail by calling the
#' RegisterToWorkMail operation
#'
#' @description
#' Creates a user who can be used in WorkMail by calling the [`register_to_work_mail`][workmail_register_to_work_mail] operation.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_create_user/](https://www.paws-r-sdk.com/docs/workmail_create_user/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier of the organization for which the user is created.
#' @param Name &#91;required&#93; The name for the new user. WorkMail directory user names have a maximum length of 64. All others have a maximum length of 20.
#' @param DisplayName &#91;required&#93; The display name for the new user.
#' @param Password The password for the new user.
#' @param Role The role of the new user.
#' 
#' You cannot pass *SYSTEM_USER* or *RESOURCE* role in a single request. When a user role is not selected, the default role of *USER* is selected.
#' @param FirstName The first name of the new user.
#' @param LastName The last name of the new user.
#' @param HiddenFromGlobalAddressList If this parameter is enabled, the user will be hidden from the address book.
#' @param IdentityProviderUserId User ID from the IAM Identity Center. If this parameter is empty it will be updated automatically when the user logs in for the first time to the mailbox associated with WorkMail.
#'
#' @keywords internal
#'
#' @rdname workmail_create_user
workmail_create_user <- function(OrganizationId, Name, DisplayName, Password = NULL, Role = NULL, FirstName = NULL, LastName = NULL, HiddenFromGlobalAddressList = NULL, IdentityProviderUserId = NULL) {
  op <- new_operation(
    name = "CreateUser",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$create_user_input(OrganizationId = OrganizationId, Name = Name, DisplayName = DisplayName, Password = Password, Role = Role, FirstName = FirstName, LastName = LastName, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList, IdentityProviderUserId = IdentityProviderUserId)
  output <- .workmail$create_user_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$create_user <- workmail_create_user

#' Deletes an access control rule for the specified WorkMail organization
#'
#' @description
#' Deletes an access control rule for the specified WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_access_control_rule/](https://www.paws-r-sdk.com/docs/workmail_delete_access_control_rule/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization.
#' @param Name &#91;required&#93; The name of the access control rule.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_access_control_rule
workmail_delete_access_control_rule <- function(OrganizationId, Name) {
  op <- new_operation(
    name = "DeleteAccessControlRule",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_access_control_rule_input(OrganizationId = OrganizationId, Name = Name)
  output <- .workmail$delete_access_control_rule_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_access_control_rule <- workmail_delete_access_control_rule

#' Remove one or more specified aliases from a set of aliases for a given
#' user
#'
#' @description
#' Remove one or more specified aliases from a set of aliases for a given user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_alias/](https://www.paws-r-sdk.com/docs/workmail_delete_alias/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the user exists.
#' @param EntityId &#91;required&#93; The identifier for the member (user or group) from which to have the aliases removed.
#' @param Alias &#91;required&#93; The aliases to be removed from the user's set of aliases. Duplicate entries in the list are collapsed into single entries (the list is transformed into a set).
#'
#' @keywords internal
#'
#' @rdname workmail_delete_alias
workmail_delete_alias <- function(OrganizationId, EntityId, Alias) {
  op <- new_operation(
    name = "DeleteAlias",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_alias_input(OrganizationId = OrganizationId, EntityId = EntityId, Alias = Alias)
  output <- .workmail$delete_alias_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_alias <- workmail_delete_alias

#' Deletes the AvailabilityConfiguration for the given WorkMail
#' organization and domain
#'
#' @description
#' Deletes the `AvailabilityConfiguration` for the given WorkMail organization and domain.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_availability_configuration/](https://www.paws-r-sdk.com/docs/workmail_delete_availability_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the `AvailabilityConfiguration` will be deleted.
#' @param DomainName &#91;required&#93; The domain for which the `AvailabilityConfiguration` will be deleted.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_availability_configuration
workmail_delete_availability_configuration <- function(OrganizationId, DomainName) {
  op <- new_operation(
    name = "DeleteAvailabilityConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_availability_configuration_input(OrganizationId = OrganizationId, DomainName = DomainName)
  output <- .workmail$delete_availability_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_availability_configuration <- workmail_delete_availability_configuration

#' Deletes the email monitoring configuration for a specified organization
#'
#' @description
#' Deletes the email monitoring configuration for a specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_email_monitoring_configuration/](https://www.paws-r-sdk.com/docs/workmail_delete_email_monitoring_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The ID of the organization from which the email monitoring configuration is deleted.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_email_monitoring_configuration
workmail_delete_email_monitoring_configuration <- function(OrganizationId) {
  op <- new_operation(
    name = "DeleteEmailMonitoringConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_email_monitoring_configuration_input(OrganizationId = OrganizationId)
  output <- .workmail$delete_email_monitoring_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_email_monitoring_configuration <- workmail_delete_email_monitoring_configuration

#' Deletes a group from WorkMail
#'
#' @description
#' Deletes a group from WorkMail.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_group/](https://www.paws-r-sdk.com/docs/workmail_delete_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization that contains the group.
#' @param GroupId &#91;required&#93; The identifier of the group to be deleted.
#' 
#' The identifier can be the *GroupId*, or *Groupname*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Group name: group
#'
#' @keywords internal
#'
#' @rdname workmail_delete_group
workmail_delete_group <- function(OrganizationId, GroupId) {
  op <- new_operation(
    name = "DeleteGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_group_input(OrganizationId = OrganizationId, GroupId = GroupId)
  output <- .workmail$delete_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_group <- workmail_delete_group

#' Deletes the IAM Identity Center application from WorkMail
#'
#' @description
#' Deletes the IAM Identity Center application from WorkMail. This action does not affect the authentication settings for any WorkMail organizations.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_identity_center_application/](https://www.paws-r-sdk.com/docs/workmail_delete_identity_center_application/) for full documentation.
#'
#' @param ApplicationArn &#91;required&#93; The Amazon Resource Name (ARN) of the application.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_identity_center_application
workmail_delete_identity_center_application <- function(ApplicationArn) {
  op <- new_operation(
    name = "DeleteIdentityCenterApplication",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_identity_center_application_input(ApplicationArn = ApplicationArn)
  output <- .workmail$delete_identity_center_application_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_identity_center_application <- workmail_delete_identity_center_application

#' Disables the integration between IdC and WorkMail
#'
#' @description
#' Disables the integration between IdC and WorkMail. Authentication will continue with the directory as it was before the IdC integration. You might have to reset your directory passwords and reconfigure your desktop and mobile email clients.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_identity_provider_configuration/](https://www.paws-r-sdk.com/docs/workmail_delete_identity_provider_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The Organization ID.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_identity_provider_configuration
workmail_delete_identity_provider_configuration <- function(OrganizationId) {
  op <- new_operation(
    name = "DeleteIdentityProviderConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_identity_provider_configuration_input(OrganizationId = OrganizationId)
  output <- .workmail$delete_identity_provider_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_identity_provider_configuration <- workmail_delete_identity_provider_configuration

#' Deletes an impersonation role for the given WorkMail organization
#'
#' @description
#' Deletes an impersonation role for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_impersonation_role/](https://www.paws-r-sdk.com/docs/workmail_delete_impersonation_role/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization from which to delete the impersonation role.
#' @param ImpersonationRoleId &#91;required&#93; The ID of the impersonation role to delete.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_impersonation_role
workmail_delete_impersonation_role <- function(OrganizationId, ImpersonationRoleId) {
  op <- new_operation(
    name = "DeleteImpersonationRole",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_impersonation_role_input(OrganizationId = OrganizationId, ImpersonationRoleId = ImpersonationRoleId)
  output <- .workmail$delete_impersonation_role_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_impersonation_role <- workmail_delete_impersonation_role

#' Deletes permissions granted to a member (user or group)
#'
#' @description
#' Deletes permissions granted to a member (user or group).
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_mailbox_permissions/](https://www.paws-r-sdk.com/docs/workmail_delete_mailbox_permissions/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier of the organization under which the member (user or group) exists.
#' @param EntityId &#91;required&#93; The identifier of the entity that owns the mailbox.
#' 
#' The identifier can be *UserId or Group Id*, *Username or Groupname*, or *email*.
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param GranteeId &#91;required&#93; The identifier of the entity for which to delete granted permissions.
#' 
#' The identifier can be *UserId, ResourceID, or Group Id*, *Username or Groupname*, or *email*.
#' 
#' -   Grantee ID: 12345678-1234-1234-1234-123456789012,r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: grantee@@domain.tld
#' 
#' -   Grantee name: grantee
#'
#' @keywords internal
#'
#' @rdname workmail_delete_mailbox_permissions
workmail_delete_mailbox_permissions <- function(OrganizationId, EntityId, GranteeId) {
  op <- new_operation(
    name = "DeleteMailboxPermissions",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_mailbox_permissions_input(OrganizationId = OrganizationId, EntityId = EntityId, GranteeId = GranteeId)
  output <- .workmail$delete_mailbox_permissions_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_mailbox_permissions <- workmail_delete_mailbox_permissions

#' Deletes the mobile device access override for the given WorkMail
#' organization, user, and device
#'
#' @description
#' Deletes the mobile device access override for the given WorkMail organization, user, and device.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_mobile_device_access_override/](https://www.paws-r-sdk.com/docs/workmail_delete_mobile_device_access_override/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the access override will be deleted.
#' @param UserId &#91;required&#93; The WorkMail user for which you want to delete the override. Accepts the following types of user identities:
#' 
#' -   User ID: `12345678-1234-1234-1234-123456789012` or `S-1-1-12-1234567890-123456789-123456789-1234`
#' 
#' -   Email address: `user@@domain.tld`
#' 
#' -   User name: `user`
#' @param DeviceId &#91;required&#93; The mobile device for which you delete the override. `DeviceId` is case insensitive.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_mobile_device_access_override
workmail_delete_mobile_device_access_override <- function(OrganizationId, UserId, DeviceId) {
  op <- new_operation(
    name = "DeleteMobileDeviceAccessOverride",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_mobile_device_access_override_input(OrganizationId = OrganizationId, UserId = UserId, DeviceId = DeviceId)
  output <- .workmail$delete_mobile_device_access_override_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_mobile_device_access_override <- workmail_delete_mobile_device_access_override

#' Deletes a mobile device access rule for the specified WorkMail
#' organization
#'
#' @description
#' Deletes a mobile device access rule for the specified WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_mobile_device_access_rule/](https://www.paws-r-sdk.com/docs/workmail_delete_mobile_device_access_rule/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which the rule will be deleted.
#' @param MobileDeviceAccessRuleId &#91;required&#93; The identifier of the rule to be deleted.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_mobile_device_access_rule
workmail_delete_mobile_device_access_rule <- function(OrganizationId, MobileDeviceAccessRuleId) {
  op <- new_operation(
    name = "DeleteMobileDeviceAccessRule",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_mobile_device_access_rule_input(OrganizationId = OrganizationId, MobileDeviceAccessRuleId = MobileDeviceAccessRuleId)
  output <- .workmail$delete_mobile_device_access_rule_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_mobile_device_access_rule <- workmail_delete_mobile_device_access_rule

#' Deletes an WorkMail organization and all underlying AWS resources
#' managed by WorkMail as part of the organization
#'
#' @description
#' Deletes an WorkMail organization and all underlying AWS resources managed by WorkMail as part of the organization. You can choose whether to delete the associated directory. For more information, see [Removing an organization](https://docs.aws.amazon.com/workmail/latest/adminguide/delete_organization.html) in the *WorkMail Administrator Guide*.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_organization/](https://www.paws-r-sdk.com/docs/workmail_delete_organization/) for full documentation.
#'
#' @param ClientToken The idempotency token associated with the request.
#' @param OrganizationId &#91;required&#93; The organization ID.
#' @param DeleteDirectory &#91;required&#93; If true, deletes the AWS Directory Service directory associated with the organization.
#' @param ForceDelete Deletes a WorkMail organization even if the organization has enabled users.
#' @param DeleteIdentityCenterApplication Deletes IAM Identity Center application for WorkMail. This action does not affect authentication settings for any organization.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_organization
workmail_delete_organization <- function(ClientToken = NULL, OrganizationId, DeleteDirectory, ForceDelete = NULL, DeleteIdentityCenterApplication = NULL) {
  op <- new_operation(
    name = "DeleteOrganization",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_organization_input(ClientToken = ClientToken, OrganizationId = OrganizationId, DeleteDirectory = DeleteDirectory, ForceDelete = ForceDelete, DeleteIdentityCenterApplication = DeleteIdentityCenterApplication)
  output <- .workmail$delete_organization_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_organization <- workmail_delete_organization

#' Deletes the Personal Access Token from the provided WorkMail
#' Organization
#'
#' @description
#' Deletes the Personal Access Token from the provided WorkMail Organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_personal_access_token/](https://www.paws-r-sdk.com/docs/workmail_delete_personal_access_token/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The Organization ID.
#' @param PersonalAccessTokenId &#91;required&#93; The Personal Access Token ID.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_personal_access_token
workmail_delete_personal_access_token <- function(OrganizationId, PersonalAccessTokenId) {
  op <- new_operation(
    name = "DeletePersonalAccessToken",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_personal_access_token_input(OrganizationId = OrganizationId, PersonalAccessTokenId = PersonalAccessTokenId)
  output <- .workmail$delete_personal_access_token_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_personal_access_token <- workmail_delete_personal_access_token

#' Deletes the specified resource
#'
#' @description
#' Deletes the specified resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_resource/](https://www.paws-r-sdk.com/docs/workmail_delete_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier associated with the organization from which the resource is deleted.
#' @param ResourceId &#91;required&#93; The identifier of the resource to be deleted.
#' 
#' The identifier can accept *ResourceId*, or *Resourcename*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Resource name: resource
#'
#' @keywords internal
#'
#' @rdname workmail_delete_resource
workmail_delete_resource <- function(OrganizationId, ResourceId) {
  op <- new_operation(
    name = "DeleteResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_resource_input(OrganizationId = OrganizationId, ResourceId = ResourceId)
  output <- .workmail$delete_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_resource <- workmail_delete_resource

#' Deletes the specified retention policy from the specified organization
#'
#' @description
#' Deletes the specified retention policy from the specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_retention_policy/](https://www.paws-r-sdk.com/docs/workmail_delete_retention_policy/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization ID.
#' @param Id &#91;required&#93; The retention policy ID.
#'
#' @keywords internal
#'
#' @rdname workmail_delete_retention_policy
workmail_delete_retention_policy <- function(OrganizationId, Id) {
  op <- new_operation(
    name = "DeleteRetentionPolicy",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_retention_policy_input(OrganizationId = OrganizationId, Id = Id)
  output <- .workmail$delete_retention_policy_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_retention_policy <- workmail_delete_retention_policy

#' Deletes a user from WorkMail and all subsequent systems
#'
#' @description
#' Deletes a user from WorkMail and all subsequent systems. Before you can delete a user, the user state must be `DISABLED`. Use the [`describe_user`][workmail_describe_user] action to confirm the user state.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_delete_user/](https://www.paws-r-sdk.com/docs/workmail_delete_user/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization that contains the user to be deleted.
#' @param UserId &#91;required&#93; The identifier of the user to be deleted.
#' 
#' The identifier can be the *UserId* or *Username*. The following identity formats are available:
#' 
#' -   User ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   User name: user
#'
#' @keywords internal
#'
#' @rdname workmail_delete_user
workmail_delete_user <- function(OrganizationId, UserId) {
  op <- new_operation(
    name = "DeleteUser",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$delete_user_input(OrganizationId = OrganizationId, UserId = UserId)
  output <- .workmail$delete_user_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$delete_user <- workmail_delete_user

#' Mark a user, group, or resource as no longer used in WorkMail
#'
#' @description
#' Mark a user, group, or resource as no longer used in WorkMail. This action disassociates the mailbox and schedules it for clean-up. WorkMail keeps mailboxes for 30 days before they are permanently removed. The functionality in the console is *Disable*.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_deregister_from_work_mail/](https://www.paws-r-sdk.com/docs/workmail_deregister_from_work_mail/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the WorkMail entity exists.
#' @param EntityId &#91;required&#93; The identifier for the member to be updated.
#' 
#' The identifier can be *UserId, ResourceId, or Group Id*, *Username, Resourcename, or Groupname*, or *email*.
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#'
#' @keywords internal
#'
#' @rdname workmail_deregister_from_work_mail
workmail_deregister_from_work_mail <- function(OrganizationId, EntityId) {
  op <- new_operation(
    name = "DeregisterFromWorkMail",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$deregister_from_work_mail_input(OrganizationId = OrganizationId, EntityId = EntityId)
  output <- .workmail$deregister_from_work_mail_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$deregister_from_work_mail <- workmail_deregister_from_work_mail

#' Removes a domain from WorkMail, stops email routing to WorkMail, and
#' removes the authorization allowing WorkMail use
#'
#' @description
#' Removes a domain from WorkMail, stops email routing to WorkMail, and removes the authorization allowing WorkMail use. SES keeps the domain because other applications may use it. You must first remove any email address used by WorkMail entities before you remove the domain.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_deregister_mail_domain/](https://www.paws-r-sdk.com/docs/workmail_deregister_mail_domain/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the domain will be deregistered.
#' @param DomainName &#91;required&#93; The domain to deregister in WorkMail and SES.
#'
#' @keywords internal
#'
#' @rdname workmail_deregister_mail_domain
workmail_deregister_mail_domain <- function(OrganizationId, DomainName) {
  op <- new_operation(
    name = "DeregisterMailDomain",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$deregister_mail_domain_input(OrganizationId = OrganizationId, DomainName = DomainName)
  output <- .workmail$deregister_mail_domain_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$deregister_mail_domain <- workmail_deregister_mail_domain

#' Describes the current email monitoring configuration for a specified
#' organization
#'
#' @description
#' Describes the current email monitoring configuration for a specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_email_monitoring_configuration/](https://www.paws-r-sdk.com/docs/workmail_describe_email_monitoring_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The ID of the organization for which the email monitoring configuration is described.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_email_monitoring_configuration
workmail_describe_email_monitoring_configuration <- function(OrganizationId) {
  op <- new_operation(
    name = "DescribeEmailMonitoringConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_email_monitoring_configuration_input(OrganizationId = OrganizationId)
  output <- .workmail$describe_email_monitoring_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_email_monitoring_configuration <- workmail_describe_email_monitoring_configuration

#' Returns basic details about an entity in WorkMail
#'
#' @description
#' Returns basic details about an entity in WorkMail.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_entity/](https://www.paws-r-sdk.com/docs/workmail_describe_entity/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the entity exists.
#' @param Email &#91;required&#93; The email under which the entity exists.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_entity
workmail_describe_entity <- function(OrganizationId, Email) {
  op <- new_operation(
    name = "DescribeEntity",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_entity_input(OrganizationId = OrganizationId, Email = Email)
  output <- .workmail$describe_entity_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_entity <- workmail_describe_entity

#' Returns the data available for the group
#'
#' @description
#' Returns the data available for the group.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_group/](https://www.paws-r-sdk.com/docs/workmail_describe_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the group exists.
#' @param GroupId &#91;required&#93; The identifier for the group to be described.
#' 
#' The identifier can accept *GroupId*, *Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: group@@domain.tld
#' 
#' -   Group name: group
#'
#' @keywords internal
#'
#' @rdname workmail_describe_group
workmail_describe_group <- function(OrganizationId, GroupId) {
  op <- new_operation(
    name = "DescribeGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_group_input(OrganizationId = OrganizationId, GroupId = GroupId)
  output <- .workmail$describe_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_group <- workmail_describe_group

#' Returns detailed information on the current IdC setup for the WorkMail
#' organization
#'
#' @description
#' Returns detailed information on the current IdC setup for the WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_identity_provider_configuration/](https://www.paws-r-sdk.com/docs/workmail_describe_identity_provider_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The Organization ID.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_identity_provider_configuration
workmail_describe_identity_provider_configuration <- function(OrganizationId) {
  op <- new_operation(
    name = "DescribeIdentityProviderConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_identity_provider_configuration_input(OrganizationId = OrganizationId)
  output <- .workmail$describe_identity_provider_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_identity_provider_configuration <- workmail_describe_identity_provider_configuration

#' Lists the settings in a DMARC policy for a specified organization
#'
#' @description
#' Lists the settings in a DMARC policy for a specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_inbound_dmarc_settings/](https://www.paws-r-sdk.com/docs/workmail_describe_inbound_dmarc_settings/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; Lists the ID of the given organization.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_inbound_dmarc_settings
workmail_describe_inbound_dmarc_settings <- function(OrganizationId) {
  op <- new_operation(
    name = "DescribeInboundDmarcSettings",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_inbound_dmarc_settings_input(OrganizationId = OrganizationId)
  output <- .workmail$describe_inbound_dmarc_settings_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_inbound_dmarc_settings <- workmail_describe_inbound_dmarc_settings

#' Describes the current status of a mailbox export job
#'
#' @description
#' Describes the current status of a mailbox export job.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_mailbox_export_job/](https://www.paws-r-sdk.com/docs/workmail_describe_mailbox_export_job/) for full documentation.
#'
#' @param JobId &#91;required&#93; The mailbox export job ID.
#' @param OrganizationId &#91;required&#93; The organization ID.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_mailbox_export_job
workmail_describe_mailbox_export_job <- function(JobId, OrganizationId) {
  op <- new_operation(
    name = "DescribeMailboxExportJob",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_mailbox_export_job_input(JobId = JobId, OrganizationId = OrganizationId)
  output <- .workmail$describe_mailbox_export_job_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_mailbox_export_job <- workmail_describe_mailbox_export_job

#' Provides more information regarding a given organization based on its
#' identifier
#'
#' @description
#' Provides more information regarding a given organization based on its identifier.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_organization/](https://www.paws-r-sdk.com/docs/workmail_describe_organization/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization to be described.
#'
#' @keywords internal
#'
#' @rdname workmail_describe_organization
workmail_describe_organization <- function(OrganizationId) {
  op <- new_operation(
    name = "DescribeOrganization",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_organization_input(OrganizationId = OrganizationId)
  output <- .workmail$describe_organization_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_organization <- workmail_describe_organization

#' Returns the data available for the resource
#'
#' @description
#' Returns the data available for the resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_resource/](https://www.paws-r-sdk.com/docs/workmail_describe_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier associated with the organization for which the resource is described.
#' @param ResourceId &#91;required&#93; The identifier of the resource to be described.
#' 
#' The identifier can accept *ResourceId*, *Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Email address: resource@@domain.tld
#' 
#' -   Resource name: resource
#'
#' @keywords internal
#'
#' @rdname workmail_describe_resource
workmail_describe_resource <- function(OrganizationId, ResourceId) {
  op <- new_operation(
    name = "DescribeResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_resource_input(OrganizationId = OrganizationId, ResourceId = ResourceId)
  output <- .workmail$describe_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_resource <- workmail_describe_resource

#' Provides information regarding the user
#'
#' @description
#' Provides information regarding the user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_describe_user/](https://www.paws-r-sdk.com/docs/workmail_describe_user/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the user exists.
#' @param UserId &#91;required&#93; The identifier for the user to be described.
#' 
#' The identifier can be the *UserId*, *Username*, or *email*. The following identity formats are available:
#' 
#' -   User ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: user@@domain.tld
#' 
#' -   User name: user
#'
#' @keywords internal
#'
#' @rdname workmail_describe_user
workmail_describe_user <- function(OrganizationId, UserId) {
  op <- new_operation(
    name = "DescribeUser",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$describe_user_input(OrganizationId = OrganizationId, UserId = UserId)
  output <- .workmail$describe_user_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$describe_user <- workmail_describe_user

#' Removes a member from the resource's set of delegates
#'
#' @description
#' Removes a member from the resource's set of delegates.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_disassociate_delegate_from_resource/](https://www.paws-r-sdk.com/docs/workmail_disassociate_delegate_from_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the resource exists.
#' @param ResourceId &#91;required&#93; The identifier of the resource from which delegates' set members are removed.
#' 
#' The identifier can accept *ResourceId*, *Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Email address: resource@@domain.tld
#' 
#' -   Resource name: resource
#' @param EntityId &#91;required&#93; The identifier for the member (user, group) to be removed from the resource's delegates.
#' 
#' The entity ID can accept *UserId or GroupID*, *Username or Groupname*, or *email*.
#' 
#' -   Entity: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity: entity
#'
#' @keywords internal
#'
#' @rdname workmail_disassociate_delegate_from_resource
workmail_disassociate_delegate_from_resource <- function(OrganizationId, ResourceId, EntityId) {
  op <- new_operation(
    name = "DisassociateDelegateFromResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$disassociate_delegate_from_resource_input(OrganizationId = OrganizationId, ResourceId = ResourceId, EntityId = EntityId)
  output <- .workmail$disassociate_delegate_from_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$disassociate_delegate_from_resource <- workmail_disassociate_delegate_from_resource

#' Removes a member from a group
#'
#' @description
#' Removes a member from a group.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_disassociate_member_from_group/](https://www.paws-r-sdk.com/docs/workmail_disassociate_member_from_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the group exists.
#' @param GroupId &#91;required&#93; The identifier for the group from which members are removed.
#' 
#' The identifier can accept *GroupId*, *Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: group@@domain.tld
#' 
#' -   Group name: group
#' @param MemberId &#91;required&#93; The identifier for the member to be removed from the group.
#' 
#' The member ID can accept *UserID or GroupId*, *Username or Groupname*, or *email*.
#' 
#' -   Member ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: member@@domain.tld
#' 
#' -   Member name: member
#'
#' @keywords internal
#'
#' @rdname workmail_disassociate_member_from_group
workmail_disassociate_member_from_group <- function(OrganizationId, GroupId, MemberId) {
  op <- new_operation(
    name = "DisassociateMemberFromGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$disassociate_member_from_group_input(OrganizationId = OrganizationId, GroupId = GroupId, MemberId = MemberId)
  output <- .workmail$disassociate_member_from_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$disassociate_member_from_group <- workmail_disassociate_member_from_group

#' Gets the effects of an organization's access control rules as they apply
#' to a specified IPv4 address, access protocol action, and user ID or
#' impersonation role ID
#'
#' @description
#' Gets the effects of an organization's access control rules as they apply to a specified IPv4 address, access protocol action, and user ID or impersonation role ID. You must provide either the user ID or impersonation role ID. Impersonation role ID can only be used with Action EWS.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_access_control_effect/](https://www.paws-r-sdk.com/docs/workmail_get_access_control_effect/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization.
#' @param IpAddress &#91;required&#93; The IPv4 address.
#' @param Action &#91;required&#93; The access protocol action. Valid values include `ActiveSync`, `AutoDiscover`, `EWS`, `IMAP`, `SMTP`, `WindowsOutlook`, and `WebMail`.
#' @param UserId The user ID.
#' @param ImpersonationRoleId The impersonation role ID.
#'
#' @keywords internal
#'
#' @rdname workmail_get_access_control_effect
workmail_get_access_control_effect <- function(OrganizationId, IpAddress, Action, UserId = NULL, ImpersonationRoleId = NULL) {
  op <- new_operation(
    name = "GetAccessControlEffect",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_access_control_effect_input(OrganizationId = OrganizationId, IpAddress = IpAddress, Action = Action, UserId = UserId, ImpersonationRoleId = ImpersonationRoleId)
  output <- .workmail$get_access_control_effect_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_access_control_effect <- workmail_get_access_control_effect

#' Gets the default retention policy details for the specified organization
#'
#' @description
#' Gets the default retention policy details for the specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_default_retention_policy/](https://www.paws-r-sdk.com/docs/workmail_get_default_retention_policy/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization ID.
#'
#' @keywords internal
#'
#' @rdname workmail_get_default_retention_policy
workmail_get_default_retention_policy <- function(OrganizationId) {
  op <- new_operation(
    name = "GetDefaultRetentionPolicy",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_default_retention_policy_input(OrganizationId = OrganizationId)
  output <- .workmail$get_default_retention_policy_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_default_retention_policy <- workmail_get_default_retention_policy

#' Gets the impersonation role details for the given WorkMail organization
#'
#' @description
#' Gets the impersonation role details for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_impersonation_role/](https://www.paws-r-sdk.com/docs/workmail_get_impersonation_role/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization from which to retrieve the impersonation role.
#' @param ImpersonationRoleId &#91;required&#93; The impersonation role ID to retrieve.
#'
#' @keywords internal
#'
#' @rdname workmail_get_impersonation_role
workmail_get_impersonation_role <- function(OrganizationId, ImpersonationRoleId) {
  op <- new_operation(
    name = "GetImpersonationRole",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_impersonation_role_input(OrganizationId = OrganizationId, ImpersonationRoleId = ImpersonationRoleId)
  output <- .workmail$get_impersonation_role_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_impersonation_role <- workmail_get_impersonation_role

#' Tests whether the given impersonation role can impersonate a target user
#'
#' @description
#' Tests whether the given impersonation role can impersonate a target user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_impersonation_role_effect/](https://www.paws-r-sdk.com/docs/workmail_get_impersonation_role_effect/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization where the impersonation role is defined.
#' @param ImpersonationRoleId &#91;required&#93; The impersonation role ID to test.
#' @param TargetUser &#91;required&#93; The WorkMail organization user chosen to test the impersonation role. The following identity formats are available:
#' 
#' -   User ID: `12345678-1234-1234-1234-123456789012` or `S-1-1-12-1234567890-123456789-123456789-1234`
#' 
#' -   Email address: `user@@domain.tld`
#' 
#' -   User name: `user`
#'
#' @keywords internal
#'
#' @rdname workmail_get_impersonation_role_effect
workmail_get_impersonation_role_effect <- function(OrganizationId, ImpersonationRoleId, TargetUser) {
  op <- new_operation(
    name = "GetImpersonationRoleEffect",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_impersonation_role_effect_input(OrganizationId = OrganizationId, ImpersonationRoleId = ImpersonationRoleId, TargetUser = TargetUser)
  output <- .workmail$get_impersonation_role_effect_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_impersonation_role_effect <- workmail_get_impersonation_role_effect

#' Gets details for a mail domain, including domain records required to
#' configure your domain with recommended security
#'
#' @description
#' Gets details for a mail domain, including domain records required to configure your domain with recommended security.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_mail_domain/](https://www.paws-r-sdk.com/docs/workmail_get_mail_domain/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the domain is retrieved.
#' @param DomainName &#91;required&#93; The domain from which you want to retrieve details.
#'
#' @keywords internal
#'
#' @rdname workmail_get_mail_domain
workmail_get_mail_domain <- function(OrganizationId, DomainName) {
  op <- new_operation(
    name = "GetMailDomain",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_mail_domain_input(OrganizationId = OrganizationId, DomainName = DomainName)
  output <- .workmail$get_mail_domain_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_mail_domain <- workmail_get_mail_domain

#' Requests a user's mailbox details for a specified organization and user
#'
#' @description
#' Requests a user's mailbox details for a specified organization and user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_mailbox_details/](https://www.paws-r-sdk.com/docs/workmail_get_mailbox_details/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization that contains the user whose mailbox details are being requested.
#' @param UserId &#91;required&#93; The identifier for the user whose mailbox details are being requested.
#' 
#' The identifier can be the *UserId*, *Username*, or *email*. The following identity formats are available:
#' 
#' -   User ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: user@@domain.tld
#' 
#' -   User name: user
#'
#' @keywords internal
#'
#' @rdname workmail_get_mailbox_details
workmail_get_mailbox_details <- function(OrganizationId, UserId) {
  op <- new_operation(
    name = "GetMailboxDetails",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_mailbox_details_input(OrganizationId = OrganizationId, UserId = UserId)
  output <- .workmail$get_mailbox_details_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_mailbox_details <- workmail_get_mailbox_details

#' Simulates the effect of the mobile device access rules for the given
#' attributes of a sample access event
#'
#' @description
#' Simulates the effect of the mobile device access rules for the given attributes of a sample access event. Use this method to test the effects of the current set of mobile device access rules for the WorkMail organization for a particular user's attributes.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_mobile_device_access_effect/](https://www.paws-r-sdk.com/docs/workmail_get_mobile_device_access_effect/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization to simulate the access effect for.
#' @param DeviceType Device type the simulated user will report.
#' @param DeviceModel Device model the simulated user will report.
#' @param DeviceOperatingSystem Device operating system the simulated user will report.
#' @param DeviceUserAgent Device user agent the simulated user will report.
#'
#' @keywords internal
#'
#' @rdname workmail_get_mobile_device_access_effect
workmail_get_mobile_device_access_effect <- function(OrganizationId, DeviceType = NULL, DeviceModel = NULL, DeviceOperatingSystem = NULL, DeviceUserAgent = NULL) {
  op <- new_operation(
    name = "GetMobileDeviceAccessEffect",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_mobile_device_access_effect_input(OrganizationId = OrganizationId, DeviceType = DeviceType, DeviceModel = DeviceModel, DeviceOperatingSystem = DeviceOperatingSystem, DeviceUserAgent = DeviceUserAgent)
  output <- .workmail$get_mobile_device_access_effect_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_mobile_device_access_effect <- workmail_get_mobile_device_access_effect

#' Gets the mobile device access override for the given WorkMail
#' organization, user, and device
#'
#' @description
#' Gets the mobile device access override for the given WorkMail organization, user, and device.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_mobile_device_access_override/](https://www.paws-r-sdk.com/docs/workmail_get_mobile_device_access_override/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization to which you want to apply the override.
#' @param UserId &#91;required&#93; Identifies the WorkMail user for the override. Accepts the following types of user identities:
#' 
#' -   User ID: `12345678-1234-1234-1234-123456789012` or `S-1-1-12-1234567890-123456789-123456789-1234`
#' 
#' -   Email address: `user@@domain.tld`
#' 
#' -   User name: `user`
#' @param DeviceId &#91;required&#93; The mobile device to which the override applies. `DeviceId` is case insensitive.
#'
#' @keywords internal
#'
#' @rdname workmail_get_mobile_device_access_override
workmail_get_mobile_device_access_override <- function(OrganizationId, UserId, DeviceId) {
  op <- new_operation(
    name = "GetMobileDeviceAccessOverride",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_mobile_device_access_override_input(OrganizationId = OrganizationId, UserId = UserId, DeviceId = DeviceId)
  output <- .workmail$get_mobile_device_access_override_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_mobile_device_access_override <- workmail_get_mobile_device_access_override

#' Requests details of a specific Personal Access Token within the WorkMail
#' organization
#'
#' @description
#' Requests details of a specific Personal Access Token within the WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_get_personal_access_token_metadata/](https://www.paws-r-sdk.com/docs/workmail_get_personal_access_token_metadata/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The Organization ID.
#' @param PersonalAccessTokenId &#91;required&#93; The Personal Access Token ID.
#'
#' @keywords internal
#'
#' @rdname workmail_get_personal_access_token_metadata
workmail_get_personal_access_token_metadata <- function(OrganizationId, PersonalAccessTokenId) {
  op <- new_operation(
    name = "GetPersonalAccessTokenMetadata",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$get_personal_access_token_metadata_input(OrganizationId = OrganizationId, PersonalAccessTokenId = PersonalAccessTokenId)
  output <- .workmail$get_personal_access_token_metadata_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$get_personal_access_token_metadata <- workmail_get_personal_access_token_metadata

#' Lists the access control rules for the specified organization
#'
#' @description
#' Lists the access control rules for the specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_access_control_rules/](https://www.paws-r-sdk.com/docs/workmail_list_access_control_rules/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization.
#'
#' @keywords internal
#'
#' @rdname workmail_list_access_control_rules
workmail_list_access_control_rules <- function(OrganizationId) {
  op <- new_operation(
    name = "ListAccessControlRules",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$list_access_control_rules_input(OrganizationId = OrganizationId)
  output <- .workmail$list_access_control_rules_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_access_control_rules <- workmail_list_access_control_rules

#' Creates a paginated call to list the aliases associated with a given
#' entity
#'
#' @description
#' Creates a paginated call to list the aliases associated with a given entity.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_aliases/](https://www.paws-r-sdk.com/docs/workmail_list_aliases/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the entity exists.
#' @param EntityId &#91;required&#93; The identifier for the entity for which to list the aliases.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_aliases
workmail_list_aliases <- function(OrganizationId, EntityId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListAliases",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "Aliases", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_aliases_input(OrganizationId = OrganizationId, EntityId = EntityId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_aliases_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_aliases <- workmail_list_aliases

#' List all the AvailabilityConfiguration's for the given WorkMail
#' organization
#'
#' @description
#' List all the `AvailabilityConfiguration`'s for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_availability_configurations/](https://www.paws-r-sdk.com/docs/workmail_list_availability_configurations/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the `AvailabilityConfiguration`'s will be listed.
#' @param MaxResults The maximum number of results to return in a single call.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not require a token.
#'
#' @keywords internal
#'
#' @rdname workmail_list_availability_configurations
workmail_list_availability_configurations <- function(OrganizationId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListAvailabilityConfigurations",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults", result_key = "AvailabilityConfigurations"),
    stream_api = FALSE
  )
  input <- .workmail$list_availability_configurations_input(OrganizationId = OrganizationId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .workmail$list_availability_configurations_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_availability_configurations <- workmail_list_availability_configurations

#' Returns an overview of the members of a group
#'
#' @description
#' Returns an overview of the members of a group. Users and groups can be members of a group.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_group_members/](https://www.paws-r-sdk.com/docs/workmail_list_group_members/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the group exists.
#' @param GroupId &#91;required&#93; The identifier for the group to which the members (users or groups) are associated.
#' 
#' The identifier can accept *GroupId*, *Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: group@@domain.tld
#' 
#' -   Group name: group
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_group_members
workmail_list_group_members <- function(OrganizationId, GroupId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListGroupMembers",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "Members", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_group_members_input(OrganizationId = OrganizationId, GroupId = GroupId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_group_members_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_group_members <- workmail_list_group_members

#' Returns summaries of the organization's groups
#'
#' @description
#' Returns summaries of the organization's groups.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_groups/](https://www.paws-r-sdk.com/docs/workmail_list_groups/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the groups exist.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#' @param Filters Limit the search results based on the filter criteria. Only one filter per request is supported.
#'
#' @keywords internal
#'
#' @rdname workmail_list_groups
workmail_list_groups <- function(OrganizationId, NextToken = NULL, MaxResults = NULL, Filters = NULL) {
  op <- new_operation(
    name = "ListGroups",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "Groups", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_groups_input(OrganizationId = OrganizationId, NextToken = NextToken, MaxResults = MaxResults, Filters = Filters)
  output <- .workmail$list_groups_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_groups <- workmail_list_groups

#' Returns all the groups to which an entity belongs
#'
#' @description
#' Returns all the groups to which an entity belongs.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_groups_for_entity/](https://www.paws-r-sdk.com/docs/workmail_list_groups_for_entity/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the entity exists.
#' @param EntityId &#91;required&#93; The identifier for the entity.
#' 
#' The entity ID can accept *UserId or GroupID*, *Username or Groupname*, or *email*.
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param Filters Limit the search results based on the filter criteria.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_groups_for_entity
workmail_list_groups_for_entity <- function(OrganizationId, EntityId, Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListGroupsForEntity",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_groups_for_entity_input(OrganizationId = OrganizationId, EntityId = EntityId, Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_groups_for_entity_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_groups_for_entity <- workmail_list_groups_for_entity

#' Lists all the impersonation roles for the given WorkMail organization
#'
#' @description
#' Lists all the impersonation roles for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_impersonation_roles/](https://www.paws-r-sdk.com/docs/workmail_list_impersonation_roles/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization to which the listed impersonation roles belong.
#' @param NextToken The token used to retrieve the next page of results. The first call doesn't require a token.
#' @param MaxResults The maximum number of results returned in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_impersonation_roles
workmail_list_impersonation_roles <- function(OrganizationId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListImpersonationRoles",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_impersonation_roles_input(OrganizationId = OrganizationId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_impersonation_roles_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_impersonation_roles <- workmail_list_impersonation_roles

#' Lists the mail domains in a given WorkMail organization
#'
#' @description
#' Lists the mail domains in a given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_mail_domains/](https://www.paws-r-sdk.com/docs/workmail_list_mail_domains/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which to list domains.
#' @param MaxResults The maximum number of results to return in a single call.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not require a token.
#'
#' @keywords internal
#'
#' @rdname workmail_list_mail_domains
workmail_list_mail_domains <- function(OrganizationId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListMailDomains",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_mail_domains_input(OrganizationId = OrganizationId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .workmail$list_mail_domains_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_mail_domains <- workmail_list_mail_domains

#' Lists the mailbox export jobs started for the specified organization
#' within the last seven days
#'
#' @description
#' Lists the mailbox export jobs started for the specified organization within the last seven days.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_mailbox_export_jobs/](https://www.paws-r-sdk.com/docs/workmail_list_mailbox_export_jobs/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization ID.
#' @param NextToken The token to use to retrieve the next page of results.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_mailbox_export_jobs
workmail_list_mailbox_export_jobs <- function(OrganizationId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListMailboxExportJobs",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_mailbox_export_jobs_input(OrganizationId = OrganizationId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_mailbox_export_jobs_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_mailbox_export_jobs <- workmail_list_mailbox_export_jobs

#' Lists the mailbox permissions associated with a user, group, or resource
#' mailbox
#'
#' @description
#' Lists the mailbox permissions associated with a user, group, or resource mailbox.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_mailbox_permissions/](https://www.paws-r-sdk.com/docs/workmail_list_mailbox_permissions/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier of the organization under which the user, group, or resource exists.
#' @param EntityId &#91;required&#93; The identifier of the user, or resource for which to list mailbox permissions.
#' 
#' The entity ID can accept *UserId or ResourceId*, *Username or Resourcename*, or *email*.
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, or r-0123456789a0123456789b0123456789
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_mailbox_permissions
workmail_list_mailbox_permissions <- function(OrganizationId, EntityId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListMailboxPermissions",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", limit_key = "MaxResults", output_token = "NextToken", result_key = "Permissions"),
    stream_api = FALSE
  )
  input <- .workmail$list_mailbox_permissions_input(OrganizationId = OrganizationId, EntityId = EntityId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_mailbox_permissions_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_mailbox_permissions <- workmail_list_mailbox_permissions

#' Lists all the mobile device access overrides for any given combination
#' of WorkMail organization, user, or device
#'
#' @description
#' Lists all the mobile device access overrides for any given combination of WorkMail organization, user, or device.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_mobile_device_access_overrides/](https://www.paws-r-sdk.com/docs/workmail_list_mobile_device_access_overrides/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which to list mobile device access overrides.
#' @param UserId The WorkMail user under which you list the mobile device access overrides. Accepts the following types of user identities:
#' 
#' -   User ID: `12345678-1234-1234-1234-123456789012` or `S-1-1-12-1234567890-123456789-123456789-1234`
#' 
#' -   Email address: `user@@domain.tld`
#' 
#' -   User name: `user`
#' @param DeviceId The mobile device to which the access override applies.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not require a token.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_mobile_device_access_overrides
workmail_list_mobile_device_access_overrides <- function(OrganizationId, UserId = NULL, DeviceId = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListMobileDeviceAccessOverrides",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_mobile_device_access_overrides_input(OrganizationId = OrganizationId, UserId = UserId, DeviceId = DeviceId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_mobile_device_access_overrides_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_mobile_device_access_overrides <- workmail_list_mobile_device_access_overrides

#' Lists the mobile device access rules for the specified WorkMail
#' organization
#'
#' @description
#' Lists the mobile device access rules for the specified WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_mobile_device_access_rules/](https://www.paws-r-sdk.com/docs/workmail_list_mobile_device_access_rules/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which to list the rules.
#'
#' @keywords internal
#'
#' @rdname workmail_list_mobile_device_access_rules
workmail_list_mobile_device_access_rules <- function(OrganizationId) {
  op <- new_operation(
    name = "ListMobileDeviceAccessRules",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$list_mobile_device_access_rules_input(OrganizationId = OrganizationId)
  output <- .workmail$list_mobile_device_access_rules_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_mobile_device_access_rules <- workmail_list_mobile_device_access_rules

#' Returns summaries of the customer's organizations
#'
#' @description
#' Returns summaries of the customer's organizations.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_organizations/](https://www.paws-r-sdk.com/docs/workmail_list_organizations/) for full documentation.
#'
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#'
#' @keywords internal
#'
#' @rdname workmail_list_organizations
workmail_list_organizations <- function(NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListOrganizations",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "OrganizationSummaries", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_organizations_input(NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_organizations_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_organizations <- workmail_list_organizations

#' Returns a summary of your Personal Access Tokens
#'
#' @description
#' Returns a summary of your Personal Access Tokens.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_personal_access_tokens/](https://www.paws-r-sdk.com/docs/workmail_list_personal_access_tokens/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The Organization ID.
#' @param UserId The WorkMail User ID.
#' @param NextToken The token from the previous response to query the next page.
#' @param MaxResults The maximum amount of items that should be returned in a response.
#'
#' @keywords internal
#'
#' @rdname workmail_list_personal_access_tokens
workmail_list_personal_access_tokens <- function(OrganizationId, UserId = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListPersonalAccessTokens",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", output_token = "NextToken", limit_key = "MaxResults", result_key = "PersonalAccessTokenSummaries"),
    stream_api = FALSE
  )
  input <- .workmail$list_personal_access_tokens_input(OrganizationId = OrganizationId, UserId = UserId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_personal_access_tokens_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_personal_access_tokens <- workmail_list_personal_access_tokens

#' Lists the delegates associated with a resource
#'
#' @description
#' Lists the delegates associated with a resource. Users and groups can be resource delegates and answer requests on behalf of the resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_resource_delegates/](https://www.paws-r-sdk.com/docs/workmail_list_resource_delegates/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization that contains the resource for which delegates are listed.
#' @param ResourceId &#91;required&#93; The identifier for the resource whose delegates are listed.
#' 
#' The identifier can accept *ResourceId*, *Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Email address: resource@@domain.tld
#' 
#' -   Resource name: resource
#' @param NextToken The token used to paginate through the delegates associated with a resource.
#' @param MaxResults The number of maximum results in a page.
#'
#' @keywords internal
#'
#' @rdname workmail_list_resource_delegates
workmail_list_resource_delegates <- function(OrganizationId, ResourceId, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListResourceDelegates",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(input_token = "NextToken", limit_key = "MaxResults", output_token = "NextToken", result_key = "Delegates"),
    stream_api = FALSE
  )
  input <- .workmail$list_resource_delegates_input(OrganizationId = OrganizationId, ResourceId = ResourceId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .workmail$list_resource_delegates_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_resource_delegates <- workmail_list_resource_delegates

#' Returns summaries of the organization's resources
#'
#' @description
#' Returns summaries of the organization's resources.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_resources/](https://www.paws-r-sdk.com/docs/workmail_list_resources/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the resources exist.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#' @param Filters Limit the resource search results based on the filter criteria. You can only use one filter per request.
#'
#' @keywords internal
#'
#' @rdname workmail_list_resources
workmail_list_resources <- function(OrganizationId, NextToken = NULL, MaxResults = NULL, Filters = NULL) {
  op <- new_operation(
    name = "ListResources",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "Resources", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_resources_input(OrganizationId = OrganizationId, NextToken = NextToken, MaxResults = MaxResults, Filters = Filters)
  output <- .workmail$list_resources_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_resources <- workmail_list_resources

#' Lists the tags applied to an WorkMail organization resource
#'
#' @description
#' Lists the tags applied to an WorkMail organization resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_tags_for_resource/](https://www.paws-r-sdk.com/docs/workmail_list_tags_for_resource/) for full documentation.
#'
#' @param ResourceARN &#91;required&#93; The resource ARN.
#'
#' @keywords internal
#'
#' @rdname workmail_list_tags_for_resource
workmail_list_tags_for_resource <- function(ResourceARN) {
  op <- new_operation(
    name = "ListTagsForResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$list_tags_for_resource_input(ResourceARN = ResourceARN)
  output <- .workmail$list_tags_for_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_tags_for_resource <- workmail_list_tags_for_resource

#' Returns summaries of the organization's users
#'
#' @description
#' Returns summaries of the organization's users.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_list_users/](https://www.paws-r-sdk.com/docs/workmail_list_users/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the users exist.
#' @param NextToken The token to use to retrieve the next page of results. The first call does not contain any tokens.
#' @param MaxResults The maximum number of results to return in a single call.
#' @param Filters Limit the user search results based on the filter criteria. You can only use one filter per request.
#'
#' @keywords internal
#'
#' @rdname workmail_list_users
workmail_list_users <- function(OrganizationId, NextToken = NULL, MaxResults = NULL, Filters = NULL) {
  op <- new_operation(
    name = "ListUsers",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(result_key = "Users", output_token = "NextToken", input_token = "NextToken", limit_key = "MaxResults"),
    stream_api = FALSE
  )
  input <- .workmail$list_users_input(OrganizationId = OrganizationId, NextToken = NextToken, MaxResults = MaxResults, Filters = Filters)
  output <- .workmail$list_users_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$list_users <- workmail_list_users

#' Adds a new access control rule for the specified organization
#'
#' @description
#' Adds a new access control rule for the specified organization. The rule allows or denies access to the organization for the specified IPv4 addresses, access protocol actions, user IDs and impersonation IDs. Adding a new rule with the same name as an existing rule replaces the older rule.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_access_control_rule/](https://www.paws-r-sdk.com/docs/workmail_put_access_control_rule/) for full documentation.
#'
#' @param Name &#91;required&#93; The rule name.
#' @param Effect &#91;required&#93; The rule effect.
#' @param Description &#91;required&#93; The rule description.
#' @param IpRanges IPv4 CIDR ranges to include in the rule.
#' @param NotIpRanges IPv4 CIDR ranges to exclude from the rule.
#' @param Actions Access protocol actions to include in the rule. Valid values include `ActiveSync`, `AutoDiscover`, `EWS`, `IMAP`, `SMTP`, `WindowsOutlook`, and `WebMail`.
#' @param NotActions Access protocol actions to exclude from the rule. Valid values include `ActiveSync`, `AutoDiscover`, `EWS`, `IMAP`, `SMTP`, `WindowsOutlook`, and `WebMail`.
#' @param UserIds User IDs to include in the rule.
#' @param NotUserIds User IDs to exclude from the rule.
#' @param OrganizationId &#91;required&#93; The identifier of the organization.
#' @param ImpersonationRoleIds Impersonation role IDs to include in the rule.
#' @param NotImpersonationRoleIds Impersonation role IDs to exclude from the rule.
#'
#' @keywords internal
#'
#' @rdname workmail_put_access_control_rule
workmail_put_access_control_rule <- function(Name, Effect, Description, IpRanges = NULL, NotIpRanges = NULL, Actions = NULL, NotActions = NULL, UserIds = NULL, NotUserIds = NULL, OrganizationId, ImpersonationRoleIds = NULL, NotImpersonationRoleIds = NULL) {
  op <- new_operation(
    name = "PutAccessControlRule",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_access_control_rule_input(Name = Name, Effect = Effect, Description = Description, IpRanges = IpRanges, NotIpRanges = NotIpRanges, Actions = Actions, NotActions = NotActions, UserIds = UserIds, NotUserIds = NotUserIds, OrganizationId = OrganizationId, ImpersonationRoleIds = ImpersonationRoleIds, NotImpersonationRoleIds = NotImpersonationRoleIds)
  output <- .workmail$put_access_control_rule_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_access_control_rule <- workmail_put_access_control_rule

#' Creates or updates the email monitoring configuration for a specified
#' organization
#'
#' @description
#' Creates or updates the email monitoring configuration for a specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_email_monitoring_configuration/](https://www.paws-r-sdk.com/docs/workmail_put_email_monitoring_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The ID of the organization for which the email monitoring configuration is set.
#' @param RoleArn The Amazon Resource Name (ARN) of the IAM Role associated with the email monitoring configuration. If absent, the IAM Role Arn of AWSServiceRoleForAmazonWorkMailEvents will be used.
#' @param LogGroupArn &#91;required&#93; The Amazon Resource Name (ARN) of the CloudWatch Log group associated with the email monitoring configuration.
#'
#' @keywords internal
#'
#' @rdname workmail_put_email_monitoring_configuration
workmail_put_email_monitoring_configuration <- function(OrganizationId, RoleArn = NULL, LogGroupArn) {
  op <- new_operation(
    name = "PutEmailMonitoringConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_email_monitoring_configuration_input(OrganizationId = OrganizationId, RoleArn = RoleArn, LogGroupArn = LogGroupArn)
  output <- .workmail$put_email_monitoring_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_email_monitoring_configuration <- workmail_put_email_monitoring_configuration

#' Enables integration between IAM Identity Center (IdC) and WorkMail to
#' proxy authentication requests for mailbox users
#'
#' @description
#' Enables integration between IAM Identity Center (IdC) and WorkMail to proxy authentication requests for mailbox users. You can connect your IdC directory or your external directory to WorkMail through IdC and manage access to WorkMail mailboxes in a single place. For enhanced protection, you could enable Multifactor Authentication (MFA) and Personal Access Tokens.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_identity_provider_configuration/](https://www.paws-r-sdk.com/docs/workmail_put_identity_provider_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The ID of the WorkMail Organization.
#' @param AuthenticationMode &#91;required&#93; The authentication mode used in WorkMail.
#' @param IdentityCenterConfiguration &#91;required&#93; The details of the IAM Identity Center configuration.
#' @param PersonalAccessTokenConfiguration &#91;required&#93; The details of the Personal Access Token configuration.
#'
#' @keywords internal
#'
#' @rdname workmail_put_identity_provider_configuration
workmail_put_identity_provider_configuration <- function(OrganizationId, AuthenticationMode, IdentityCenterConfiguration, PersonalAccessTokenConfiguration) {
  op <- new_operation(
    name = "PutIdentityProviderConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_identity_provider_configuration_input(OrganizationId = OrganizationId, AuthenticationMode = AuthenticationMode, IdentityCenterConfiguration = IdentityCenterConfiguration, PersonalAccessTokenConfiguration = PersonalAccessTokenConfiguration)
  output <- .workmail$put_identity_provider_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_identity_provider_configuration <- workmail_put_identity_provider_configuration

#' Enables or disables a DMARC policy for a given organization
#'
#' @description
#' Enables or disables a DMARC policy for a given organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_inbound_dmarc_settings/](https://www.paws-r-sdk.com/docs/workmail_put_inbound_dmarc_settings/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The ID of the organization that you are applying the DMARC policy to.
#' @param Enforced &#91;required&#93; Enforces or suspends a policy after it's applied.
#'
#' @keywords internal
#'
#' @rdname workmail_put_inbound_dmarc_settings
workmail_put_inbound_dmarc_settings <- function(OrganizationId, Enforced) {
  op <- new_operation(
    name = "PutInboundDmarcSettings",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_inbound_dmarc_settings_input(OrganizationId = OrganizationId, Enforced = Enforced)
  output <- .workmail$put_inbound_dmarc_settings_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_inbound_dmarc_settings <- workmail_put_inbound_dmarc_settings

#' Sets permissions for a user, group, or resource
#'
#' @description
#' Sets permissions for a user, group, or resource. This replaces any pre-existing permissions.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_mailbox_permissions/](https://www.paws-r-sdk.com/docs/workmail_put_mailbox_permissions/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier of the organization under which the user, group, or resource exists.
#' @param EntityId &#91;required&#93; The identifier of the user or resource for which to update mailbox permissions.
#' 
#' The identifier can be *UserId, ResourceID, or Group Id*, *Username, Resourcename, or Groupname*, or *email*.
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param GranteeId &#91;required&#93; The identifier of the user, group, or resource to which to grant the permissions.
#' 
#' The identifier can be *UserId, ResourceID, or Group Id*, *Username, Resourcename, or Groupname*, or *email*.
#' 
#' -   Grantee ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: grantee@@domain.tld
#' 
#' -   Grantee name: grantee
#' @param PermissionValues &#91;required&#93; The permissions granted to the grantee. SEND_AS allows the grantee to send email as the owner of the mailbox (the grantee is not mentioned on these emails). SEND_ON_BEHALF allows the grantee to send email on behalf of the owner of the mailbox (the grantee is not mentioned as the physical sender of these emails). FULL_ACCESS allows the grantee full access to the mailbox, irrespective of other folder-level permissions set on the mailbox.
#'
#' @keywords internal
#'
#' @rdname workmail_put_mailbox_permissions
workmail_put_mailbox_permissions <- function(OrganizationId, EntityId, GranteeId, PermissionValues) {
  op <- new_operation(
    name = "PutMailboxPermissions",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_mailbox_permissions_input(OrganizationId = OrganizationId, EntityId = EntityId, GranteeId = GranteeId, PermissionValues = PermissionValues)
  output <- .workmail$put_mailbox_permissions_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_mailbox_permissions <- workmail_put_mailbox_permissions

#' Creates or updates a mobile device access override for the given
#' WorkMail organization, user, and device
#'
#' @description
#' Creates or updates a mobile device access override for the given WorkMail organization, user, and device.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_mobile_device_access_override/](https://www.paws-r-sdk.com/docs/workmail_put_mobile_device_access_override/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; Identifies the WorkMail organization for which you create the override.
#' @param UserId &#91;required&#93; The WorkMail user for which you create the override. Accepts the following types of user identities:
#' 
#' -   User ID: `12345678-1234-1234-1234-123456789012` or `S-1-1-12-1234567890-123456789-123456789-1234`
#' 
#' -   Email address: `user@@domain.tld`
#' 
#' -   User name: `user`
#' @param DeviceId &#91;required&#93; The mobile device for which you create the override. `DeviceId` is case insensitive.
#' @param Effect &#91;required&#93; The effect of the override, `ALLOW` or `DENY`.
#' @param Description A description of the override.
#'
#' @keywords internal
#'
#' @rdname workmail_put_mobile_device_access_override
workmail_put_mobile_device_access_override <- function(OrganizationId, UserId, DeviceId, Effect, Description = NULL) {
  op <- new_operation(
    name = "PutMobileDeviceAccessOverride",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_mobile_device_access_override_input(OrganizationId = OrganizationId, UserId = UserId, DeviceId = DeviceId, Effect = Effect, Description = Description)
  output <- .workmail$put_mobile_device_access_override_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_mobile_device_access_override <- workmail_put_mobile_device_access_override

#' Puts a retention policy to the specified organization
#'
#' @description
#' Puts a retention policy to the specified organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_put_retention_policy/](https://www.paws-r-sdk.com/docs/workmail_put_retention_policy/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization ID.
#' @param Id The retention policy ID.
#' @param Name &#91;required&#93; The retention policy name.
#' @param Description The retention policy description.
#' @param FolderConfigurations &#91;required&#93; The retention policy folder configurations.
#'
#' @keywords internal
#'
#' @rdname workmail_put_retention_policy
workmail_put_retention_policy <- function(OrganizationId, Id = NULL, Name, Description = NULL, FolderConfigurations) {
  op <- new_operation(
    name = "PutRetentionPolicy",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$put_retention_policy_input(OrganizationId = OrganizationId, Id = Id, Name = Name, Description = Description, FolderConfigurations = FolderConfigurations)
  output <- .workmail$put_retention_policy_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$put_retention_policy <- workmail_put_retention_policy

#' Registers a new domain in WorkMail and SES, and configures it for use by
#' WorkMail
#'
#' @description
#' Registers a new domain in WorkMail and SES, and configures it for use by WorkMail. Emails received by SES for this domain are routed to the specified WorkMail organization, and WorkMail has permanent permission to use the specified domain for sending your users' emails.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_register_mail_domain/](https://www.paws-r-sdk.com/docs/workmail_register_mail_domain/) for full documentation.
#'
#' @param ClientToken Idempotency token used when retrying requests.
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which you're creating the domain.
#' @param DomainName &#91;required&#93; The name of the mail domain to create in WorkMail and SES.
#'
#' @keywords internal
#'
#' @rdname workmail_register_mail_domain
workmail_register_mail_domain <- function(ClientToken = NULL, OrganizationId, DomainName) {
  op <- new_operation(
    name = "RegisterMailDomain",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$register_mail_domain_input(ClientToken = ClientToken, OrganizationId = OrganizationId, DomainName = DomainName)
  output <- .workmail$register_mail_domain_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$register_mail_domain <- workmail_register_mail_domain

#' Registers an existing and disabled user, group, or resource for WorkMail
#' use by associating a mailbox and calendaring capabilities
#'
#' @description
#' Registers an existing and disabled user, group, or resource for WorkMail use by associating a mailbox and calendaring capabilities. It performs no change if the user, group, or resource is enabled and fails if the user, group, or resource is deleted. This operation results in the accumulation of costs. For more information, see [Pricing](https://aws.amazon.com/workmail/pricing/). The equivalent console functionality for this operation is *Enable*.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_register_to_work_mail/](https://www.paws-r-sdk.com/docs/workmail_register_to_work_mail/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the user, group, or resource exists.
#' @param EntityId &#91;required&#93; The identifier for the user, group, or resource to be updated.
#' 
#' The identifier can accept *UserId, ResourceId, or GroupId*, or *Username, Resourcename, or Groupname*. The following identity formats are available:
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Entity name: entity
#' @param Email &#91;required&#93; The email for the user, group, or resource to be updated.
#'
#' @keywords internal
#'
#' @rdname workmail_register_to_work_mail
workmail_register_to_work_mail <- function(OrganizationId, EntityId, Email) {
  op <- new_operation(
    name = "RegisterToWorkMail",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$register_to_work_mail_input(OrganizationId = OrganizationId, EntityId = EntityId, Email = Email)
  output <- .workmail$register_to_work_mail_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$register_to_work_mail <- workmail_register_to_work_mail

#' Allows the administrator to reset the password for a user
#'
#' @description
#' Allows the administrator to reset the password for a user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_reset_password/](https://www.paws-r-sdk.com/docs/workmail_reset_password/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier of the organization that contains the user for which the password is reset.
#' @param UserId &#91;required&#93; The identifier of the user for whom the password is reset.
#' @param Password &#91;required&#93; The new password for the user.
#'
#' @keywords internal
#'
#' @rdname workmail_reset_password
workmail_reset_password <- function(OrganizationId, UserId, Password) {
  op <- new_operation(
    name = "ResetPassword",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$reset_password_input(OrganizationId = OrganizationId, UserId = UserId, Password = Password)
  output <- .workmail$reset_password_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$reset_password <- workmail_reset_password

#' Starts a mailbox export job to export MIME-format email messages and
#' calendar items from the specified mailbox to the specified Amazon Simple
#' Storage Service (Amazon S3) bucket
#'
#' @description
#' Starts a mailbox export job to export MIME-format email messages and calendar items from the specified mailbox to the specified Amazon Simple Storage Service (Amazon S3) bucket. For more information, see [Exporting mailbox content](https://docs.aws.amazon.com/workmail/latest/adminguide/mail-export.html) in the *WorkMail Administrator Guide*.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_start_mailbox_export_job/](https://www.paws-r-sdk.com/docs/workmail_start_mailbox_export_job/) for full documentation.
#'
#' @param ClientToken &#91;required&#93; The idempotency token for the client request.
#' @param OrganizationId &#91;required&#93; The identifier associated with the organization.
#' @param EntityId &#91;required&#93; The identifier of the user or resource associated with the mailbox.
#' 
#' The identifier can accept *UserId or ResourceId*, *Username or Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789 , or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param Description The mailbox export job description.
#' @param RoleArn &#91;required&#93; The ARN of the AWS Identity and Access Management (IAM) role that grants write permission to the S3 bucket.
#' @param KmsKeyArn &#91;required&#93; The Amazon Resource Name (ARN) of the symmetric AWS Key Management Service (AWS KMS) key that encrypts the exported mailbox content.
#' @param S3BucketName &#91;required&#93; The name of the S3 bucket.
#' @param S3Prefix &#91;required&#93; The S3 bucket prefix.
#'
#' @keywords internal
#'
#' @rdname workmail_start_mailbox_export_job
workmail_start_mailbox_export_job <- function(ClientToken, OrganizationId, EntityId, Description = NULL, RoleArn, KmsKeyArn, S3BucketName, S3Prefix) {
  op <- new_operation(
    name = "StartMailboxExportJob",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$start_mailbox_export_job_input(ClientToken = ClientToken, OrganizationId = OrganizationId, EntityId = EntityId, Description = Description, RoleArn = RoleArn, KmsKeyArn = KmsKeyArn, S3BucketName = S3BucketName, S3Prefix = S3Prefix)
  output <- .workmail$start_mailbox_export_job_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$start_mailbox_export_job <- workmail_start_mailbox_export_job

#' Applies the specified tags to the specified WorkMailorganization
#' resource
#'
#' @description
#' Applies the specified tags to the specified WorkMailorganization resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_tag_resource/](https://www.paws-r-sdk.com/docs/workmail_tag_resource/) for full documentation.
#'
#' @param ResourceARN &#91;required&#93; The resource ARN.
#' @param Tags &#91;required&#93; The tag key-value pairs.
#'
#' @keywords internal
#'
#' @rdname workmail_tag_resource
workmail_tag_resource <- function(ResourceARN, Tags) {
  op <- new_operation(
    name = "TagResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$tag_resource_input(ResourceARN = ResourceARN, Tags = Tags)
  output <- .workmail$tag_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$tag_resource <- workmail_tag_resource

#' Performs a test on an availability provider to ensure that access is
#' allowed
#'
#' @description
#' Performs a test on an availability provider to ensure that access is allowed. For EWS, it verifies the provided credentials can be used to successfully log in. For Lambda, it verifies that the Lambda function can be invoked and that the resource access policy was configured to deny anonymous access. An anonymous invocation is one done without providing either a `SourceArn` or `SourceAccount` header.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_test_availability_configuration/](https://www.paws-r-sdk.com/docs/workmail_test_availability_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization where the availability provider will be tested.
#' @param DomainName The domain to which the provider applies. If this field is provided, a stored availability provider associated to this domain name will be tested.
#' @param EwsProvider Describes an EWS based availability provider. This is only used as input to the service.
#' @param LambdaProvider Describes a Lambda based availability provider.
#'
#' @keywords internal
#'
#' @rdname workmail_test_availability_configuration
workmail_test_availability_configuration <- function(OrganizationId, DomainName = NULL, EwsProvider = NULL, LambdaProvider = NULL) {
  op <- new_operation(
    name = "TestAvailabilityConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$test_availability_configuration_input(OrganizationId = OrganizationId, DomainName = DomainName, EwsProvider = EwsProvider, LambdaProvider = LambdaProvider)
  output <- .workmail$test_availability_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$test_availability_configuration <- workmail_test_availability_configuration

#' Untags the specified tags from the specified WorkMail organization
#' resource
#'
#' @description
#' Untags the specified tags from the specified WorkMail organization resource.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_untag_resource/](https://www.paws-r-sdk.com/docs/workmail_untag_resource/) for full documentation.
#'
#' @param ResourceARN &#91;required&#93; The resource ARN.
#' @param TagKeys &#91;required&#93; The tag keys.
#'
#' @keywords internal
#'
#' @rdname workmail_untag_resource
workmail_untag_resource <- function(ResourceARN, TagKeys) {
  op <- new_operation(
    name = "UntagResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$untag_resource_input(ResourceARN = ResourceARN, TagKeys = TagKeys)
  output <- .workmail$untag_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$untag_resource <- workmail_untag_resource

#' Updates an existing AvailabilityConfiguration for the given WorkMail
#' organization and domain
#'
#' @description
#' Updates an existing `AvailabilityConfiguration` for the given WorkMail organization and domain.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_availability_configuration/](https://www.paws-r-sdk.com/docs/workmail_update_availability_configuration/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which the `AvailabilityConfiguration` will be updated.
#' @param DomainName &#91;required&#93; The domain to which the provider applies the availability configuration.
#' @param EwsProvider The EWS availability provider definition. The request must contain exactly one provider definition, either `EwsProvider` or `LambdaProvider`. The previously stored provider will be overridden by the one provided.
#' @param LambdaProvider The Lambda availability provider definition. The request must contain exactly one provider definition, either `EwsProvider` or `LambdaProvider`. The previously stored provider will be overridden by the one provided.
#'
#' @keywords internal
#'
#' @rdname workmail_update_availability_configuration
workmail_update_availability_configuration <- function(OrganizationId, DomainName, EwsProvider = NULL, LambdaProvider = NULL) {
  op <- new_operation(
    name = "UpdateAvailabilityConfiguration",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_availability_configuration_input(OrganizationId = OrganizationId, DomainName = DomainName, EwsProvider = EwsProvider, LambdaProvider = LambdaProvider)
  output <- .workmail$update_availability_configuration_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_availability_configuration <- workmail_update_availability_configuration

#' Updates the default mail domain for an organization
#'
#' @description
#' Updates the default mail domain for an organization. The default mail domain is used by the WorkMail AWS Console to suggest an email address when enabling a mail user. You can only have one default domain.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_default_mail_domain/](https://www.paws-r-sdk.com/docs/workmail_update_default_mail_domain/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization for which to list domains.
#' @param DomainName &#91;required&#93; The domain name that will become the default domain.
#'
#' @keywords internal
#'
#' @rdname workmail_update_default_mail_domain
workmail_update_default_mail_domain <- function(OrganizationId, DomainName) {
  op <- new_operation(
    name = "UpdateDefaultMailDomain",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_default_mail_domain_input(OrganizationId = OrganizationId, DomainName = DomainName)
  output <- .workmail$update_default_mail_domain_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_default_mail_domain <- workmail_update_default_mail_domain

#' Updates attributes in a group
#'
#' @description
#' Updates attributes in a group.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_group/](https://www.paws-r-sdk.com/docs/workmail_update_group/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the group exists.
#' @param GroupId &#91;required&#93; The identifier for the group to be updated.
#' 
#' The identifier can accept *GroupId*, *Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Group ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: group@@domain.tld
#' 
#' -   Group name: group
#' @param HiddenFromGlobalAddressList If enabled, the group is hidden from the global address list.
#'
#' @keywords internal
#'
#' @rdname workmail_update_group
workmail_update_group <- function(OrganizationId, GroupId, HiddenFromGlobalAddressList = NULL) {
  op <- new_operation(
    name = "UpdateGroup",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_group_input(OrganizationId = OrganizationId, GroupId = GroupId, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList)
  output <- .workmail$update_group_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_group <- workmail_update_group

#' Updates an impersonation role for the given WorkMail organization
#'
#' @description
#' Updates an impersonation role for the given WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_impersonation_role/](https://www.paws-r-sdk.com/docs/workmail_update_impersonation_role/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization that contains the impersonation role to update.
#' @param ImpersonationRoleId &#91;required&#93; The ID of the impersonation role to update.
#' @param Name &#91;required&#93; The updated impersonation role name.
#' @param Type &#91;required&#93; The updated impersonation role type.
#' @param Description The updated impersonation role description.
#' @param Rules &#91;required&#93; The updated list of rules.
#'
#' @keywords internal
#'
#' @rdname workmail_update_impersonation_role
workmail_update_impersonation_role <- function(OrganizationId, ImpersonationRoleId, Name, Type, Description = NULL, Rules) {
  op <- new_operation(
    name = "UpdateImpersonationRole",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_impersonation_role_input(OrganizationId = OrganizationId, ImpersonationRoleId = ImpersonationRoleId, Name = Name, Type = Type, Description = Description, Rules = Rules)
  output <- .workmail$update_impersonation_role_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_impersonation_role <- workmail_update_impersonation_role

#' Updates a user's current mailbox quota for a specified organization and
#' user
#'
#' @description
#' Updates a user's current mailbox quota for a specified organization and user.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_mailbox_quota/](https://www.paws-r-sdk.com/docs/workmail_update_mailbox_quota/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization that contains the user for whom to update the mailbox quota.
#' @param UserId &#91;required&#93; The identifer for the user for whom to update the mailbox quota.
#' 
#' The identifier can be the *UserId*, *Username*, or *email*. The following identity formats are available:
#' 
#' -   User ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: user@@domain.tld
#' 
#' -   User name: user
#' @param MailboxQuota &#91;required&#93; The updated mailbox quota, in MB, for the specified user.
#'
#' @keywords internal
#'
#' @rdname workmail_update_mailbox_quota
workmail_update_mailbox_quota <- function(OrganizationId, UserId, MailboxQuota) {
  op <- new_operation(
    name = "UpdateMailboxQuota",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_mailbox_quota_input(OrganizationId = OrganizationId, UserId = UserId, MailboxQuota = MailboxQuota)
  output <- .workmail$update_mailbox_quota_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_mailbox_quota <- workmail_update_mailbox_quota

#' Updates a mobile device access rule for the specified WorkMail
#' organization
#'
#' @description
#' Updates a mobile device access rule for the specified WorkMail organization.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_mobile_device_access_rule/](https://www.paws-r-sdk.com/docs/workmail_update_mobile_device_access_rule/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The WorkMail organization under which the rule will be updated.
#' @param MobileDeviceAccessRuleId &#91;required&#93; The identifier of the rule to be updated.
#' @param Name &#91;required&#93; The updated rule name.
#' @param Description The updated rule description.
#' @param Effect &#91;required&#93; The effect of the rule when it matches. Allowed values are `ALLOW` or `DENY`.
#' @param DeviceTypes Device types that the updated rule will match.
#' @param NotDeviceTypes Device types that the updated rule **will not** match. All other device types will match.
#' @param DeviceModels Device models that the updated rule will match.
#' @param NotDeviceModels Device models that the updated rule **will not** match. All other device models will match.
#' @param DeviceOperatingSystems Device operating systems that the updated rule will match.
#' @param NotDeviceOperatingSystems Device operating systems that the updated rule **will not** match. All other device operating systems will match.
#' @param DeviceUserAgents User agents that the updated rule will match.
#' @param NotDeviceUserAgents User agents that the updated rule **will not** match. All other user agents will match.
#'
#' @keywords internal
#'
#' @rdname workmail_update_mobile_device_access_rule
workmail_update_mobile_device_access_rule <- function(OrganizationId, MobileDeviceAccessRuleId, Name, Description = NULL, Effect, DeviceTypes = NULL, NotDeviceTypes = NULL, DeviceModels = NULL, NotDeviceModels = NULL, DeviceOperatingSystems = NULL, NotDeviceOperatingSystems = NULL, DeviceUserAgents = NULL, NotDeviceUserAgents = NULL) {
  op <- new_operation(
    name = "UpdateMobileDeviceAccessRule",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_mobile_device_access_rule_input(OrganizationId = OrganizationId, MobileDeviceAccessRuleId = MobileDeviceAccessRuleId, Name = Name, Description = Description, Effect = Effect, DeviceTypes = DeviceTypes, NotDeviceTypes = NotDeviceTypes, DeviceModels = DeviceModels, NotDeviceModels = NotDeviceModels, DeviceOperatingSystems = DeviceOperatingSystems, NotDeviceOperatingSystems = NotDeviceOperatingSystems, DeviceUserAgents = DeviceUserAgents, NotDeviceUserAgents = NotDeviceUserAgents)
  output <- .workmail$update_mobile_device_access_rule_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_mobile_device_access_rule <- workmail_update_mobile_device_access_rule

#' Updates the primary email for a user, group, or resource
#'
#' @description
#' Updates the primary email for a user, group, or resource. The current email is moved into the list of aliases (or swapped between an existing alias and the current primary email), and the email provided in the input is promoted as the primary.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_primary_email_address/](https://www.paws-r-sdk.com/docs/workmail_update_primary_email_address/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The organization that contains the user, group, or resource to update.
#' @param EntityId &#91;required&#93; The user, group, or resource to update.
#' 
#' The identifier can accept *UseriD, ResourceId, or GroupId*, *Username, Resourcename, or Groupname*, or *email*. The following identity formats are available:
#' 
#' -   Entity ID: 12345678-1234-1234-1234-123456789012, r-0123456789a0123456789b0123456789, or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: entity@@domain.tld
#' 
#' -   Entity name: entity
#' @param Email &#91;required&#93; The value of the email to be updated as primary.
#'
#' @keywords internal
#'
#' @rdname workmail_update_primary_email_address
workmail_update_primary_email_address <- function(OrganizationId, EntityId, Email) {
  op <- new_operation(
    name = "UpdatePrimaryEmailAddress",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_primary_email_address_input(OrganizationId = OrganizationId, EntityId = EntityId, Email = Email)
  output <- .workmail$update_primary_email_address_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_primary_email_address <- workmail_update_primary_email_address

#' Updates data for the resource
#'
#' @description
#' Updates data for the resource. To have the latest information, it must be preceded by a [`describe_resource`][workmail_describe_resource] call. The dataset in the request should be the one expected when performing another [`describe_resource`][workmail_describe_resource] call.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_resource/](https://www.paws-r-sdk.com/docs/workmail_update_resource/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier associated with the organization for which the resource is updated.
#' @param ResourceId &#91;required&#93; The identifier of the resource to be updated.
#' 
#' The identifier can accept *ResourceId*, *Resourcename*, or *email*. The following identity formats are available:
#' 
#' -   Resource ID: r-0123456789a0123456789b0123456789
#' 
#' -   Email address: resource@@domain.tld
#' 
#' -   Resource name: resource
#' @param Name The name of the resource to be updated.
#' @param BookingOptions The resource's booking options to be updated.
#' @param Description Updates the resource description.
#' @param Type Updates the resource type.
#' @param HiddenFromGlobalAddressList If enabled, the resource is hidden from the global address list.
#'
#' @keywords internal
#'
#' @rdname workmail_update_resource
workmail_update_resource <- function(OrganizationId, ResourceId, Name = NULL, BookingOptions = NULL, Description = NULL, Type = NULL, HiddenFromGlobalAddressList = NULL) {
  op <- new_operation(
    name = "UpdateResource",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_resource_input(OrganizationId = OrganizationId, ResourceId = ResourceId, Name = Name, BookingOptions = BookingOptions, Description = Description, Type = Type, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList)
  output <- .workmail$update_resource_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_resource <- workmail_update_resource

#' Updates data for the user
#'
#' @description
#' Updates data for the user. To have the latest information, it must be preceded by a [`describe_user`][workmail_describe_user] call. The dataset in the request should be the one expected when performing another [`describe_user`][workmail_describe_user] call.
#'
#' See [https://www.paws-r-sdk.com/docs/workmail_update_user/](https://www.paws-r-sdk.com/docs/workmail_update_user/) for full documentation.
#'
#' @param OrganizationId &#91;required&#93; The identifier for the organization under which the user exists.
#' @param UserId &#91;required&#93; The identifier for the user to be updated.
#' 
#' The identifier can be the *UserId*, *Username*, or *email*. The following identity formats are available:
#' 
#' -   User ID: 12345678-1234-1234-1234-123456789012 or S-1-1-12-1234567890-123456789-123456789-1234
#' 
#' -   Email address: user@@domain.tld
#' 
#' -   User name: user
#' @param Role Updates the user role.
#' 
#' You cannot pass *SYSTEM_USER* or *RESOURCE*.
#' @param DisplayName Updates the display name of the user.
#' @param FirstName Updates the user's first name.
#' @param LastName Updates the user's last name.
#' @param HiddenFromGlobalAddressList If enabled, the user is hidden from the global address list.
#' @param Initials Updates the user's initials.
#' @param Telephone Updates the user's contact details.
#' @param Street Updates the user's street address.
#' @param JobTitle Updates the user's job title.
#' @param City Updates the user's city.
#' @param Company Updates the user's company.
#' @param ZipCode Updates the user's zip code.
#' @param Department Updates the user's department.
#' @param Country Updates the user's country.
#' @param Office Updates the user's office.
#' @param IdentityProviderUserId User ID from the IAM Identity Center. If this parameter is empty it will be updated automatically when the user logs in for the first time to the mailbox associated with WorkMail.
#'
#' @keywords internal
#'
#' @rdname workmail_update_user
workmail_update_user <- function(OrganizationId, UserId, Role = NULL, DisplayName = NULL, FirstName = NULL, LastName = NULL, HiddenFromGlobalAddressList = NULL, Initials = NULL, Telephone = NULL, Street = NULL, JobTitle = NULL, City = NULL, Company = NULL, ZipCode = NULL, Department = NULL, Country = NULL, Office = NULL, IdentityProviderUserId = NULL) {
  op <- new_operation(
    name = "UpdateUser",
    http_method = "POST",
    http_path = "/",
    host_prefix = "",
    paginator = list(),
    stream_api = FALSE
  )
  input <- .workmail$update_user_input(OrganizationId = OrganizationId, UserId = UserId, Role = Role, DisplayName = DisplayName, FirstName = FirstName, LastName = LastName, HiddenFromGlobalAddressList = HiddenFromGlobalAddressList, Initials = Initials, Telephone = Telephone, Street = Street, JobTitle = JobTitle, City = City, Company = Company, ZipCode = ZipCode, Department = Department, Country = Country, Office = Office, IdentityProviderUserId = IdentityProviderUserId)
  output <- .workmail$update_user_output()
  config <- get_config()
  svc <- .workmail$service(config, op)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.workmail$operations$update_user <- workmail_update_user
