-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Groups Settings SDK.
--   
--   Lets you manage permission levels and related settings of a group.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-groups-settings
@version 0.3.0


module Network.Google.GroupsSettings.Types

-- | Default request referring to version <tt>v1</tt> of the Groups
--   Settings API. This contains the host and root path used as a starting
--   point for constructing service requests.
groupsSettingsService :: ServiceConfig

-- | View and manage the settings of a Google Apps Group
appsGroupsSettingsScope :: Proxy '["https://www.googleapis.com/auth/apps.groups.settings"]

-- | JSON template for Group resource
--   
--   <i>See:</i> <a>groups</a> smart constructor.
data Groups

-- | Creates a value of <a>Groups</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gEmail</a></li>
--   <li><a>gSendMessageDenyNotification</a></li>
--   <li><a>gWhoCanPostMessage</a></li>
--   <li><a>gAllowExternalMembers</a></li>
--   <li><a>gShowInGroupDirectory</a></li>
--   <li><a>gSpamModerationLevel</a></li>
--   <li><a>gKind</a></li>
--   <li><a>gWhoCanViewMembership</a></li>
--   <li><a>gMembersCanPostAsTheGroup</a></li>
--   <li><a>gWhoCanViewGroup</a></li>
--   <li><a>gWhoCanJoin</a></li>
--   <li><a>gArchiveOnly</a></li>
--   <li><a>gMaxMessageBytes</a></li>
--   <li><a>gReplyTo</a></li>
--   <li><a>gMessageModerationLevel</a></li>
--   <li><a>gIncludeInGlobalAddressList</a></li>
--   <li><a>gIsArchived</a></li>
--   <li><a>gName</a></li>
--   <li><a>gMessageDisplayFont</a></li>
--   <li><a>gIncludeCustomFooter</a></li>
--   <li><a>gCustomReplyTo</a></li>
--   <li><a>gWhoCanContactOwner</a></li>
--   <li><a>gWhoCanAdd</a></li>
--   <li><a>gWhoCanInvite</a></li>
--   <li><a>gWhoCanLeaveGroup</a></li>
--   <li><a>gAllowGoogleCommunication</a></li>
--   <li><a>gCustomFooterText</a></li>
--   <li><a>gPrimaryLanguage</a></li>
--   <li><a>gDescription</a></li>
--   <li><a>gDefaultMessageDenyNotificationText</a></li>
--   <li><a>gAllowWebPosting</a></li>
--   </ul>
groups :: Groups

-- | Email id of the group
gEmail :: Lens' Groups (Maybe Text)

-- | Should the member be notified if his message is denied by owner.
gSendMessageDenyNotification :: Lens' Groups (Maybe Text)

-- | Permissions to post messages to the group. Possible values are:
--   NONE_CAN_POST ALL_MANAGERS_CAN_POST ALL_MEMBERS_CAN_POST
--   ALL_IN_DOMAIN_CAN_POST ANYONE_CAN_POST
gWhoCanPostMessage :: Lens' Groups (Maybe Text)

-- | Are external members allowed to join the group.
gAllowExternalMembers :: Lens' Groups (Maybe Text)

-- | Is the group listed in groups directory
gShowInGroupDirectory :: Lens' Groups (Maybe Text)

-- | Moderation level for messages detected as spam. Possible values are:
--   ALLOW MODERATE SILENTLY_MODERATE REJECT
gSpamModerationLevel :: Lens' Groups (Maybe Text)

-- | The type of the resource.
gKind :: Lens' Groups Text

-- | Permissions to view membership. Possible values are:
--   ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW
gWhoCanViewMembership :: Lens' Groups (Maybe Text)

-- | Can members post using the group email address.
gMembersCanPostAsTheGroup :: Lens' Groups (Maybe Text)

-- | Permissions to view group. Possible values are: ANYONE_CAN_VIEW
--   ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW
gWhoCanViewGroup :: Lens' Groups (Maybe Text)

-- | Permissions to join the group. Possible values are: ANYONE_CAN_JOIN
--   ALL_IN_DOMAIN_CAN_JOIN INVITED_CAN_JOIN CAN_REQUEST_TO_JOIN
gWhoCanJoin :: Lens' Groups (Maybe Text)

-- | If the group is archive only
gArchiveOnly :: Lens' Groups (Maybe Text)

-- | Maximum message size allowed.
gMaxMessageBytes :: Lens' Groups (Maybe Int32)

-- | Whome should the default reply to a message go to. Possible values
--   are: REPLY_TO_CUSTOM REPLY_TO_SENDER REPLY_TO_LIST REPLY_TO_OWNER
--   REPLY_TO_IGNORE REPLY_TO_MANAGERS
gReplyTo :: Lens' Groups (Maybe Text)

-- | Moderation level for messages. Possible values are:
--   MODERATE_ALL_MESSAGES MODERATE_NON_MEMBERS MODERATE_NEW_MEMBERS
--   MODERATE_NONE
gMessageModerationLevel :: Lens' Groups (Maybe Text)

-- | If this groups should be included in global address list or not.
gIncludeInGlobalAddressList :: Lens' Groups (Maybe Text)

-- | If the contents of the group are archived.
gIsArchived :: Lens' Groups (Maybe Text)

-- | Name of the Group
gName :: Lens' Groups (Maybe Text)

-- | Default message display font. Possible values are: DEFAULT_FONT
--   FIXED_WIDTH_FONT
gMessageDisplayFont :: Lens' Groups (Maybe Text)

-- | Whether to include custom footer.
gIncludeCustomFooter :: Lens' Groups (Maybe Text)

-- | Default email to which reply to any message should go.
gCustomReplyTo :: Lens' Groups (Maybe Text)

-- | Permission to contact owner of the group via web UI. Possible values
--   are: ANYONE_CAN_CONTACT ALL_IN_DOMAIN_CAN_CONTACT
--   ALL_MEMBERS_CAN_CONTACT ALL_MANAGERS_CAN_CONTACT
gWhoCanContactOwner :: Lens' Groups (Maybe Text)

-- | Permissions to add members. Possible values are: ALL_MANAGERS_CAN_ADD
--   ALL_MEMBERS_CAN_ADD NONE_CAN_ADD
gWhoCanAdd :: Lens' Groups (Maybe Text)

-- | Permissions to invite members. Possible values are:
--   ALL_MEMBERS_CAN_INVITE ALL_MANAGERS_CAN_INVITE NONE_CAN_INVITE
gWhoCanInvite :: Lens' Groups (Maybe Text)

-- | Permission to leave the group. Possible values are:
--   ALL_MANAGERS_CAN_LEAVE ALL_MEMBERS_CAN_LEAVE NONE_CAN_LEAVE
gWhoCanLeaveGroup :: Lens' Groups (Maybe Text)

-- | Is google allowed to contact admins.
gAllowGoogleCommunication :: Lens' Groups (Maybe Text)

-- | Custom footer text.
gCustomFooterText :: Lens' Groups (Maybe Text)

-- | Primary language for the group.
gPrimaryLanguage :: Lens' Groups (Maybe Text)

-- | Description of the group
gDescription :: Lens' Groups (Maybe Text)

-- | Default message deny notification message
gDefaultMessageDenyNotificationText :: Lens' Groups (Maybe Text)

-- | If posting from web is allowed.
gAllowWebPosting :: Lens' Groups (Maybe Text)


-- | Gets one resource by id.
--   
--   <i>See:</i> <a>Groups Settings API Reference</a> for
--   <tt>groupsSettings.groups.get</tt>.
module Network.Google.Resource.GroupsSettings.Groups.Get

-- | A resource alias for <tt>groupsSettings.groups.get</tt> method which
--   the <a>GroupsGet</a> request conforms to.
type GroupsGetResource = "groups" :> ("v1" :> ("groups" :> (Capture "groupUniqueId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Groups))))

-- | Creates a value of <a>GroupsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ggGroupUniqueId</a></li>
--   </ul>
groupsGet :: Text -> GroupsGet

-- | Gets one resource by id.
--   
--   <i>See:</i> <a>groupsGet</a> smart constructor.
data GroupsGet

-- | The resource ID
ggGroupUniqueId :: Lens' GroupsGet Text
instance GHC.Generics.Generic Network.Google.Resource.GroupsSettings.Groups.Get.GroupsGet
instance Data.Data.Data Network.Google.Resource.GroupsSettings.Groups.Get.GroupsGet
instance GHC.Show.Show Network.Google.Resource.GroupsSettings.Groups.Get.GroupsGet
instance GHC.Classes.Eq Network.Google.Resource.GroupsSettings.Groups.Get.GroupsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.GroupsSettings.Groups.Get.GroupsGet


-- | Updates an existing resource. This method supports patch semantics.
--   
--   <i>See:</i> <a>Groups Settings API Reference</a> for
--   <tt>groupsSettings.groups.patch</tt>.
module Network.Google.Resource.GroupsSettings.Groups.Patch

-- | A resource alias for <tt>groupsSettings.groups.patch</tt> method which
--   the <a>GroupsPatch</a> request conforms to.
type GroupsPatchResource = "groups" :> ("v1" :> ("groups" :> (Capture "groupUniqueId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Groups :> Patch '[JSON] Groups)))))

-- | Creates a value of <a>GroupsPatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpPayload</a></li>
--   <li><a>gpGroupUniqueId</a></li>
--   </ul>
groupsPatch :: Groups -> Text -> GroupsPatch

-- | Updates an existing resource. This method supports patch semantics.
--   
--   <i>See:</i> <a>groupsPatch</a> smart constructor.
data GroupsPatch

-- | Multipart request metadata.
gpPayload :: Lens' GroupsPatch Groups

-- | The resource ID
gpGroupUniqueId :: Lens' GroupsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.GroupsSettings.Groups.Patch.GroupsPatch
instance Data.Data.Data Network.Google.Resource.GroupsSettings.Groups.Patch.GroupsPatch
instance GHC.Show.Show Network.Google.Resource.GroupsSettings.Groups.Patch.GroupsPatch
instance GHC.Classes.Eq Network.Google.Resource.GroupsSettings.Groups.Patch.GroupsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.GroupsSettings.Groups.Patch.GroupsPatch


-- | Updates an existing resource.
--   
--   <i>See:</i> <a>Groups Settings API Reference</a> for
--   <tt>groupsSettings.groups.update</tt>.
module Network.Google.Resource.GroupsSettings.Groups.Update

-- | A resource alias for <tt>groupsSettings.groups.update</tt> method
--   which the <a>GroupsUpdate</a> request conforms to.
type GroupsUpdateResource = "groups" :> ("v1" :> ("groups" :> (Capture "groupUniqueId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Groups :> Put '[JSON] Groups)))))

-- | Creates a value of <a>GroupsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>guPayload</a></li>
--   <li><a>guGroupUniqueId</a></li>
--   </ul>
groupsUpdate :: Groups -> Text -> GroupsUpdate

-- | Updates an existing resource.
--   
--   <i>See:</i> <a>groupsUpdate</a> smart constructor.
data GroupsUpdate

-- | Multipart request metadata.
guPayload :: Lens' GroupsUpdate Groups

-- | The resource ID
guGroupUniqueId :: Lens' GroupsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.GroupsSettings.Groups.Update.GroupsUpdate
instance Data.Data.Data Network.Google.Resource.GroupsSettings.Groups.Update.GroupsUpdate
instance GHC.Show.Show Network.Google.Resource.GroupsSettings.Groups.Update.GroupsUpdate
instance GHC.Classes.Eq Network.Google.Resource.GroupsSettings.Groups.Update.GroupsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.GroupsSettings.Groups.Update.GroupsUpdate


-- | Lets you manage permission levels and related settings of a group.
--   
--   <i>See:</i> <a>Groups Settings API Reference</a>
module Network.Google.GroupsSettings

-- | Default request referring to version <tt>v1</tt> of the Groups
--   Settings API. This contains the host and root path used as a starting
--   point for constructing service requests.
groupsSettingsService :: ServiceConfig

-- | View and manage the settings of a Google Apps Group
appsGroupsSettingsScope :: Proxy '["https://www.googleapis.com/auth/apps.groups.settings"]

-- | Represents the entirety of the methods and resources available for the
--   Groups Settings API service.
type GroupsSettingsAPI = GroupsPatchResource :<|> (GroupsGetResource :<|> GroupsUpdateResource)

-- | JSON template for Group resource
--   
--   <i>See:</i> <a>groups</a> smart constructor.
data Groups

-- | Creates a value of <a>Groups</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gEmail</a></li>
--   <li><a>gSendMessageDenyNotification</a></li>
--   <li><a>gWhoCanPostMessage</a></li>
--   <li><a>gAllowExternalMembers</a></li>
--   <li><a>gShowInGroupDirectory</a></li>
--   <li><a>gSpamModerationLevel</a></li>
--   <li><a>gKind</a></li>
--   <li><a>gWhoCanViewMembership</a></li>
--   <li><a>gMembersCanPostAsTheGroup</a></li>
--   <li><a>gWhoCanViewGroup</a></li>
--   <li><a>gWhoCanJoin</a></li>
--   <li><a>gArchiveOnly</a></li>
--   <li><a>gMaxMessageBytes</a></li>
--   <li><a>gReplyTo</a></li>
--   <li><a>gMessageModerationLevel</a></li>
--   <li><a>gIncludeInGlobalAddressList</a></li>
--   <li><a>gIsArchived</a></li>
--   <li><a>gName</a></li>
--   <li><a>gMessageDisplayFont</a></li>
--   <li><a>gIncludeCustomFooter</a></li>
--   <li><a>gCustomReplyTo</a></li>
--   <li><a>gWhoCanContactOwner</a></li>
--   <li><a>gWhoCanAdd</a></li>
--   <li><a>gWhoCanInvite</a></li>
--   <li><a>gWhoCanLeaveGroup</a></li>
--   <li><a>gAllowGoogleCommunication</a></li>
--   <li><a>gCustomFooterText</a></li>
--   <li><a>gPrimaryLanguage</a></li>
--   <li><a>gDescription</a></li>
--   <li><a>gDefaultMessageDenyNotificationText</a></li>
--   <li><a>gAllowWebPosting</a></li>
--   </ul>
groups :: Groups

-- | Email id of the group
gEmail :: Lens' Groups (Maybe Text)

-- | Should the member be notified if his message is denied by owner.
gSendMessageDenyNotification :: Lens' Groups (Maybe Text)

-- | Permissions to post messages to the group. Possible values are:
--   NONE_CAN_POST ALL_MANAGERS_CAN_POST ALL_MEMBERS_CAN_POST
--   ALL_IN_DOMAIN_CAN_POST ANYONE_CAN_POST
gWhoCanPostMessage :: Lens' Groups (Maybe Text)

-- | Are external members allowed to join the group.
gAllowExternalMembers :: Lens' Groups (Maybe Text)

-- | Is the group listed in groups directory
gShowInGroupDirectory :: Lens' Groups (Maybe Text)

-- | Moderation level for messages detected as spam. Possible values are:
--   ALLOW MODERATE SILENTLY_MODERATE REJECT
gSpamModerationLevel :: Lens' Groups (Maybe Text)

-- | The type of the resource.
gKind :: Lens' Groups Text

-- | Permissions to view membership. Possible values are:
--   ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW
gWhoCanViewMembership :: Lens' Groups (Maybe Text)

-- | Can members post using the group email address.
gMembersCanPostAsTheGroup :: Lens' Groups (Maybe Text)

-- | Permissions to view group. Possible values are: ANYONE_CAN_VIEW
--   ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW
gWhoCanViewGroup :: Lens' Groups (Maybe Text)

-- | Permissions to join the group. Possible values are: ANYONE_CAN_JOIN
--   ALL_IN_DOMAIN_CAN_JOIN INVITED_CAN_JOIN CAN_REQUEST_TO_JOIN
gWhoCanJoin :: Lens' Groups (Maybe Text)

-- | If the group is archive only
gArchiveOnly :: Lens' Groups (Maybe Text)

-- | Maximum message size allowed.
gMaxMessageBytes :: Lens' Groups (Maybe Int32)

-- | Whome should the default reply to a message go to. Possible values
--   are: REPLY_TO_CUSTOM REPLY_TO_SENDER REPLY_TO_LIST REPLY_TO_OWNER
--   REPLY_TO_IGNORE REPLY_TO_MANAGERS
gReplyTo :: Lens' Groups (Maybe Text)

-- | Moderation level for messages. Possible values are:
--   MODERATE_ALL_MESSAGES MODERATE_NON_MEMBERS MODERATE_NEW_MEMBERS
--   MODERATE_NONE
gMessageModerationLevel :: Lens' Groups (Maybe Text)

-- | If this groups should be included in global address list or not.
gIncludeInGlobalAddressList :: Lens' Groups (Maybe Text)

-- | If the contents of the group are archived.
gIsArchived :: Lens' Groups (Maybe Text)

-- | Name of the Group
gName :: Lens' Groups (Maybe Text)

-- | Default message display font. Possible values are: DEFAULT_FONT
--   FIXED_WIDTH_FONT
gMessageDisplayFont :: Lens' Groups (Maybe Text)

-- | Whether to include custom footer.
gIncludeCustomFooter :: Lens' Groups (Maybe Text)

-- | Default email to which reply to any message should go.
gCustomReplyTo :: Lens' Groups (Maybe Text)

-- | Permission to contact owner of the group via web UI. Possible values
--   are: ANYONE_CAN_CONTACT ALL_IN_DOMAIN_CAN_CONTACT
--   ALL_MEMBERS_CAN_CONTACT ALL_MANAGERS_CAN_CONTACT
gWhoCanContactOwner :: Lens' Groups (Maybe Text)

-- | Permissions to add members. Possible values are: ALL_MANAGERS_CAN_ADD
--   ALL_MEMBERS_CAN_ADD NONE_CAN_ADD
gWhoCanAdd :: Lens' Groups (Maybe Text)

-- | Permissions to invite members. Possible values are:
--   ALL_MEMBERS_CAN_INVITE ALL_MANAGERS_CAN_INVITE NONE_CAN_INVITE
gWhoCanInvite :: Lens' Groups (Maybe Text)

-- | Permission to leave the group. Possible values are:
--   ALL_MANAGERS_CAN_LEAVE ALL_MEMBERS_CAN_LEAVE NONE_CAN_LEAVE
gWhoCanLeaveGroup :: Lens' Groups (Maybe Text)

-- | Is google allowed to contact admins.
gAllowGoogleCommunication :: Lens' Groups (Maybe Text)

-- | Custom footer text.
gCustomFooterText :: Lens' Groups (Maybe Text)

-- | Primary language for the group.
gPrimaryLanguage :: Lens' Groups (Maybe Text)

-- | Description of the group
gDescription :: Lens' Groups (Maybe Text)

-- | Default message deny notification message
gDefaultMessageDenyNotificationText :: Lens' Groups (Maybe Text)

-- | If posting from web is allowed.
gAllowWebPosting :: Lens' Groups (Maybe Text)
