<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="groupssettings_v1.html">Groups Settings API</a> . <a href="groupssettings_v1.groups.html">groups</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(groupUniqueId)</a></code></p>
<p class="firstline">Gets one resource by id.</p>
<p class="toc_element">
  <code><a href="#patch">patch(groupUniqueId, body=None)</a></code></p>
<p class="firstline">Updates an existing resource. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(groupUniqueId, body=None)</a></code></p>
<p class="firstline">Updates an existing resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(groupUniqueId)</code>
  <pre>Gets one resource by id.

Args:
  groupUniqueId: string, The group&#x27;s email address. (required)

Returns:
  An object of the form:

    { # JSON template for Group resource
  &quot;allowExternalMembers&quot;: &quot;A String&quot;, # Identifies whether members external to your organization can join the group. Possible values are:
      # - true: G Suite users external to your organization can become members of this group.
      # - false: Users not belonging to the organization are not allowed to become members of this group.
  &quot;allowGoogleCommunication&quot;: &quot;A String&quot;, # Deprecated. Allows Google to contact administrator of the group.
      # - true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group.
      # - false: Google can not contact managers of this group.
  &quot;allowWebPosting&quot;: &quot;A String&quot;, # Allows posting from web. Possible values are:
      # - true: Allows any member to post to the group forum.
      # - false: Members only use Gmail to communicate with the group.
  &quot;archiveOnly&quot;: &quot;A String&quot;, # Allows the group to be archived only. Possible values are:
      # - true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable.
      # - If true, the whoCanPostMessage property is set to NONE_CAN_POST.
      # - If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - false: The group is active and can receive messages.
      # - When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
  &quot;customFooterText&quot;: &quot;A String&quot;, # Set the content of custom footer text. The maximum number of characters is 1,000.
  &quot;customReplyTo&quot;: &quot;A String&quot;, # An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator.
      # - When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message.
      # - If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.
  &quot;customRolesEnabledForSettingsToBeMerged&quot;: &quot;A String&quot;, # Specifies whether the group has a custom role that&#x27;s included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are:
      # - true
      # - false
  &quot;defaultMessageDenyNotificationText&quot;: &quot;A String&quot;, # When a message is rejected, this is text for the rejection notification sent to the message&#x27;s author. By default, this property is empty and has no value in the API&#x27;s response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.
  &quot;default_sender&quot;: &quot;A String&quot;, # Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group
  &quot;description&quot;: &quot;A String&quot;, # Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.
  &quot;email&quot;: &quot;A String&quot;, # The group&#x27;s email address. This property can be updated using the Directory API. Note: Only a group owner can change a group&#x27;s email address. A group manager can&#x27;t do this.
      # When you change your group&#x27;s address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can&#x27;t reach your group by visiting the old address.
  &quot;enableCollaborativeInbox&quot;: &quot;A String&quot;, # Specifies whether a collaborative inbox will remain turned on for the group. Possible values are:
      # - true
      # - false
  &quot;favoriteRepliesOnTop&quot;: &quot;A String&quot;, # Indicates if favorite replies should be displayed above other replies.
      # - true: Favorite replies will be displayed above other replies.
      # - false: Favorite replies will not be displayed above other replies.
  &quot;includeCustomFooter&quot;: &quot;A String&quot;, # Whether to include custom footer. Possible values are:
      # - true
      # - false
  &quot;includeInGlobalAddressList&quot;: &quot;A String&quot;, # Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are:
      # - true: Group is included in the Global Address List.
      # - false: Group is not included in the Global Address List.
  &quot;isArchived&quot;: &quot;A String&quot;, # Allows the Group contents to be archived. Possible values are:
      # - true: Archive messages sent to the group.
      # - false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.
  &quot;kind&quot;: &quot;groupsSettings#groups&quot;, # The type of the resource. It is always groupsSettings#groups.
  &quot;maxMessageBytes&quot;: 42, # Deprecated. The maximum size of a message is 25Mb.
  &quot;membersCanPostAsTheGroup&quot;: &quot;A String&quot;, # Enables members to post messages as the group. Possible values are:
      # - true: Group member can post messages using the group&#x27;s email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group.
      # - false: Members can not post in behalf of the group&#x27;s email address.
  &quot;messageDisplayFont&quot;: &quot;A String&quot;, # Deprecated. The default message display font always has a value of &quot;DEFAULT_FONT&quot;.
  &quot;messageModerationLevel&quot;: &quot;A String&quot;, # Moderation level of incoming messages. Possible values are:
      # - MODERATE_ALL_MESSAGES: All messages are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
      # When memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.
  &quot;name&quot;: &quot;A String&quot;, # Name of the group, which has a maximum size of 75 characters.
  &quot;primaryLanguage&quot;: &quot;A String&quot;, # The primary language for group. For a group&#x27;s primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.
  &quot;replyTo&quot;: &quot;A String&quot;, # Specifies who receives the default reply. Possible values are:
      # - REPLY_TO_CUSTOM: For replies to messages, use the group&#x27;s custom email address.
      # When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.
      #
      # - REPLY_TO_SENDER: The reply sent to author of message.
      # - REPLY_TO_LIST: This reply message is sent to the group.
      # - REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group&#x27;s managers.
      # - REPLY_TO_IGNORE: Group users individually decide where the message reply is sent.
      # - REPLY_TO_MANAGERS: This reply message is sent to the group&#x27;s managers, which includes all managers and the group owner.
  &quot;sendMessageDenyNotification&quot;: &quot;A String&quot;, # Allows a member to be notified if the member&#x27;s message to the group is denied by the group owner. Possible values are:
      # - true: When a message is rejected, send the deny message notification to the message author.
      # The defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.
      #
      # - false: When a message is rejected, no notification is sent.
  &quot;showInGroupDirectory&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are:
      # - true: All groups in the account are listed in the Groups directory.
      # - false: All groups in the account are not listed in the directory.
  &quot;spamModerationLevel&quot;: &quot;A String&quot;, # Specifies moderation levels for messages detected as spam. Possible values are:
      # - ALLOW: Post the message to the group.
      # - MODERATE: Send the message to the moderation queue. This is the default.
      # - SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators.
      # - REJECT: Immediately reject the message.
  &quot;whoCanAdd&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are:
      # - ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members.
      # - ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_ADD: Only owners can directly add new members.
      # - NONE_CAN_ADD: No one can directly add new members.
  &quot;whoCanAddReferences&quot;: &quot;A String&quot;, # Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always &quot;NONE&quot;.
  &quot;whoCanApproveMembers&quot;: &quot;A String&quot;, # Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS_CAN_APPROVE
      # - ALL_MANAGERS_CAN_APPROVE
      # - ALL_OWNERS_CAN_APPROVE
      # - NONE_CAN_APPROVE
  &quot;whoCanApproveMessages&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssignTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssistContent&quot;: &quot;A String&quot;, # Specifies who can moderate metadata. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanBanUsers&quot;: &quot;A String&quot;, # Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanContactOwner&quot;: &quot;A String&quot;, # Permission to contact owner of the group via web UI. Possible values are:
      # - ALL_IN_DOMAIN_CAN_CONTACT
      # - ALL_MANAGERS_CAN_CONTACT
      # - ALL_MEMBERS_CAN_CONTACT
      # - ANYONE_CAN_CONTACT
      # - ALL_OWNERS_CAN_CONTACT
  &quot;whoCanDeleteAnyPost&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDeleteTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDiscoverGroup&quot;: &quot;A String&quot;, # Specifies the set of users for whom this group is discoverable. Possible values are:
      # - ANYONE_CAN_DISCOVER
      # - ALL_IN_DOMAIN_CAN_DISCOVER
      # - ALL_MEMBERS_CAN_DISCOVER
  &quot;whoCanEnterFreeFormTags&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanHideAbuse&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanInvite&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are:
      # - ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate.
      # - ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_INVITE: Only owners can invite a new member.
      # - NONE_CAN_INVITE: No one can invite a new member candidate.
  &quot;whoCanJoin&quot;: &quot;A String&quot;, # Permission to join group. Possible values are:
      # - ANYONE_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains.
      # - ALL_IN_DOMAIN_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users&#x27; groups remain in those groups.
      # - INVITED_CAN_JOIN: Candidates for membership can be invited to join.
      # - CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.
  &quot;whoCanLeaveGroup&quot;: &quot;A String&quot;, # Permission to leave the group. Possible values are:
      # - ALL_MANAGERS_CAN_LEAVE
      # - ALL_MEMBERS_CAN_LEAVE
      # - NONE_CAN_LEAVE
  &quot;whoCanLockTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMakeTopicsSticky&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkDuplicate&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user&#x27;s post as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnOwnTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkNoResponseNeeded&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateContent&quot;: &quot;A String&quot;, # Specifies who can moderate content. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateMembers&quot;: &quot;A String&quot;, # Specifies who can manage members. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyMembers&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members&#x27; roles. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyTagsAndCategories&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsIn&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsOut&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostAnnouncements&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostMessage&quot;: &quot;A String&quot;, # Permissions to post messages. Possible values are:
      # - NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group.
      # - When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
      # - If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages.
      # - ALL_MEMBERS_CAN_POST: Any group member can post a message.
      # - ALL_OWNERS_CAN_POST: Only group owners can post a message.
      # - ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message.
      # - ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
  &quot;whoCanTakeTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnassignTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnmarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanViewGroup&quot;: &quot;A String&quot;, # Permissions to view group messages. Possible values are:
      # - ANYONE_CAN_VIEW: Any Internet user can view the group&#x27;s messages.
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group&#x27;s messages.
      # - ALL_MEMBERS_CAN_VIEW: All group members can view the group&#x27;s messages.
      # - ALL_MANAGERS_CAN_VIEW: Any group manager can view this group&#x27;s messages.
  &quot;whoCanViewMembership&quot;: &quot;A String&quot;, # Permissions to view membership. Possible values are:
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.
      # If a group already has external members, those members can still send email to this group.
      #
      # - ALL_MEMBERS_CAN_VIEW: The group members can view the group members list.
      # - ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(groupUniqueId, body=None)</code>
  <pre>Updates an existing resource. This method supports patch semantics.

Args:
  groupUniqueId: string, The group&#x27;s email address. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Group resource
  &quot;allowExternalMembers&quot;: &quot;A String&quot;, # Identifies whether members external to your organization can join the group. Possible values are:
      # - true: G Suite users external to your organization can become members of this group.
      # - false: Users not belonging to the organization are not allowed to become members of this group.
  &quot;allowGoogleCommunication&quot;: &quot;A String&quot;, # Deprecated. Allows Google to contact administrator of the group.
      # - true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group.
      # - false: Google can not contact managers of this group.
  &quot;allowWebPosting&quot;: &quot;A String&quot;, # Allows posting from web. Possible values are:
      # - true: Allows any member to post to the group forum.
      # - false: Members only use Gmail to communicate with the group.
  &quot;archiveOnly&quot;: &quot;A String&quot;, # Allows the group to be archived only. Possible values are:
      # - true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable.
      # - If true, the whoCanPostMessage property is set to NONE_CAN_POST.
      # - If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - false: The group is active and can receive messages.
      # - When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
  &quot;customFooterText&quot;: &quot;A String&quot;, # Set the content of custom footer text. The maximum number of characters is 1,000.
  &quot;customReplyTo&quot;: &quot;A String&quot;, # An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator.
      # - When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message.
      # - If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.
  &quot;customRolesEnabledForSettingsToBeMerged&quot;: &quot;A String&quot;, # Specifies whether the group has a custom role that&#x27;s included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are:
      # - true
      # - false
  &quot;defaultMessageDenyNotificationText&quot;: &quot;A String&quot;, # When a message is rejected, this is text for the rejection notification sent to the message&#x27;s author. By default, this property is empty and has no value in the API&#x27;s response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.
  &quot;default_sender&quot;: &quot;A String&quot;, # Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group
  &quot;description&quot;: &quot;A String&quot;, # Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.
  &quot;email&quot;: &quot;A String&quot;, # The group&#x27;s email address. This property can be updated using the Directory API. Note: Only a group owner can change a group&#x27;s email address. A group manager can&#x27;t do this.
      # When you change your group&#x27;s address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can&#x27;t reach your group by visiting the old address.
  &quot;enableCollaborativeInbox&quot;: &quot;A String&quot;, # Specifies whether a collaborative inbox will remain turned on for the group. Possible values are:
      # - true
      # - false
  &quot;favoriteRepliesOnTop&quot;: &quot;A String&quot;, # Indicates if favorite replies should be displayed above other replies.
      # - true: Favorite replies will be displayed above other replies.
      # - false: Favorite replies will not be displayed above other replies.
  &quot;includeCustomFooter&quot;: &quot;A String&quot;, # Whether to include custom footer. Possible values are:
      # - true
      # - false
  &quot;includeInGlobalAddressList&quot;: &quot;A String&quot;, # Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are:
      # - true: Group is included in the Global Address List.
      # - false: Group is not included in the Global Address List.
  &quot;isArchived&quot;: &quot;A String&quot;, # Allows the Group contents to be archived. Possible values are:
      # - true: Archive messages sent to the group.
      # - false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.
  &quot;kind&quot;: &quot;groupsSettings#groups&quot;, # The type of the resource. It is always groupsSettings#groups.
  &quot;maxMessageBytes&quot;: 42, # Deprecated. The maximum size of a message is 25Mb.
  &quot;membersCanPostAsTheGroup&quot;: &quot;A String&quot;, # Enables members to post messages as the group. Possible values are:
      # - true: Group member can post messages using the group&#x27;s email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group.
      # - false: Members can not post in behalf of the group&#x27;s email address.
  &quot;messageDisplayFont&quot;: &quot;A String&quot;, # Deprecated. The default message display font always has a value of &quot;DEFAULT_FONT&quot;.
  &quot;messageModerationLevel&quot;: &quot;A String&quot;, # Moderation level of incoming messages. Possible values are:
      # - MODERATE_ALL_MESSAGES: All messages are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
      # When memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.
  &quot;name&quot;: &quot;A String&quot;, # Name of the group, which has a maximum size of 75 characters.
  &quot;primaryLanguage&quot;: &quot;A String&quot;, # The primary language for group. For a group&#x27;s primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.
  &quot;replyTo&quot;: &quot;A String&quot;, # Specifies who receives the default reply. Possible values are:
      # - REPLY_TO_CUSTOM: For replies to messages, use the group&#x27;s custom email address.
      # When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.
      # 
      # - REPLY_TO_SENDER: The reply sent to author of message.
      # - REPLY_TO_LIST: This reply message is sent to the group.
      # - REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group&#x27;s managers.
      # - REPLY_TO_IGNORE: Group users individually decide where the message reply is sent.
      # - REPLY_TO_MANAGERS: This reply message is sent to the group&#x27;s managers, which includes all managers and the group owner.
  &quot;sendMessageDenyNotification&quot;: &quot;A String&quot;, # Allows a member to be notified if the member&#x27;s message to the group is denied by the group owner. Possible values are:
      # - true: When a message is rejected, send the deny message notification to the message author.
      # The defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.
      # 
      # - false: When a message is rejected, no notification is sent.
  &quot;showInGroupDirectory&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are:
      # - true: All groups in the account are listed in the Groups directory.
      # - false: All groups in the account are not listed in the directory.
  &quot;spamModerationLevel&quot;: &quot;A String&quot;, # Specifies moderation levels for messages detected as spam. Possible values are:
      # - ALLOW: Post the message to the group.
      # - MODERATE: Send the message to the moderation queue. This is the default.
      # - SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators.
      # - REJECT: Immediately reject the message.
  &quot;whoCanAdd&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are:
      # - ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members.
      # - ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_ADD: Only owners can directly add new members.
      # - NONE_CAN_ADD: No one can directly add new members.
  &quot;whoCanAddReferences&quot;: &quot;A String&quot;, # Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always &quot;NONE&quot;.
  &quot;whoCanApproveMembers&quot;: &quot;A String&quot;, # Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS_CAN_APPROVE
      # - ALL_MANAGERS_CAN_APPROVE
      # - ALL_OWNERS_CAN_APPROVE
      # - NONE_CAN_APPROVE
  &quot;whoCanApproveMessages&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssignTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssistContent&quot;: &quot;A String&quot;, # Specifies who can moderate metadata. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanBanUsers&quot;: &quot;A String&quot;, # Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanContactOwner&quot;: &quot;A String&quot;, # Permission to contact owner of the group via web UI. Possible values are:
      # - ALL_IN_DOMAIN_CAN_CONTACT
      # - ALL_MANAGERS_CAN_CONTACT
      # - ALL_MEMBERS_CAN_CONTACT
      # - ANYONE_CAN_CONTACT
      # - ALL_OWNERS_CAN_CONTACT
  &quot;whoCanDeleteAnyPost&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDeleteTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDiscoverGroup&quot;: &quot;A String&quot;, # Specifies the set of users for whom this group is discoverable. Possible values are:
      # - ANYONE_CAN_DISCOVER
      # - ALL_IN_DOMAIN_CAN_DISCOVER
      # - ALL_MEMBERS_CAN_DISCOVER
  &quot;whoCanEnterFreeFormTags&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanHideAbuse&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanInvite&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are:
      # - ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate.
      # - ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_INVITE: Only owners can invite a new member.
      # - NONE_CAN_INVITE: No one can invite a new member candidate.
  &quot;whoCanJoin&quot;: &quot;A String&quot;, # Permission to join group. Possible values are:
      # - ANYONE_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains.
      # - ALL_IN_DOMAIN_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users&#x27; groups remain in those groups.
      # - INVITED_CAN_JOIN: Candidates for membership can be invited to join.
      # - CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.
  &quot;whoCanLeaveGroup&quot;: &quot;A String&quot;, # Permission to leave the group. Possible values are:
      # - ALL_MANAGERS_CAN_LEAVE
      # - ALL_MEMBERS_CAN_LEAVE
      # - NONE_CAN_LEAVE
  &quot;whoCanLockTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMakeTopicsSticky&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkDuplicate&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user&#x27;s post as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnOwnTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkNoResponseNeeded&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateContent&quot;: &quot;A String&quot;, # Specifies who can moderate content. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateMembers&quot;: &quot;A String&quot;, # Specifies who can manage members. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyMembers&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members&#x27; roles. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyTagsAndCategories&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsIn&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsOut&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostAnnouncements&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostMessage&quot;: &quot;A String&quot;, # Permissions to post messages. Possible values are:
      # - NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group.
      # - When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
      # - If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages.
      # - ALL_MEMBERS_CAN_POST: Any group member can post a message.
      # - ALL_OWNERS_CAN_POST: Only group owners can post a message.
      # - ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message.
      # - ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
  &quot;whoCanTakeTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnassignTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnmarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanViewGroup&quot;: &quot;A String&quot;, # Permissions to view group messages. Possible values are:
      # - ANYONE_CAN_VIEW: Any Internet user can view the group&#x27;s messages.
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group&#x27;s messages.
      # - ALL_MEMBERS_CAN_VIEW: All group members can view the group&#x27;s messages.
      # - ALL_MANAGERS_CAN_VIEW: Any group manager can view this group&#x27;s messages.
  &quot;whoCanViewMembership&quot;: &quot;A String&quot;, # Permissions to view membership. Possible values are:
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.
      # If a group already has external members, those members can still send email to this group.
      # 
      # - ALL_MEMBERS_CAN_VIEW: The group members can view the group members list.
      # - ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.
}


Returns:
  An object of the form:

    { # JSON template for Group resource
  &quot;allowExternalMembers&quot;: &quot;A String&quot;, # Identifies whether members external to your organization can join the group. Possible values are:
      # - true: G Suite users external to your organization can become members of this group.
      # - false: Users not belonging to the organization are not allowed to become members of this group.
  &quot;allowGoogleCommunication&quot;: &quot;A String&quot;, # Deprecated. Allows Google to contact administrator of the group.
      # - true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group.
      # - false: Google can not contact managers of this group.
  &quot;allowWebPosting&quot;: &quot;A String&quot;, # Allows posting from web. Possible values are:
      # - true: Allows any member to post to the group forum.
      # - false: Members only use Gmail to communicate with the group.
  &quot;archiveOnly&quot;: &quot;A String&quot;, # Allows the group to be archived only. Possible values are:
      # - true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable.
      # - If true, the whoCanPostMessage property is set to NONE_CAN_POST.
      # - If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - false: The group is active and can receive messages.
      # - When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
  &quot;customFooterText&quot;: &quot;A String&quot;, # Set the content of custom footer text. The maximum number of characters is 1,000.
  &quot;customReplyTo&quot;: &quot;A String&quot;, # An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator.
      # - When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message.
      # - If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.
  &quot;customRolesEnabledForSettingsToBeMerged&quot;: &quot;A String&quot;, # Specifies whether the group has a custom role that&#x27;s included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are:
      # - true
      # - false
  &quot;defaultMessageDenyNotificationText&quot;: &quot;A String&quot;, # When a message is rejected, this is text for the rejection notification sent to the message&#x27;s author. By default, this property is empty and has no value in the API&#x27;s response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.
  &quot;default_sender&quot;: &quot;A String&quot;, # Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group
  &quot;description&quot;: &quot;A String&quot;, # Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.
  &quot;email&quot;: &quot;A String&quot;, # The group&#x27;s email address. This property can be updated using the Directory API. Note: Only a group owner can change a group&#x27;s email address. A group manager can&#x27;t do this.
      # When you change your group&#x27;s address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can&#x27;t reach your group by visiting the old address.
  &quot;enableCollaborativeInbox&quot;: &quot;A String&quot;, # Specifies whether a collaborative inbox will remain turned on for the group. Possible values are:
      # - true
      # - false
  &quot;favoriteRepliesOnTop&quot;: &quot;A String&quot;, # Indicates if favorite replies should be displayed above other replies.
      # - true: Favorite replies will be displayed above other replies.
      # - false: Favorite replies will not be displayed above other replies.
  &quot;includeCustomFooter&quot;: &quot;A String&quot;, # Whether to include custom footer. Possible values are:
      # - true
      # - false
  &quot;includeInGlobalAddressList&quot;: &quot;A String&quot;, # Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are:
      # - true: Group is included in the Global Address List.
      # - false: Group is not included in the Global Address List.
  &quot;isArchived&quot;: &quot;A String&quot;, # Allows the Group contents to be archived. Possible values are:
      # - true: Archive messages sent to the group.
      # - false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.
  &quot;kind&quot;: &quot;groupsSettings#groups&quot;, # The type of the resource. It is always groupsSettings#groups.
  &quot;maxMessageBytes&quot;: 42, # Deprecated. The maximum size of a message is 25Mb.
  &quot;membersCanPostAsTheGroup&quot;: &quot;A String&quot;, # Enables members to post messages as the group. Possible values are:
      # - true: Group member can post messages using the group&#x27;s email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group.
      # - false: Members can not post in behalf of the group&#x27;s email address.
  &quot;messageDisplayFont&quot;: &quot;A String&quot;, # Deprecated. The default message display font always has a value of &quot;DEFAULT_FONT&quot;.
  &quot;messageModerationLevel&quot;: &quot;A String&quot;, # Moderation level of incoming messages. Possible values are:
      # - MODERATE_ALL_MESSAGES: All messages are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
      # When memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.
  &quot;name&quot;: &quot;A String&quot;, # Name of the group, which has a maximum size of 75 characters.
  &quot;primaryLanguage&quot;: &quot;A String&quot;, # The primary language for group. For a group&#x27;s primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.
  &quot;replyTo&quot;: &quot;A String&quot;, # Specifies who receives the default reply. Possible values are:
      # - REPLY_TO_CUSTOM: For replies to messages, use the group&#x27;s custom email address.
      # When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.
      #
      # - REPLY_TO_SENDER: The reply sent to author of message.
      # - REPLY_TO_LIST: This reply message is sent to the group.
      # - REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group&#x27;s managers.
      # - REPLY_TO_IGNORE: Group users individually decide where the message reply is sent.
      # - REPLY_TO_MANAGERS: This reply message is sent to the group&#x27;s managers, which includes all managers and the group owner.
  &quot;sendMessageDenyNotification&quot;: &quot;A String&quot;, # Allows a member to be notified if the member&#x27;s message to the group is denied by the group owner. Possible values are:
      # - true: When a message is rejected, send the deny message notification to the message author.
      # The defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.
      #
      # - false: When a message is rejected, no notification is sent.
  &quot;showInGroupDirectory&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are:
      # - true: All groups in the account are listed in the Groups directory.
      # - false: All groups in the account are not listed in the directory.
  &quot;spamModerationLevel&quot;: &quot;A String&quot;, # Specifies moderation levels for messages detected as spam. Possible values are:
      # - ALLOW: Post the message to the group.
      # - MODERATE: Send the message to the moderation queue. This is the default.
      # - SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators.
      # - REJECT: Immediately reject the message.
  &quot;whoCanAdd&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are:
      # - ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members.
      # - ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_ADD: Only owners can directly add new members.
      # - NONE_CAN_ADD: No one can directly add new members.
  &quot;whoCanAddReferences&quot;: &quot;A String&quot;, # Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always &quot;NONE&quot;.
  &quot;whoCanApproveMembers&quot;: &quot;A String&quot;, # Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS_CAN_APPROVE
      # - ALL_MANAGERS_CAN_APPROVE
      # - ALL_OWNERS_CAN_APPROVE
      # - NONE_CAN_APPROVE
  &quot;whoCanApproveMessages&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssignTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssistContent&quot;: &quot;A String&quot;, # Specifies who can moderate metadata. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanBanUsers&quot;: &quot;A String&quot;, # Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanContactOwner&quot;: &quot;A String&quot;, # Permission to contact owner of the group via web UI. Possible values are:
      # - ALL_IN_DOMAIN_CAN_CONTACT
      # - ALL_MANAGERS_CAN_CONTACT
      # - ALL_MEMBERS_CAN_CONTACT
      # - ANYONE_CAN_CONTACT
      # - ALL_OWNERS_CAN_CONTACT
  &quot;whoCanDeleteAnyPost&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDeleteTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDiscoverGroup&quot;: &quot;A String&quot;, # Specifies the set of users for whom this group is discoverable. Possible values are:
      # - ANYONE_CAN_DISCOVER
      # - ALL_IN_DOMAIN_CAN_DISCOVER
      # - ALL_MEMBERS_CAN_DISCOVER
  &quot;whoCanEnterFreeFormTags&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanHideAbuse&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanInvite&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are:
      # - ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate.
      # - ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_INVITE: Only owners can invite a new member.
      # - NONE_CAN_INVITE: No one can invite a new member candidate.
  &quot;whoCanJoin&quot;: &quot;A String&quot;, # Permission to join group. Possible values are:
      # - ANYONE_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains.
      # - ALL_IN_DOMAIN_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users&#x27; groups remain in those groups.
      # - INVITED_CAN_JOIN: Candidates for membership can be invited to join.
      # - CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.
  &quot;whoCanLeaveGroup&quot;: &quot;A String&quot;, # Permission to leave the group. Possible values are:
      # - ALL_MANAGERS_CAN_LEAVE
      # - ALL_MEMBERS_CAN_LEAVE
      # - NONE_CAN_LEAVE
  &quot;whoCanLockTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMakeTopicsSticky&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkDuplicate&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user&#x27;s post as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnOwnTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkNoResponseNeeded&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateContent&quot;: &quot;A String&quot;, # Specifies who can moderate content. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateMembers&quot;: &quot;A String&quot;, # Specifies who can manage members. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyMembers&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members&#x27; roles. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyTagsAndCategories&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsIn&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsOut&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostAnnouncements&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostMessage&quot;: &quot;A String&quot;, # Permissions to post messages. Possible values are:
      # - NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group.
      # - When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
      # - If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages.
      # - ALL_MEMBERS_CAN_POST: Any group member can post a message.
      # - ALL_OWNERS_CAN_POST: Only group owners can post a message.
      # - ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message.
      # - ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
  &quot;whoCanTakeTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnassignTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnmarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanViewGroup&quot;: &quot;A String&quot;, # Permissions to view group messages. Possible values are:
      # - ANYONE_CAN_VIEW: Any Internet user can view the group&#x27;s messages.
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group&#x27;s messages.
      # - ALL_MEMBERS_CAN_VIEW: All group members can view the group&#x27;s messages.
      # - ALL_MANAGERS_CAN_VIEW: Any group manager can view this group&#x27;s messages.
  &quot;whoCanViewMembership&quot;: &quot;A String&quot;, # Permissions to view membership. Possible values are:
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.
      # If a group already has external members, those members can still send email to this group.
      #
      # - ALL_MEMBERS_CAN_VIEW: The group members can view the group members list.
      # - ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(groupUniqueId, body=None)</code>
  <pre>Updates an existing resource.

Args:
  groupUniqueId: string, The group&#x27;s email address. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Group resource
  &quot;allowExternalMembers&quot;: &quot;A String&quot;, # Identifies whether members external to your organization can join the group. Possible values are:
      # - true: G Suite users external to your organization can become members of this group.
      # - false: Users not belonging to the organization are not allowed to become members of this group.
  &quot;allowGoogleCommunication&quot;: &quot;A String&quot;, # Deprecated. Allows Google to contact administrator of the group.
      # - true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group.
      # - false: Google can not contact managers of this group.
  &quot;allowWebPosting&quot;: &quot;A String&quot;, # Allows posting from web. Possible values are:
      # - true: Allows any member to post to the group forum.
      # - false: Members only use Gmail to communicate with the group.
  &quot;archiveOnly&quot;: &quot;A String&quot;, # Allows the group to be archived only. Possible values are:
      # - true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable.
      # - If true, the whoCanPostMessage property is set to NONE_CAN_POST.
      # - If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - false: The group is active and can receive messages.
      # - When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
  &quot;customFooterText&quot;: &quot;A String&quot;, # Set the content of custom footer text. The maximum number of characters is 1,000.
  &quot;customReplyTo&quot;: &quot;A String&quot;, # An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator.
      # - When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message.
      # - If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.
  &quot;customRolesEnabledForSettingsToBeMerged&quot;: &quot;A String&quot;, # Specifies whether the group has a custom role that&#x27;s included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are:
      # - true
      # - false
  &quot;defaultMessageDenyNotificationText&quot;: &quot;A String&quot;, # When a message is rejected, this is text for the rejection notification sent to the message&#x27;s author. By default, this property is empty and has no value in the API&#x27;s response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.
  &quot;default_sender&quot;: &quot;A String&quot;, # Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group
  &quot;description&quot;: &quot;A String&quot;, # Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.
  &quot;email&quot;: &quot;A String&quot;, # The group&#x27;s email address. This property can be updated using the Directory API. Note: Only a group owner can change a group&#x27;s email address. A group manager can&#x27;t do this.
      # When you change your group&#x27;s address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can&#x27;t reach your group by visiting the old address.
  &quot;enableCollaborativeInbox&quot;: &quot;A String&quot;, # Specifies whether a collaborative inbox will remain turned on for the group. Possible values are:
      # - true
      # - false
  &quot;favoriteRepliesOnTop&quot;: &quot;A String&quot;, # Indicates if favorite replies should be displayed above other replies.
      # - true: Favorite replies will be displayed above other replies.
      # - false: Favorite replies will not be displayed above other replies.
  &quot;includeCustomFooter&quot;: &quot;A String&quot;, # Whether to include custom footer. Possible values are:
      # - true
      # - false
  &quot;includeInGlobalAddressList&quot;: &quot;A String&quot;, # Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are:
      # - true: Group is included in the Global Address List.
      # - false: Group is not included in the Global Address List.
  &quot;isArchived&quot;: &quot;A String&quot;, # Allows the Group contents to be archived. Possible values are:
      # - true: Archive messages sent to the group.
      # - false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.
  &quot;kind&quot;: &quot;groupsSettings#groups&quot;, # The type of the resource. It is always groupsSettings#groups.
  &quot;maxMessageBytes&quot;: 42, # Deprecated. The maximum size of a message is 25Mb.
  &quot;membersCanPostAsTheGroup&quot;: &quot;A String&quot;, # Enables members to post messages as the group. Possible values are:
      # - true: Group member can post messages using the group&#x27;s email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group.
      # - false: Members can not post in behalf of the group&#x27;s email address.
  &quot;messageDisplayFont&quot;: &quot;A String&quot;, # Deprecated. The default message display font always has a value of &quot;DEFAULT_FONT&quot;.
  &quot;messageModerationLevel&quot;: &quot;A String&quot;, # Moderation level of incoming messages. Possible values are:
      # - MODERATE_ALL_MESSAGES: All messages are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
      # When memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.
  &quot;name&quot;: &quot;A String&quot;, # Name of the group, which has a maximum size of 75 characters.
  &quot;primaryLanguage&quot;: &quot;A String&quot;, # The primary language for group. For a group&#x27;s primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.
  &quot;replyTo&quot;: &quot;A String&quot;, # Specifies who receives the default reply. Possible values are:
      # - REPLY_TO_CUSTOM: For replies to messages, use the group&#x27;s custom email address.
      # When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.
      # 
      # - REPLY_TO_SENDER: The reply sent to author of message.
      # - REPLY_TO_LIST: This reply message is sent to the group.
      # - REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group&#x27;s managers.
      # - REPLY_TO_IGNORE: Group users individually decide where the message reply is sent.
      # - REPLY_TO_MANAGERS: This reply message is sent to the group&#x27;s managers, which includes all managers and the group owner.
  &quot;sendMessageDenyNotification&quot;: &quot;A String&quot;, # Allows a member to be notified if the member&#x27;s message to the group is denied by the group owner. Possible values are:
      # - true: When a message is rejected, send the deny message notification to the message author.
      # The defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.
      # 
      # - false: When a message is rejected, no notification is sent.
  &quot;showInGroupDirectory&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are:
      # - true: All groups in the account are listed in the Groups directory.
      # - false: All groups in the account are not listed in the directory.
  &quot;spamModerationLevel&quot;: &quot;A String&quot;, # Specifies moderation levels for messages detected as spam. Possible values are:
      # - ALLOW: Post the message to the group.
      # - MODERATE: Send the message to the moderation queue. This is the default.
      # - SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators.
      # - REJECT: Immediately reject the message.
  &quot;whoCanAdd&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are:
      # - ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members.
      # - ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_ADD: Only owners can directly add new members.
      # - NONE_CAN_ADD: No one can directly add new members.
  &quot;whoCanAddReferences&quot;: &quot;A String&quot;, # Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always &quot;NONE&quot;.
  &quot;whoCanApproveMembers&quot;: &quot;A String&quot;, # Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS_CAN_APPROVE
      # - ALL_MANAGERS_CAN_APPROVE
      # - ALL_OWNERS_CAN_APPROVE
      # - NONE_CAN_APPROVE
  &quot;whoCanApproveMessages&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssignTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssistContent&quot;: &quot;A String&quot;, # Specifies who can moderate metadata. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanBanUsers&quot;: &quot;A String&quot;, # Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanContactOwner&quot;: &quot;A String&quot;, # Permission to contact owner of the group via web UI. Possible values are:
      # - ALL_IN_DOMAIN_CAN_CONTACT
      # - ALL_MANAGERS_CAN_CONTACT
      # - ALL_MEMBERS_CAN_CONTACT
      # - ANYONE_CAN_CONTACT
      # - ALL_OWNERS_CAN_CONTACT
  &quot;whoCanDeleteAnyPost&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDeleteTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDiscoverGroup&quot;: &quot;A String&quot;, # Specifies the set of users for whom this group is discoverable. Possible values are:
      # - ANYONE_CAN_DISCOVER
      # - ALL_IN_DOMAIN_CAN_DISCOVER
      # - ALL_MEMBERS_CAN_DISCOVER
  &quot;whoCanEnterFreeFormTags&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanHideAbuse&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanInvite&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are:
      # - ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate.
      # - ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_INVITE: Only owners can invite a new member.
      # - NONE_CAN_INVITE: No one can invite a new member candidate.
  &quot;whoCanJoin&quot;: &quot;A String&quot;, # Permission to join group. Possible values are:
      # - ANYONE_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains.
      # - ALL_IN_DOMAIN_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users&#x27; groups remain in those groups.
      # - INVITED_CAN_JOIN: Candidates for membership can be invited to join.
      # - CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.
  &quot;whoCanLeaveGroup&quot;: &quot;A String&quot;, # Permission to leave the group. Possible values are:
      # - ALL_MANAGERS_CAN_LEAVE
      # - ALL_MEMBERS_CAN_LEAVE
      # - NONE_CAN_LEAVE
  &quot;whoCanLockTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMakeTopicsSticky&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkDuplicate&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user&#x27;s post as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnOwnTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkNoResponseNeeded&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateContent&quot;: &quot;A String&quot;, # Specifies who can moderate content. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateMembers&quot;: &quot;A String&quot;, # Specifies who can manage members. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyMembers&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members&#x27; roles. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyTagsAndCategories&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsIn&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsOut&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostAnnouncements&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostMessage&quot;: &quot;A String&quot;, # Permissions to post messages. Possible values are:
      # - NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group.
      # - When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
      # - If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages.
      # - ALL_MEMBERS_CAN_POST: Any group member can post a message.
      # - ALL_OWNERS_CAN_POST: Only group owners can post a message.
      # - ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message.
      # - ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
  &quot;whoCanTakeTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnassignTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnmarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanViewGroup&quot;: &quot;A String&quot;, # Permissions to view group messages. Possible values are:
      # - ANYONE_CAN_VIEW: Any Internet user can view the group&#x27;s messages.
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group&#x27;s messages.
      # - ALL_MEMBERS_CAN_VIEW: All group members can view the group&#x27;s messages.
      # - ALL_MANAGERS_CAN_VIEW: Any group manager can view this group&#x27;s messages.
  &quot;whoCanViewMembership&quot;: &quot;A String&quot;, # Permissions to view membership. Possible values are:
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.
      # If a group already has external members, those members can still send email to this group.
      # 
      # - ALL_MEMBERS_CAN_VIEW: The group members can view the group members list.
      # - ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.
}


Returns:
  An object of the form:

    { # JSON template for Group resource
  &quot;allowExternalMembers&quot;: &quot;A String&quot;, # Identifies whether members external to your organization can join the group. Possible values are:
      # - true: G Suite users external to your organization can become members of this group.
      # - false: Users not belonging to the organization are not allowed to become members of this group.
  &quot;allowGoogleCommunication&quot;: &quot;A String&quot;, # Deprecated. Allows Google to contact administrator of the group.
      # - true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group.
      # - false: Google can not contact managers of this group.
  &quot;allowWebPosting&quot;: &quot;A String&quot;, # Allows posting from web. Possible values are:
      # - true: Allows any member to post to the group forum.
      # - false: Members only use Gmail to communicate with the group.
  &quot;archiveOnly&quot;: &quot;A String&quot;, # Allows the group to be archived only. Possible values are:
      # - true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable.
      # - If true, the whoCanPostMessage property is set to NONE_CAN_POST.
      # - If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - false: The group is active and can receive messages.
      # - When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
  &quot;customFooterText&quot;: &quot;A String&quot;, # Set the content of custom footer text. The maximum number of characters is 1,000.
  &quot;customReplyTo&quot;: &quot;A String&quot;, # An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator.
      # - When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message.
      # - If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.
  &quot;customRolesEnabledForSettingsToBeMerged&quot;: &quot;A String&quot;, # Specifies whether the group has a custom role that&#x27;s included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are:
      # - true
      # - false
  &quot;defaultMessageDenyNotificationText&quot;: &quot;A String&quot;, # When a message is rejected, this is text for the rejection notification sent to the message&#x27;s author. By default, this property is empty and has no value in the API&#x27;s response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.
  &quot;default_sender&quot;: &quot;A String&quot;, # Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group
  &quot;description&quot;: &quot;A String&quot;, # Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.
  &quot;email&quot;: &quot;A String&quot;, # The group&#x27;s email address. This property can be updated using the Directory API. Note: Only a group owner can change a group&#x27;s email address. A group manager can&#x27;t do this.
      # When you change your group&#x27;s address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can&#x27;t reach your group by visiting the old address.
  &quot;enableCollaborativeInbox&quot;: &quot;A String&quot;, # Specifies whether a collaborative inbox will remain turned on for the group. Possible values are:
      # - true
      # - false
  &quot;favoriteRepliesOnTop&quot;: &quot;A String&quot;, # Indicates if favorite replies should be displayed above other replies.
      # - true: Favorite replies will be displayed above other replies.
      # - false: Favorite replies will not be displayed above other replies.
  &quot;includeCustomFooter&quot;: &quot;A String&quot;, # Whether to include custom footer. Possible values are:
      # - true
      # - false
  &quot;includeInGlobalAddressList&quot;: &quot;A String&quot;, # Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are:
      # - true: Group is included in the Global Address List.
      # - false: Group is not included in the Global Address List.
  &quot;isArchived&quot;: &quot;A String&quot;, # Allows the Group contents to be archived. Possible values are:
      # - true: Archive messages sent to the group.
      # - false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.
  &quot;kind&quot;: &quot;groupsSettings#groups&quot;, # The type of the resource. It is always groupsSettings#groups.
  &quot;maxMessageBytes&quot;: 42, # Deprecated. The maximum size of a message is 25Mb.
  &quot;membersCanPostAsTheGroup&quot;: &quot;A String&quot;, # Enables members to post messages as the group. Possible values are:
      # - true: Group member can post messages using the group&#x27;s email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group.
      # - false: Members can not post in behalf of the group&#x27;s email address.
  &quot;messageDisplayFont&quot;: &quot;A String&quot;, # Deprecated. The default message display font always has a value of &quot;DEFAULT_FONT&quot;.
  &quot;messageModerationLevel&quot;: &quot;A String&quot;, # Moderation level of incoming messages. Possible values are:
      # - MODERATE_ALL_MESSAGES: All messages are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner&#x27;s email address for approval. If approved, the message is sent to the group.
      # - MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
      # When memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.
  &quot;name&quot;: &quot;A String&quot;, # Name of the group, which has a maximum size of 75 characters.
  &quot;primaryLanguage&quot;: &quot;A String&quot;, # The primary language for group. For a group&#x27;s primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.
  &quot;replyTo&quot;: &quot;A String&quot;, # Specifies who receives the default reply. Possible values are:
      # - REPLY_TO_CUSTOM: For replies to messages, use the group&#x27;s custom email address.
      # When the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group&#x27;s ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.
      #
      # - REPLY_TO_SENDER: The reply sent to author of message.
      # - REPLY_TO_LIST: This reply message is sent to the group.
      # - REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group&#x27;s managers.
      # - REPLY_TO_IGNORE: Group users individually decide where the message reply is sent.
      # - REPLY_TO_MANAGERS: This reply message is sent to the group&#x27;s managers, which includes all managers and the group owner.
  &quot;sendMessageDenyNotification&quot;: &quot;A String&quot;, # Allows a member to be notified if the member&#x27;s message to the group is denied by the group owner. Possible values are:
      # - true: When a message is rejected, send the deny message notification to the message author.
      # The defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.
      #
      # - false: When a message is rejected, no notification is sent.
  &quot;showInGroupDirectory&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are:
      # - true: All groups in the account are listed in the Groups directory.
      # - false: All groups in the account are not listed in the directory.
  &quot;spamModerationLevel&quot;: &quot;A String&quot;, # Specifies moderation levels for messages detected as spam. Possible values are:
      # - ALLOW: Post the message to the group.
      # - MODERATE: Send the message to the moderation queue. This is the default.
      # - SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators.
      # - REJECT: Immediately reject the message.
  &quot;whoCanAdd&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are:
      # - ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members.
      # - ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_ADD: Only owners can directly add new members.
      # - NONE_CAN_ADD: No one can directly add new members.
  &quot;whoCanAddReferences&quot;: &quot;A String&quot;, # Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always &quot;NONE&quot;.
  &quot;whoCanApproveMembers&quot;: &quot;A String&quot;, # Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS_CAN_APPROVE
      # - ALL_MANAGERS_CAN_APPROVE
      # - ALL_OWNERS_CAN_APPROVE
      # - NONE_CAN_APPROVE
  &quot;whoCanApproveMessages&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssignTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanAssistContent&quot;: &quot;A String&quot;, # Specifies who can moderate metadata. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanBanUsers&quot;: &quot;A String&quot;, # Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanContactOwner&quot;: &quot;A String&quot;, # Permission to contact owner of the group via web UI. Possible values are:
      # - ALL_IN_DOMAIN_CAN_CONTACT
      # - ALL_MANAGERS_CAN_CONTACT
      # - ALL_MEMBERS_CAN_CONTACT
      # - ANYONE_CAN_CONTACT
      # - ALL_OWNERS_CAN_CONTACT
  &quot;whoCanDeleteAnyPost&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDeleteTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanDiscoverGroup&quot;: &quot;A String&quot;, # Specifies the set of users for whom this group is discoverable. Possible values are:
      # - ANYONE_CAN_DISCOVER
      # - ALL_IN_DOMAIN_CAN_DISCOVER
      # - ALL_MEMBERS_CAN_DISCOVER
  &quot;whoCanEnterFreeFormTags&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanHideAbuse&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanInvite&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are:
      # - ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate.
      # - ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group&#x27;s owner.
      # - ALL_OWNERS_CAN_INVITE: Only owners can invite a new member.
      # - NONE_CAN_INVITE: No one can invite a new member candidate.
  &quot;whoCanJoin&quot;: &quot;A String&quot;, # Permission to join group. Possible values are:
      # - ANYONE_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains.
      # - ALL_IN_DOMAIN_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users&#x27; groups remain in those groups.
      # - INVITED_CAN_JOIN: Candidates for membership can be invited to join.
      # - CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.
  &quot;whoCanLeaveGroup&quot;: &quot;A String&quot;, # Permission to leave the group. Possible values are:
      # - ALL_MANAGERS_CAN_LEAVE
      # - ALL_MEMBERS_CAN_LEAVE
      # - NONE_CAN_LEAVE
  &quot;whoCanLockTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMakeTopicsSticky&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkDuplicate&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user&#x27;s post as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkFavoriteReplyOnOwnTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMarkNoResponseNeeded&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateContent&quot;: &quot;A String&quot;, # Specifies who can moderate content. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModerateMembers&quot;: &quot;A String&quot;, # Specifies who can manage members. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyMembers&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members&#x27; roles. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanModifyTagsAndCategories&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsIn&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanMoveTopicsOut&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostAnnouncements&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanPostMessage&quot;: &quot;A String&quot;, # Permissions to post messages. Possible values are:
      # - NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group.
      # - When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.
      # - If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST.
      # - ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages.
      # - ALL_MEMBERS_CAN_POST: Any group member can post a message.
      # - ALL_OWNERS_CAN_POST: Only group owners can post a message.
      # - ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message.
      # - ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.
  &quot;whoCanTakeTopics&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnassignTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanUnmarkFavoriteReplyOnAnyTopic&quot;: &quot;A String&quot;, # Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are:
      # - ALL_MEMBERS
      # - OWNERS_AND_MANAGERS
      # - MANAGERS_ONLY
      # - OWNERS_ONLY
      # - NONE
  &quot;whoCanViewGroup&quot;: &quot;A String&quot;, # Permissions to view group messages. Possible values are:
      # - ANYONE_CAN_VIEW: Any Internet user can view the group&#x27;s messages.
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group&#x27;s messages.
      # - ALL_MEMBERS_CAN_VIEW: All group members can view the group&#x27;s messages.
      # - ALL_MANAGERS_CAN_VIEW: Any group manager can view this group&#x27;s messages.
  &quot;whoCanViewMembership&quot;: &quot;A String&quot;, # Permissions to view membership. Possible values are:
      # - ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.
      # If a group already has external members, those members can still send email to this group.
      #
      # - ALL_MEMBERS_CAN_VIEW: The group members can view the group members list.
      # - ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.
}</pre>
</div>

</body></html>