packages feed

gogol-chat (empty) → 0.4.0

raw patch · 17 files changed

+4588/−0 lines, 17 filesdep +basedep +gogol-coresetup-changed

Dependencies added: base, gogol-core

Files

+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,28 @@+# gogol-chat++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`0.3.0`+++## Description++A client library for the Google Hangouts Chat.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.+++## Licence++`gogol-chat` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import           Distribution.Simple+main = defaultMain
+ gen/Network/Google/Chat.hs view
@@ -0,0 +1,308 @@+{-# LANGUAGE DataKinds         #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TypeOperators     #-}++{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- |+-- Module      : Network.Google.Chat+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enables bots to fetch information and perform actions in Hangouts Chat.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference>+module Network.Google.Chat+    (+    -- * Service Configuration+      chatService++    -- * API Declaration+    , ChatAPI++    -- * Resources++    -- ** chat.spaces.get+    , module Network.Google.Resource.Chat.Spaces.Get++    -- ** chat.spaces.list+    , module Network.Google.Resource.Chat.Spaces.List++    -- ** chat.spaces.members.get+    , module Network.Google.Resource.Chat.Spaces.Members.Get++    -- ** chat.spaces.members.list+    , module Network.Google.Resource.Chat.Spaces.Members.List++    -- ** chat.spaces.messages.create+    , module Network.Google.Resource.Chat.Spaces.Messages.Create++    -- ** chat.spaces.messages.delete+    , module Network.Google.Resource.Chat.Spaces.Messages.Delete++    -- ** chat.spaces.messages.get+    , module Network.Google.Resource.Chat.Spaces.Messages.Get++    -- ** chat.spaces.messages.update+    , module Network.Google.Resource.Chat.Spaces.Messages.Update++    -- * Types++    -- ** Card+    , Card+    , card+    , cCardActions+    , cName+    , cHeader+    , cSections++    -- ** Space+    , Space+    , space+    , sName+    , sDisplayName+    , sType++    -- ** KeyValue+    , KeyValue+    , keyValue+    , kvOnClick+    , kvTopLabel+    , kvIcon+    , kvButton+    , kvContent+    , kvIconURL+    , kvContentMultiline+    , kvBottomLabel++    -- ** WidgetMarkup+    , WidgetMarkup+    , widgetMarkup+    , wmKeyValue+    , wmImage+    , wmButtons+    , wmTextParagraph++    -- ** OnClick+    , OnClick+    , onClick+    , ocAction+    , ocOpenLink++    -- ** Annotation+    , Annotation+    , annotation+    , aLength+    , aType+    , aUserMention+    , aStartIndex++    -- ** Image+    , Image+    , image+    , iOnClick+    , iAspectRatio+    , iImageURL++    -- ** KeyValueIcon+    , KeyValueIcon (..)++    -- ** ActionParameter+    , ActionParameter+    , actionParameter+    , apValue+    , apKey++    -- ** Membership+    , Membership+    , membership+    , mState+    , mName+    , mMember+    , mCreateTime++    -- ** ActionResponseType+    , ActionResponseType (..)++    -- ** Empty+    , Empty+    , empty++    -- ** DeprecatedEvent+    , DeprecatedEvent+    , deprecatedEvent+    , deSpace+    , deToken+    , deAction+    , deEventTime+    , deUser+    , deConfigCompleteRedirectURL+    , deType+    , deMessage+    , deThreadKey++    -- ** MembershipState+    , MembershipState (..)++    -- ** CardHeaderImageStyle+    , CardHeaderImageStyle (..)++    -- ** TextParagraph+    , TextParagraph+    , textParagraph+    , tpText++    -- ** Button+    , Button+    , button+    , bTextButton+    , bImageButton++    -- ** UserMentionMetadataType+    , UserMentionMetadataType (..)++    -- ** ListSpacesResponse+    , ListSpacesResponse+    , listSpacesResponse+    , lsrNextPageToken+    , lsrSpaces++    -- ** User+    , User+    , user+    , uName+    , uDisplayName+    , uType++    -- ** SpaceType+    , SpaceType (..)++    -- ** OpenLink+    , OpenLink+    , openLink+    , olURL++    -- ** AnnotationType+    , AnnotationType (..)++    -- ** ImageButtonIcon+    , ImageButtonIcon (..)++    -- ** CardAction+    , CardAction+    , cardAction+    , caOnClick+    , caActionLabel++    -- ** Xgafv+    , Xgafv (..)++    -- ** DeprecatedEventType+    , DeprecatedEventType (..)++    -- ** ActionResponse+    , ActionResponse+    , actionResponse+    , arURL+    , arType++    -- ** FormAction+    , FormAction+    , formAction+    , faActionMethodName+    , faParameters++    -- ** ListMembershipsResponse+    , ListMembershipsResponse+    , listMembershipsResponse+    , lmrNextPageToken+    , lmrMemberships++    -- ** Message+    , Message+    , message+    , mesAnnotations+    , mesSpace+    , mesText+    , mesSender+    , mesName+    , mesPreviewText+    , mesCards+    , mesActionResponse+    , mesArgumentText+    , mesThread+    , mesFallbackText+    , mesCreateTime++    -- ** CardHeader+    , CardHeader+    , cardHeader+    , chSubtitle+    , chImageURL+    , chTitle+    , chImageStyle++    -- ** TextButton+    , TextButton+    , textButton+    , tbOnClick+    , tbText++    -- ** Thread+    , Thread+    , thread+    , tName++    -- ** UserMentionMetadata+    , UserMentionMetadata+    , userMentionMetadata+    , ummUser+    , ummType++    -- ** ImageButton+    , ImageButton+    , imageButton+    , ibOnClick+    , ibIcon+    , ibName+    , ibIconURL++    -- ** Section+    , Section+    , section+    , sWidgets+    , sHeader++    -- ** UserType+    , UserType (..)+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude+import           Network.Google.Resource.Chat.Spaces.Get+import           Network.Google.Resource.Chat.Spaces.List+import           Network.Google.Resource.Chat.Spaces.Members.Get+import           Network.Google.Resource.Chat.Spaces.Members.List+import           Network.Google.Resource.Chat.Spaces.Messages.Create+import           Network.Google.Resource.Chat.Spaces.Messages.Delete+import           Network.Google.Resource.Chat.Spaces.Messages.Get+import           Network.Google.Resource.Chat.Spaces.Messages.Update++{- $resources+TODO+-}++-- | Represents the entirety of the methods and resources available for the Hangouts Chat API service.+type ChatAPI =+     SpacesMembersListResource :<|>+       SpacesMembersGetResource+       :<|> SpacesMessagesGetResource+       :<|> SpacesMessagesCreateResource+       :<|> SpacesMessagesDeleteResource+       :<|> SpacesMessagesUpdateResource+       :<|> SpacesListResource+       :<|> SpacesGetResource
+ gen/Network/Google/Chat/Types.hs view
@@ -0,0 +1,259 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Chat.Types+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Chat.Types+    (+    -- * Service Configuration+      chatService++    -- * Card+    , Card+    , card+    , cCardActions+    , cName+    , cHeader+    , cSections++    -- * Space+    , Space+    , space+    , sName+    , sDisplayName+    , sType++    -- * KeyValue+    , KeyValue+    , keyValue+    , kvOnClick+    , kvTopLabel+    , kvIcon+    , kvButton+    , kvContent+    , kvIconURL+    , kvContentMultiline+    , kvBottomLabel++    -- * WidgetMarkup+    , WidgetMarkup+    , widgetMarkup+    , wmKeyValue+    , wmImage+    , wmButtons+    , wmTextParagraph++    -- * OnClick+    , OnClick+    , onClick+    , ocAction+    , ocOpenLink++    -- * Annotation+    , Annotation+    , annotation+    , aLength+    , aType+    , aUserMention+    , aStartIndex++    -- * Image+    , Image+    , image+    , iOnClick+    , iAspectRatio+    , iImageURL++    -- * KeyValueIcon+    , KeyValueIcon (..)++    -- * ActionParameter+    , ActionParameter+    , actionParameter+    , apValue+    , apKey++    -- * Membership+    , Membership+    , membership+    , mState+    , mName+    , mMember+    , mCreateTime++    -- * ActionResponseType+    , ActionResponseType (..)++    -- * Empty+    , Empty+    , empty++    -- * DeprecatedEvent+    , DeprecatedEvent+    , deprecatedEvent+    , deSpace+    , deToken+    , deAction+    , deEventTime+    , deUser+    , deConfigCompleteRedirectURL+    , deType+    , deMessage+    , deThreadKey++    -- * MembershipState+    , MembershipState (..)++    -- * CardHeaderImageStyle+    , CardHeaderImageStyle (..)++    -- * TextParagraph+    , TextParagraph+    , textParagraph+    , tpText++    -- * Button+    , Button+    , button+    , bTextButton+    , bImageButton++    -- * UserMentionMetadataType+    , UserMentionMetadataType (..)++    -- * ListSpacesResponse+    , ListSpacesResponse+    , listSpacesResponse+    , lsrNextPageToken+    , lsrSpaces++    -- * User+    , User+    , user+    , uName+    , uDisplayName+    , uType++    -- * SpaceType+    , SpaceType (..)++    -- * OpenLink+    , OpenLink+    , openLink+    , olURL++    -- * AnnotationType+    , AnnotationType (..)++    -- * ImageButtonIcon+    , ImageButtonIcon (..)++    -- * CardAction+    , CardAction+    , cardAction+    , caOnClick+    , caActionLabel++    -- * Xgafv+    , Xgafv (..)++    -- * DeprecatedEventType+    , DeprecatedEventType (..)++    -- * ActionResponse+    , ActionResponse+    , actionResponse+    , arURL+    , arType++    -- * FormAction+    , FormAction+    , formAction+    , faActionMethodName+    , faParameters++    -- * ListMembershipsResponse+    , ListMembershipsResponse+    , listMembershipsResponse+    , lmrNextPageToken+    , lmrMemberships++    -- * Message+    , Message+    , message+    , mesAnnotations+    , mesSpace+    , mesText+    , mesSender+    , mesName+    , mesPreviewText+    , mesCards+    , mesActionResponse+    , mesArgumentText+    , mesThread+    , mesFallbackText+    , mesCreateTime++    -- * CardHeader+    , CardHeader+    , cardHeader+    , chSubtitle+    , chImageURL+    , chTitle+    , chImageStyle++    -- * TextButton+    , TextButton+    , textButton+    , tbOnClick+    , tbText++    -- * Thread+    , Thread+    , thread+    , tName++    -- * UserMentionMetadata+    , UserMentionMetadata+    , userMentionMetadata+    , ummUser+    , ummType++    -- * ImageButton+    , ImageButton+    , imageButton+    , ibOnClick+    , ibIcon+    , ibName+    , ibIconURL++    -- * Section+    , Section+    , section+    , sWidgets+    , sHeader++    -- * UserType+    , UserType (..)+    ) where++import           Network.Google.Chat.Types.Product+import           Network.Google.Chat.Types.Sum+import           Network.Google.Prelude++-- | Default request referring to version 'v1' of the Hangouts Chat API. This contains the host and root path used as a starting point for constructing service requests.+chatService :: ServiceConfig+chatService+  = defaultService (ServiceId "chat:v1")+      "chat.googleapis.com"
+ gen/Network/Google/Chat/Types/Product.hs view
@@ -0,0 +1,1688 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}++{-# OPTIONS_GHC -fno-warn-unused-binds   #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Chat.Types.Product+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Chat.Types.Product where++import           Network.Google.Chat.Types.Sum+import           Network.Google.Prelude++-- | A card is a UI element that can contain UI widgets such as texts,+-- images.+--+-- /See:/ 'card' smart constructor.+data Card = Card'+    { _cCardActions :: !(Maybe [CardAction])+    , _cName        :: !(Maybe Text)+    , _cHeader      :: !(Maybe CardHeader)+    , _cSections    :: !(Maybe [Section])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Card' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cCardActions'+--+-- * 'cName'+--+-- * 'cHeader'+--+-- * 'cSections'+card+    :: Card+card =+    Card'+    { _cCardActions = Nothing+    , _cName = Nothing+    , _cHeader = Nothing+    , _cSections = Nothing+    }++-- | The actions of this card.+cCardActions :: Lens' Card [CardAction]+cCardActions+  = lens _cCardActions (\ s a -> s{_cCardActions = a})+      . _Default+      . _Coerce++-- | Name of the card.+cName :: Lens' Card (Maybe Text)+cName = lens _cName (\ s a -> s{_cName = a})++-- | The header of the card. A header usually contains a title and an image.+cHeader :: Lens' Card (Maybe CardHeader)+cHeader = lens _cHeader (\ s a -> s{_cHeader = a})++-- | Sections are separated by a line divider.+cSections :: Lens' Card [Section]+cSections+  = lens _cSections (\ s a -> s{_cSections = a}) .+      _Default+      . _Coerce++instance FromJSON Card where+        parseJSON+          = withObject "Card"+              (\ o ->+                 Card' <$>+                   (o .:? "cardActions" .!= mempty) <*> (o .:? "name")+                     <*> (o .:? "header")+                     <*> (o .:? "sections" .!= mempty))++instance ToJSON Card where+        toJSON Card'{..}+          = object+              (catMaybes+                 [("cardActions" .=) <$> _cCardActions,+                  ("name" .=) <$> _cName, ("header" .=) <$> _cHeader,+                  ("sections" .=) <$> _cSections])++-- | A room or DM in Hangouts Chat.+--+-- /See:/ 'space' smart constructor.+data Space = Space'+    { _sName        :: !(Maybe Text)+    , _sDisplayName :: !(Maybe Text)+    , _sType        :: !(Maybe SpaceType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Space' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sName'+--+-- * 'sDisplayName'+--+-- * 'sType'+space+    :: Space+space =+    Space'+    { _sName = Nothing+    , _sDisplayName = Nothing+    , _sType = Nothing+    }++-- | Resource name of the space, in the form \"spaces\/*\". Example:+-- spaces\/AAAAMpdlehYs+sName :: Lens' Space (Maybe Text)+sName = lens _sName (\ s a -> s{_sName = a})++-- | Output only. The display name (only if the space is a room).+sDisplayName :: Lens' Space (Maybe Text)+sDisplayName+  = lens _sDisplayName (\ s a -> s{_sDisplayName = a})++-- | Output only. The type of a space.+sType :: Lens' Space (Maybe SpaceType)+sType = lens _sType (\ s a -> s{_sType = a})++instance FromJSON Space where+        parseJSON+          = withObject "Space"+              (\ o ->+                 Space' <$>+                   (o .:? "name") <*> (o .:? "displayName") <*>+                     (o .:? "type"))++instance ToJSON Space where+        toJSON Space'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _sName,+                  ("displayName" .=) <$> _sDisplayName,+                  ("type" .=) <$> _sType])++-- | A UI element contains a key (label) and a value (content). And this+-- element may also contain some actions such as onclick button.+--+-- /See:/ 'keyValue' smart constructor.+data KeyValue = KeyValue'+    { _kvOnClick          :: !(Maybe OnClick)+    , _kvTopLabel         :: !(Maybe Text)+    , _kvIcon             :: !(Maybe KeyValueIcon)+    , _kvButton           :: !(Maybe Button)+    , _kvContent          :: !(Maybe Text)+    , _kvIconURL          :: !(Maybe Text)+    , _kvContentMultiline :: !(Maybe Bool)+    , _kvBottomLabel      :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeyValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'kvOnClick'+--+-- * 'kvTopLabel'+--+-- * 'kvIcon'+--+-- * 'kvButton'+--+-- * 'kvContent'+--+-- * 'kvIconURL'+--+-- * 'kvContentMultiline'+--+-- * 'kvBottomLabel'+keyValue+    :: KeyValue+keyValue =+    KeyValue'+    { _kvOnClick = Nothing+    , _kvTopLabel = Nothing+    , _kvIcon = Nothing+    , _kvButton = Nothing+    , _kvContent = Nothing+    , _kvIconURL = Nothing+    , _kvContentMultiline = Nothing+    , _kvBottomLabel = Nothing+    }++-- | The onclick action. Only the top label, bottom label and content region+-- are clickable.+kvOnClick :: Lens' KeyValue (Maybe OnClick)+kvOnClick+  = lens _kvOnClick (\ s a -> s{_kvOnClick = a})++-- | The text of the top label. Formatted text supported.+kvTopLabel :: Lens' KeyValue (Maybe Text)+kvTopLabel+  = lens _kvTopLabel (\ s a -> s{_kvTopLabel = a})++-- | An enum value that will be replaced by the Chat API with the+-- corresponding icon image.+kvIcon :: Lens' KeyValue (Maybe KeyValueIcon)+kvIcon = lens _kvIcon (\ s a -> s{_kvIcon = a})++-- | A button that can be clicked to trigger an action.+kvButton :: Lens' KeyValue (Maybe Button)+kvButton = lens _kvButton (\ s a -> s{_kvButton = a})++-- | The text of the content. Formatted text supported and always required.+kvContent :: Lens' KeyValue (Maybe Text)+kvContent+  = lens _kvContent (\ s a -> s{_kvContent = a})++-- | The icon specified by a URL.+kvIconURL :: Lens' KeyValue (Maybe Text)+kvIconURL+  = lens _kvIconURL (\ s a -> s{_kvIconURL = a})++-- | If the content should be multiline.+kvContentMultiline :: Lens' KeyValue (Maybe Bool)+kvContentMultiline+  = lens _kvContentMultiline+      (\ s a -> s{_kvContentMultiline = a})++-- | The text of the bottom label. Formatted text supported.+kvBottomLabel :: Lens' KeyValue (Maybe Text)+kvBottomLabel+  = lens _kvBottomLabel+      (\ s a -> s{_kvBottomLabel = a})++instance FromJSON KeyValue where+        parseJSON+          = withObject "KeyValue"+              (\ o ->+                 KeyValue' <$>+                   (o .:? "onClick") <*> (o .:? "topLabel") <*>+                     (o .:? "icon")+                     <*> (o .:? "button")+                     <*> (o .:? "content")+                     <*> (o .:? "iconUrl")+                     <*> (o .:? "contentMultiline")+                     <*> (o .:? "bottomLabel"))++instance ToJSON KeyValue where+        toJSON KeyValue'{..}+          = object+              (catMaybes+                 [("onClick" .=) <$> _kvOnClick,+                  ("topLabel" .=) <$> _kvTopLabel,+                  ("icon" .=) <$> _kvIcon, ("button" .=) <$> _kvButton,+                  ("content" .=) <$> _kvContent,+                  ("iconUrl" .=) <$> _kvIconURL,+                  ("contentMultiline" .=) <$> _kvContentMultiline,+                  ("bottomLabel" .=) <$> _kvBottomLabel])++-- | A widget is a UI element that presents texts, images, etc.+--+-- /See:/ 'widgetMarkup' smart constructor.+data WidgetMarkup = WidgetMarkup'+    { _wmKeyValue      :: !(Maybe KeyValue)+    , _wmImage         :: !(Maybe Image)+    , _wmButtons       :: !(Maybe [Button])+    , _wmTextParagraph :: !(Maybe TextParagraph)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WidgetMarkup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wmKeyValue'+--+-- * 'wmImage'+--+-- * 'wmButtons'+--+-- * 'wmTextParagraph'+widgetMarkup+    :: WidgetMarkup+widgetMarkup =+    WidgetMarkup'+    { _wmKeyValue = Nothing+    , _wmImage = Nothing+    , _wmButtons = Nothing+    , _wmTextParagraph = Nothing+    }++-- | Display a key value item in this widget.+wmKeyValue :: Lens' WidgetMarkup (Maybe KeyValue)+wmKeyValue+  = lens _wmKeyValue (\ s a -> s{_wmKeyValue = a})++-- | Display an image in this widget.+wmImage :: Lens' WidgetMarkup (Maybe Image)+wmImage = lens _wmImage (\ s a -> s{_wmImage = a})++-- | A list of buttons. Buttons is also oneof data and only one of these+-- fields should be set.+wmButtons :: Lens' WidgetMarkup [Button]+wmButtons+  = lens _wmButtons (\ s a -> s{_wmButtons = a}) .+      _Default+      . _Coerce++-- | Display a text paragraph in this widget.+wmTextParagraph :: Lens' WidgetMarkup (Maybe TextParagraph)+wmTextParagraph+  = lens _wmTextParagraph+      (\ s a -> s{_wmTextParagraph = a})++instance FromJSON WidgetMarkup where+        parseJSON+          = withObject "WidgetMarkup"+              (\ o ->+                 WidgetMarkup' <$>+                   (o .:? "keyValue") <*> (o .:? "image") <*>+                     (o .:? "buttons" .!= mempty)+                     <*> (o .:? "textParagraph"))++instance ToJSON WidgetMarkup where+        toJSON WidgetMarkup'{..}+          = object+              (catMaybes+                 [("keyValue" .=) <$> _wmKeyValue,+                  ("image" .=) <$> _wmImage,+                  ("buttons" .=) <$> _wmButtons,+                  ("textParagraph" .=) <$> _wmTextParagraph])++-- | An onclick action (e.g. open a link).+--+-- /See:/ 'onClick' smart constructor.+data OnClick = OnClick'+    { _ocAction   :: !(Maybe FormAction)+    , _ocOpenLink :: !(Maybe OpenLink)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OnClick' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ocAction'+--+-- * 'ocOpenLink'+onClick+    :: OnClick+onClick =+    OnClick'+    { _ocAction = Nothing+    , _ocOpenLink = Nothing+    }++-- | A form action will be trigger by this onclick if specified.+ocAction :: Lens' OnClick (Maybe FormAction)+ocAction = lens _ocAction (\ s a -> s{_ocAction = a})++-- | This onclick triggers an open link action if specified.+ocOpenLink :: Lens' OnClick (Maybe OpenLink)+ocOpenLink+  = lens _ocOpenLink (\ s a -> s{_ocOpenLink = a})++instance FromJSON OnClick where+        parseJSON+          = withObject "OnClick"+              (\ o ->+                 OnClick' <$> (o .:? "action") <*> (o .:? "openLink"))++instance ToJSON OnClick where+        toJSON OnClick'{..}+          = object+              (catMaybes+                 [("action" .=) <$> _ocAction,+                  ("openLink" .=) <$> _ocOpenLink])++-- | Annotations associated with the plain-text body of the message. Example+-- plain-text message body: \`\`\` Hello \'FooBot how are you!\" \`\`\` The+-- corresponding annotations metadata: \`\`\` \"annotations\":[{+-- \"type\":\"USER_MENTION\", \"startIndex\":6, \"length\":7,+-- \"userMention\": { \"user\": {+-- \"name\":\"users\/107946847022116401880\", \"displayName\":\"FooBot\",+-- \"avatarUrl\":\"https:\/\/goo.gl\/aeDtrS\", \"type\":\"BOT\" },+-- \"type\":\"MENTION\" } }] \`\`\`+--+-- /See:/ 'annotation' smart constructor.+data Annotation = Annotation'+    { _aLength      :: !(Maybe (Textual Int32))+    , _aType        :: !(Maybe AnnotationType)+    , _aUserMention :: !(Maybe UserMentionMetadata)+    , _aStartIndex  :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Annotation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aLength'+--+-- * 'aType'+--+-- * 'aUserMention'+--+-- * 'aStartIndex'+annotation+    :: Annotation+annotation =+    Annotation'+    { _aLength = Nothing+    , _aType = Nothing+    , _aUserMention = Nothing+    , _aStartIndex = Nothing+    }++-- | Length of the substring in the plain-text message body this annotation+-- corresponds to.+aLength :: Lens' Annotation (Maybe Int32)+aLength+  = lens _aLength (\ s a -> s{_aLength = a}) .+      mapping _Coerce++-- | The type of this annotation.+aType :: Lens' Annotation (Maybe AnnotationType)+aType = lens _aType (\ s a -> s{_aType = a})++-- | The metadata of user mention.+aUserMention :: Lens' Annotation (Maybe UserMentionMetadata)+aUserMention+  = lens _aUserMention (\ s a -> s{_aUserMention = a})++-- | Start index (0-based, inclusive) in the plain-text message body this+-- annotation corresponds to.+aStartIndex :: Lens' Annotation (Maybe Int32)+aStartIndex+  = lens _aStartIndex (\ s a -> s{_aStartIndex = a}) .+      mapping _Coerce++instance FromJSON Annotation where+        parseJSON+          = withObject "Annotation"+              (\ o ->+                 Annotation' <$>+                   (o .:? "length") <*> (o .:? "type") <*>+                     (o .:? "userMention")+                     <*> (o .:? "startIndex"))++instance ToJSON Annotation where+        toJSON Annotation'{..}+          = object+              (catMaybes+                 [("length" .=) <$> _aLength, ("type" .=) <$> _aType,+                  ("userMention" .=) <$> _aUserMention,+                  ("startIndex" .=) <$> _aStartIndex])++-- | An image that is specified by a URL and can have an onclick action.+--+-- /See:/ 'image' smart constructor.+data Image = Image'+    { _iOnClick     :: !(Maybe OnClick)+    , _iAspectRatio :: !(Maybe (Textual Double))+    , _iImageURL    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Image' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iOnClick'+--+-- * 'iAspectRatio'+--+-- * 'iImageURL'+image+    :: Image+image =+    Image'+    { _iOnClick = Nothing+    , _iAspectRatio = Nothing+    , _iImageURL = Nothing+    }++-- | The onclick action.+iOnClick :: Lens' Image (Maybe OnClick)+iOnClick = lens _iOnClick (\ s a -> s{_iOnClick = a})++-- | The aspect ratio of this image (width\/height).+iAspectRatio :: Lens' Image (Maybe Double)+iAspectRatio+  = lens _iAspectRatio (\ s a -> s{_iAspectRatio = a})+      . mapping _Coerce++-- | The URL of the image.+iImageURL :: Lens' Image (Maybe Text)+iImageURL+  = lens _iImageURL (\ s a -> s{_iImageURL = a})++instance FromJSON Image where+        parseJSON+          = withObject "Image"+              (\ o ->+                 Image' <$>+                   (o .:? "onClick") <*> (o .:? "aspectRatio") <*>+                     (o .:? "imageUrl"))++instance ToJSON Image where+        toJSON Image'{..}+          = object+              (catMaybes+                 [("onClick" .=) <$> _iOnClick,+                  ("aspectRatio" .=) <$> _iAspectRatio,+                  ("imageUrl" .=) <$> _iImageURL])++-- | List of string parameters to supply when the action method is invoked.+-- For example, consider three snooze buttons: snooze now, snooze 1 day,+-- snooze next week. You might use action method = snooze(), passing the+-- snooze type and snooze time in the list of string parameters.+--+-- /See:/ 'actionParameter' smart constructor.+data ActionParameter = ActionParameter'+    { _apValue :: !(Maybe Text)+    , _apKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ActionParameter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apValue'+--+-- * 'apKey'+actionParameter+    :: ActionParameter+actionParameter =+    ActionParameter'+    { _apValue = Nothing+    , _apKey = Nothing+    }++-- | The value of the parameter.+apValue :: Lens' ActionParameter (Maybe Text)+apValue = lens _apValue (\ s a -> s{_apValue = a})++-- | The name of the parameter for the action script.+apKey :: Lens' ActionParameter (Maybe Text)+apKey = lens _apKey (\ s a -> s{_apKey = a})++instance FromJSON ActionParameter where+        parseJSON+          = withObject "ActionParameter"+              (\ o ->+                 ActionParameter' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON ActionParameter where+        toJSON ActionParameter'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _apValue, ("key" .=) <$> _apKey])++-- | Represents a membership relation in Hangouts Chat.+--+-- /See:/ 'membership' smart constructor.+data Membership = Membership'+    { _mState      :: !(Maybe MembershipState)+    , _mName       :: !(Maybe Text)+    , _mMember     :: !(Maybe User)+    , _mCreateTime :: !(Maybe DateTime')+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Membership' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mState'+--+-- * 'mName'+--+-- * 'mMember'+--+-- * 'mCreateTime'+membership+    :: Membership+membership =+    Membership'+    { _mState = Nothing+    , _mName = Nothing+    , _mMember = Nothing+    , _mCreateTime = Nothing+    }++-- | State of the membership.+mState :: Lens' Membership (Maybe MembershipState)+mState = lens _mState (\ s a -> s{_mState = a})++-- | Resource name of the membership, in the form \"spaces\/*\/members\/*\".+-- Example: spaces\/AAAAMpdlehY\/members\/105115627578887013105+mName :: Lens' Membership (Maybe Text)+mName = lens _mName (\ s a -> s{_mName = a})++-- | Member details.+mMember :: Lens' Membership (Maybe User)+mMember = lens _mMember (\ s a -> s{_mMember = a})++-- | The creation time of the membership a.k.a the time at which the member+-- joined the space, if applicable.+mCreateTime :: Lens' Membership (Maybe UTCTime)+mCreateTime+  = lens _mCreateTime (\ s a -> s{_mCreateTime = a}) .+      mapping _DateTime++instance FromJSON Membership where+        parseJSON+          = withObject "Membership"+              (\ o ->+                 Membership' <$>+                   (o .:? "state") <*> (o .:? "name") <*>+                     (o .:? "member")+                     <*> (o .:? "createTime"))++instance ToJSON Membership where+        toJSON Membership'{..}+          = object+              (catMaybes+                 [("state" .=) <$> _mState, ("name" .=) <$> _mName,+                  ("member" .=) <$> _mMember,+                  ("createTime" .=) <$> _mCreateTime])++-- | A generic empty message that you can re-use to avoid defining duplicated+-- empty messages in your APIs. A typical example is to use it as the+-- request or the response type of an API method. For instance: service Foo+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The+-- JSON representation for \`Empty\` is empty JSON object \`{}\`.+--+-- /See:/ 'empty' smart constructor.+data Empty =+    Empty'+    deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Empty' with the minimum fields required to make a request.+--+empty+    :: Empty+empty = Empty'++instance FromJSON Empty where+        parseJSON = withObject "Empty" (\ o -> pure Empty')++instance ToJSON Empty where+        toJSON = const emptyObject++-- | Hangouts Chat events.+--+-- /See:/ 'deprecatedEvent' smart constructor.+data DeprecatedEvent = DeprecatedEvent'+    { _deSpace                     :: !(Maybe Space)+    , _deToken                     :: !(Maybe Text)+    , _deAction                    :: !(Maybe FormAction)+    , _deEventTime                 :: !(Maybe DateTime')+    , _deUser                      :: !(Maybe User)+    , _deConfigCompleteRedirectURL :: !(Maybe Text)+    , _deType                      :: !(Maybe DeprecatedEventType)+    , _deMessage                   :: !(Maybe Message)+    , _deThreadKey                 :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeprecatedEvent' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'deSpace'+--+-- * 'deToken'+--+-- * 'deAction'+--+-- * 'deEventTime'+--+-- * 'deUser'+--+-- * 'deConfigCompleteRedirectURL'+--+-- * 'deType'+--+-- * 'deMessage'+--+-- * 'deThreadKey'+deprecatedEvent+    :: DeprecatedEvent+deprecatedEvent =+    DeprecatedEvent'+    { _deSpace = Nothing+    , _deToken = Nothing+    , _deAction = Nothing+    , _deEventTime = Nothing+    , _deUser = Nothing+    , _deConfigCompleteRedirectURL = Nothing+    , _deType = Nothing+    , _deMessage = Nothing+    , _deThreadKey = Nothing+    }++-- | The room or DM in which the event occurred.+deSpace :: Lens' DeprecatedEvent (Maybe Space)+deSpace = lens _deSpace (\ s a -> s{_deSpace = a})++-- | A secret value that bots can use to verify if a request is from Google.+-- The token is randomly generated by Google, remains static, and can be+-- obtained from the Hangouts Chat API configuration page in the Cloud+-- Console. Developers can revoke\/regenerate it if needed from the same+-- page.+deToken :: Lens' DeprecatedEvent (Maybe Text)+deToken = lens _deToken (\ s a -> s{_deToken = a})++-- | The form action data associated with an interactive card that was+-- clicked. Only populated for CARD_CLICKED events. See the [Interactive+-- Cards guide](\/hangouts\/chat\/how-tos\/cards-onclick) for more+-- information.+deAction :: Lens' DeprecatedEvent (Maybe FormAction)+deAction = lens _deAction (\ s a -> s{_deAction = a})++-- | The timestamp indicating when the event was dispatched.+deEventTime :: Lens' DeprecatedEvent (Maybe UTCTime)+deEventTime+  = lens _deEventTime (\ s a -> s{_deEventTime = a}) .+      mapping _DateTime++-- | The user that triggered the event.+deUser :: Lens' DeprecatedEvent (Maybe User)+deUser = lens _deUser (\ s a -> s{_deUser = a})++-- | The URL the bot should redirect the user to after they have completed an+-- authorization or configuration flow outside of Hangouts Chat. See the+-- [Authorizing access to 3p services+-- guide](\/hangouts\/chat\/how-tos\/auth-3p) for more information.+deConfigCompleteRedirectURL :: Lens' DeprecatedEvent (Maybe Text)+deConfigCompleteRedirectURL+  = lens _deConfigCompleteRedirectURL+      (\ s a -> s{_deConfigCompleteRedirectURL = a})++-- | The type of the event.+deType :: Lens' DeprecatedEvent (Maybe DeprecatedEventType)+deType = lens _deType (\ s a -> s{_deType = a})++-- | The message that triggered the event, if applicable.+deMessage :: Lens' DeprecatedEvent (Maybe Message)+deMessage+  = lens _deMessage (\ s a -> s{_deMessage = a})++-- | The bot-defined key for the thread related to the event. See the+-- thread_key field of the \`spaces.message.create\` request for more+-- information.+deThreadKey :: Lens' DeprecatedEvent (Maybe Text)+deThreadKey+  = lens _deThreadKey (\ s a -> s{_deThreadKey = a})++instance FromJSON DeprecatedEvent where+        parseJSON+          = withObject "DeprecatedEvent"+              (\ o ->+                 DeprecatedEvent' <$>+                   (o .:? "space") <*> (o .:? "token") <*>+                     (o .:? "action")+                     <*> (o .:? "eventTime")+                     <*> (o .:? "user")+                     <*> (o .:? "configCompleteRedirectUrl")+                     <*> (o .:? "type")+                     <*> (o .:? "message")+                     <*> (o .:? "threadKey"))++instance ToJSON DeprecatedEvent where+        toJSON DeprecatedEvent'{..}+          = object+              (catMaybes+                 [("space" .=) <$> _deSpace,+                  ("token" .=) <$> _deToken,+                  ("action" .=) <$> _deAction,+                  ("eventTime" .=) <$> _deEventTime,+                  ("user" .=) <$> _deUser,+                  ("configCompleteRedirectUrl" .=) <$>+                    _deConfigCompleteRedirectURL,+                  ("type" .=) <$> _deType,+                  ("message" .=) <$> _deMessage,+                  ("threadKey" .=) <$> _deThreadKey])++-- | A paragraph of text. Formatted text supported.+--+-- /See:/ 'textParagraph' smart constructor.+newtype TextParagraph = TextParagraph'+    { _tpText :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextParagraph' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpText'+textParagraph+    :: TextParagraph+textParagraph =+    TextParagraph'+    { _tpText = Nothing+    }++tpText :: Lens' TextParagraph (Maybe Text)+tpText = lens _tpText (\ s a -> s{_tpText = a})++instance FromJSON TextParagraph where+        parseJSON+          = withObject "TextParagraph"+              (\ o -> TextParagraph' <$> (o .:? "text"))++instance ToJSON TextParagraph where+        toJSON TextParagraph'{..}+          = object (catMaybes [("text" .=) <$> _tpText])++-- | A button. Can be a text button or an image button.+--+-- /See:/ 'button' smart constructor.+data Button = Button'+    { _bTextButton  :: !(Maybe TextButton)+    , _bImageButton :: !(Maybe ImageButton)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Button' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bTextButton'+--+-- * 'bImageButton'+button+    :: Button+button =+    Button'+    { _bTextButton = Nothing+    , _bImageButton = Nothing+    }++-- | A button with text and onclick action.+bTextButton :: Lens' Button (Maybe TextButton)+bTextButton+  = lens _bTextButton (\ s a -> s{_bTextButton = a})++-- | A button with image and onclick action.+bImageButton :: Lens' Button (Maybe ImageButton)+bImageButton+  = lens _bImageButton (\ s a -> s{_bImageButton = a})++instance FromJSON Button where+        parseJSON+          = withObject "Button"+              (\ o ->+                 Button' <$>+                   (o .:? "textButton") <*> (o .:? "imageButton"))++instance ToJSON Button where+        toJSON Button'{..}+          = object+              (catMaybes+                 [("textButton" .=) <$> _bTextButton,+                  ("imageButton" .=) <$> _bImageButton])++--+-- /See:/ 'listSpacesResponse' smart constructor.+data ListSpacesResponse = ListSpacesResponse'+    { _lsrNextPageToken :: !(Maybe Text)+    , _lsrSpaces        :: !(Maybe [Space])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListSpacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsrNextPageToken'+--+-- * 'lsrSpaces'+listSpacesResponse+    :: ListSpacesResponse+listSpacesResponse =+    ListSpacesResponse'+    { _lsrNextPageToken = Nothing+    , _lsrSpaces = Nothing+    }++-- | Continuation token to retrieve the next page of results. It will be+-- empty for the last page of results. Tokens expire in an hour. An error+-- is thrown if an expired token is passed.+lsrNextPageToken :: Lens' ListSpacesResponse (Maybe Text)+lsrNextPageToken+  = lens _lsrNextPageToken+      (\ s a -> s{_lsrNextPageToken = a})++-- | List of spaces in the requested (or first) page.+lsrSpaces :: Lens' ListSpacesResponse [Space]+lsrSpaces+  = lens _lsrSpaces (\ s a -> s{_lsrSpaces = a}) .+      _Default+      . _Coerce++instance FromJSON ListSpacesResponse where+        parseJSON+          = withObject "ListSpacesResponse"+              (\ o ->+                 ListSpacesResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "spaces" .!= mempty))++instance ToJSON ListSpacesResponse where+        toJSON ListSpacesResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _lsrNextPageToken,+                  ("spaces" .=) <$> _lsrSpaces])++-- | A user in Hangouts Chat.+--+-- /See:/ 'user' smart constructor.+data User = User'+    { _uName        :: !(Maybe Text)+    , _uDisplayName :: !(Maybe Text)+    , _uType        :: !(Maybe UserType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'User' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uName'+--+-- * 'uDisplayName'+--+-- * 'uType'+user+    :: User+user =+    User'+    { _uName = Nothing+    , _uDisplayName = Nothing+    , _uType = Nothing+    }++-- | Resource name, in the format \"users\/*\".+uName :: Lens' User (Maybe Text)+uName = lens _uName (\ s a -> s{_uName = a})++-- | The user\'s display name.+uDisplayName :: Lens' User (Maybe Text)+uDisplayName+  = lens _uDisplayName (\ s a -> s{_uDisplayName = a})++-- | User type.+uType :: Lens' User (Maybe UserType)+uType = lens _uType (\ s a -> s{_uType = a})++instance FromJSON User where+        parseJSON+          = withObject "User"+              (\ o ->+                 User' <$>+                   (o .:? "name") <*> (o .:? "displayName") <*>+                     (o .:? "type"))++instance ToJSON User where+        toJSON User'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _uName,+                  ("displayName" .=) <$> _uDisplayName,+                  ("type" .=) <$> _uType])++-- | A link that opens a new window.+--+-- /See:/ 'openLink' smart constructor.+newtype OpenLink = OpenLink'+    { _olURL :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OpenLink' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'olURL'+openLink+    :: OpenLink+openLink =+    OpenLink'+    { _olURL = Nothing+    }++-- | The URL to open.+olURL :: Lens' OpenLink (Maybe Text)+olURL = lens _olURL (\ s a -> s{_olURL = a})++instance FromJSON OpenLink where+        parseJSON+          = withObject "OpenLink"+              (\ o -> OpenLink' <$> (o .:? "url"))++instance ToJSON OpenLink where+        toJSON OpenLink'{..}+          = object (catMaybes [("url" .=) <$> _olURL])++-- | A card action is the action associated with the card. For an invoice+-- card, a typical action would be: delete invoice, email invoice or open+-- the invoice in browser.+--+-- /See:/ 'cardAction' smart constructor.+data CardAction = CardAction'+    { _caOnClick     :: !(Maybe OnClick)+    , _caActionLabel :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CardAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'caOnClick'+--+-- * 'caActionLabel'+cardAction+    :: CardAction+cardAction =+    CardAction'+    { _caOnClick = Nothing+    , _caActionLabel = Nothing+    }++-- | The onclick action for this action item.+caOnClick :: Lens' CardAction (Maybe OnClick)+caOnClick+  = lens _caOnClick (\ s a -> s{_caOnClick = a})++-- | The label used to be displayed in the action menu item.+caActionLabel :: Lens' CardAction (Maybe Text)+caActionLabel+  = lens _caActionLabel+      (\ s a -> s{_caActionLabel = a})++instance FromJSON CardAction where+        parseJSON+          = withObject "CardAction"+              (\ o ->+                 CardAction' <$>+                   (o .:? "onClick") <*> (o .:? "actionLabel"))++instance ToJSON CardAction where+        toJSON CardAction'{..}+          = object+              (catMaybes+                 [("onClick" .=) <$> _caOnClick,+                  ("actionLabel" .=) <$> _caActionLabel])++-- | Parameters that a bot can use to configure how it\'s response is posted.+--+-- /See:/ 'actionResponse' smart constructor.+data ActionResponse = ActionResponse'+    { _arURL  :: !(Maybe Text)+    , _arType :: !(Maybe ActionResponseType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ActionResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'arURL'+--+-- * 'arType'+actionResponse+    :: ActionResponse+actionResponse =+    ActionResponse'+    { _arURL = Nothing+    , _arType = Nothing+    }++-- | URL for users to auth or config. (Only for REQUEST_CONFIG response+-- types.)+arURL :: Lens' ActionResponse (Maybe Text)+arURL = lens _arURL (\ s a -> s{_arURL = a})++-- | The type of bot response.+arType :: Lens' ActionResponse (Maybe ActionResponseType)+arType = lens _arType (\ s a -> s{_arType = a})++instance FromJSON ActionResponse where+        parseJSON+          = withObject "ActionResponse"+              (\ o ->+                 ActionResponse' <$> (o .:? "url") <*> (o .:? "type"))++instance ToJSON ActionResponse where+        toJSON ActionResponse'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _arURL, ("type" .=) <$> _arType])++-- | A form action describes the behavior when the form is submitted. For+-- example, an Apps Script can be invoked to handle the form.+--+-- /See:/ 'formAction' smart constructor.+data FormAction = FormAction'+    { _faActionMethodName :: !(Maybe Text)+    , _faParameters       :: !(Maybe [ActionParameter])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FormAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'faActionMethodName'+--+-- * 'faParameters'+formAction+    :: FormAction+formAction =+    FormAction'+    { _faActionMethodName = Nothing+    , _faParameters = Nothing+    }++-- | Apps Script function to invoke when the containing element is+-- clicked\/activated.+faActionMethodName :: Lens' FormAction (Maybe Text)+faActionMethodName+  = lens _faActionMethodName+      (\ s a -> s{_faActionMethodName = a})++-- | List of action parameters.+faParameters :: Lens' FormAction [ActionParameter]+faParameters+  = lens _faParameters (\ s a -> s{_faParameters = a})+      . _Default+      . _Coerce++instance FromJSON FormAction where+        parseJSON+          = withObject "FormAction"+              (\ o ->+                 FormAction' <$>+                   (o .:? "actionMethodName") <*>+                     (o .:? "parameters" .!= mempty))++instance ToJSON FormAction where+        toJSON FormAction'{..}+          = object+              (catMaybes+                 [("actionMethodName" .=) <$> _faActionMethodName,+                  ("parameters" .=) <$> _faParameters])++--+-- /See:/ 'listMembershipsResponse' smart constructor.+data ListMembershipsResponse = ListMembershipsResponse'+    { _lmrNextPageToken :: !(Maybe Text)+    , _lmrMemberships   :: !(Maybe [Membership])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListMembershipsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lmrNextPageToken'+--+-- * 'lmrMemberships'+listMembershipsResponse+    :: ListMembershipsResponse+listMembershipsResponse =+    ListMembershipsResponse'+    { _lmrNextPageToken = Nothing+    , _lmrMemberships = Nothing+    }++-- | Continuation token to retrieve the next page of results. It will be+-- empty for the last page of results.+lmrNextPageToken :: Lens' ListMembershipsResponse (Maybe Text)+lmrNextPageToken+  = lens _lmrNextPageToken+      (\ s a -> s{_lmrNextPageToken = a})++-- | List of memberships in the requested (or first) page.+lmrMemberships :: Lens' ListMembershipsResponse [Membership]+lmrMemberships+  = lens _lmrMemberships+      (\ s a -> s{_lmrMemberships = a})+      . _Default+      . _Coerce++instance FromJSON ListMembershipsResponse where+        parseJSON+          = withObject "ListMembershipsResponse"+              (\ o ->+                 ListMembershipsResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "memberships" .!= mempty))++instance ToJSON ListMembershipsResponse where+        toJSON ListMembershipsResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _lmrNextPageToken,+                  ("memberships" .=) <$> _lmrMemberships])++-- | A message in Hangouts Chat.+--+-- /See:/ 'message' smart constructor.+data Message = Message'+    { _mesAnnotations    :: !(Maybe [Annotation])+    , _mesSpace          :: !(Maybe Space)+    , _mesText           :: !(Maybe Text)+    , _mesSender         :: !(Maybe User)+    , _mesName           :: !(Maybe Text)+    , _mesPreviewText    :: !(Maybe Text)+    , _mesCards          :: !(Maybe [Card])+    , _mesActionResponse :: !(Maybe ActionResponse)+    , _mesArgumentText   :: !(Maybe Text)+    , _mesThread         :: !(Maybe Thread)+    , _mesFallbackText   :: !(Maybe Text)+    , _mesCreateTime     :: !(Maybe DateTime')+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Message' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mesAnnotations'+--+-- * 'mesSpace'+--+-- * 'mesText'+--+-- * 'mesSender'+--+-- * 'mesName'+--+-- * 'mesPreviewText'+--+-- * 'mesCards'+--+-- * 'mesActionResponse'+--+-- * 'mesArgumentText'+--+-- * 'mesThread'+--+-- * 'mesFallbackText'+--+-- * 'mesCreateTime'+message+    :: Message+message =+    Message'+    { _mesAnnotations = Nothing+    , _mesSpace = Nothing+    , _mesText = Nothing+    , _mesSender = Nothing+    , _mesName = Nothing+    , _mesPreviewText = Nothing+    , _mesCards = Nothing+    , _mesActionResponse = Nothing+    , _mesArgumentText = Nothing+    , _mesThread = Nothing+    , _mesFallbackText = Nothing+    , _mesCreateTime = Nothing+    }++-- | Output only. Annotations associated with the text in this message.+mesAnnotations :: Lens' Message [Annotation]+mesAnnotations+  = lens _mesAnnotations+      (\ s a -> s{_mesAnnotations = a})+      . _Default+      . _Coerce++-- | The space the message belongs to.+mesSpace :: Lens' Message (Maybe Space)+mesSpace = lens _mesSpace (\ s a -> s{_mesSpace = a})++-- | Plain-text body of the message.+mesText :: Lens' Message (Maybe Text)+mesText = lens _mesText (\ s a -> s{_mesText = a})++-- | The user who created the message.+mesSender :: Lens' Message (Maybe User)+mesSender+  = lens _mesSender (\ s a -> s{_mesSender = a})++-- | Resource name, in the form \"spaces\/*\/messages\/*\". Example:+-- spaces\/AAAAMpdlehY\/messages\/UMxbHmzDlr4.UMxbHmzDlr4+mesName :: Lens' Message (Maybe Text)+mesName = lens _mesName (\ s a -> s{_mesName = a})++-- | Text for generating preview chips. This text will not be displayed to+-- the user, but any links to images, web pages, videos, etc. included here+-- will generate preview chips.+mesPreviewText :: Lens' Message (Maybe Text)+mesPreviewText+  = lens _mesPreviewText+      (\ s a -> s{_mesPreviewText = a})++-- | Rich, formatted and interactive cards that can be used to display UI+-- elements such as: formatted texts, buttons, clickable images. Cards are+-- normally displayed below the plain-text body of the message.+mesCards :: Lens' Message [Card]+mesCards+  = lens _mesCards (\ s a -> s{_mesCards = a}) .+      _Default+      . _Coerce++-- | Input only. Parameters that a bot can use to configure how its response+-- is posted.+mesActionResponse :: Lens' Message (Maybe ActionResponse)+mesActionResponse+  = lens _mesActionResponse+      (\ s a -> s{_mesActionResponse = a})++-- | Plain-text body of the message with all bot mentions stripped out.+mesArgumentText :: Lens' Message (Maybe Text)+mesArgumentText+  = lens _mesArgumentText+      (\ s a -> s{_mesArgumentText = a})++-- | The thread the message belongs to.+mesThread :: Lens' Message (Maybe Thread)+mesThread+  = lens _mesThread (\ s a -> s{_mesThread = a})++-- | A plain-text description of the message\'s cards, used when the actual+-- cards cannot be displayed (e.g. mobile notifications).+mesFallbackText :: Lens' Message (Maybe Text)+mesFallbackText+  = lens _mesFallbackText+      (\ s a -> s{_mesFallbackText = a})++-- | Output only. The time at which the message was created in Hangouts Chat+-- server.+mesCreateTime :: Lens' Message (Maybe UTCTime)+mesCreateTime+  = lens _mesCreateTime+      (\ s a -> s{_mesCreateTime = a})+      . mapping _DateTime++instance FromJSON Message where+        parseJSON+          = withObject "Message"+              (\ o ->+                 Message' <$>+                   (o .:? "annotations" .!= mempty) <*> (o .:? "space")+                     <*> (o .:? "text")+                     <*> (o .:? "sender")+                     <*> (o .:? "name")+                     <*> (o .:? "previewText")+                     <*> (o .:? "cards" .!= mempty)+                     <*> (o .:? "actionResponse")+                     <*> (o .:? "argumentText")+                     <*> (o .:? "thread")+                     <*> (o .:? "fallbackText")+                     <*> (o .:? "createTime"))++instance ToJSON Message where+        toJSON Message'{..}+          = object+              (catMaybes+                 [("annotations" .=) <$> _mesAnnotations,+                  ("space" .=) <$> _mesSpace, ("text" .=) <$> _mesText,+                  ("sender" .=) <$> _mesSender,+                  ("name" .=) <$> _mesName,+                  ("previewText" .=) <$> _mesPreviewText,+                  ("cards" .=) <$> _mesCards,+                  ("actionResponse" .=) <$> _mesActionResponse,+                  ("argumentText" .=) <$> _mesArgumentText,+                  ("thread" .=) <$> _mesThread,+                  ("fallbackText" .=) <$> _mesFallbackText,+                  ("createTime" .=) <$> _mesCreateTime])++--+-- /See:/ 'cardHeader' smart constructor.+data CardHeader = CardHeader'+    { _chSubtitle   :: !(Maybe Text)+    , _chImageURL   :: !(Maybe Text)+    , _chTitle      :: !(Maybe Text)+    , _chImageStyle :: !(Maybe CardHeaderImageStyle)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CardHeader' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'chSubtitle'+--+-- * 'chImageURL'+--+-- * 'chTitle'+--+-- * 'chImageStyle'+cardHeader+    :: CardHeader+cardHeader =+    CardHeader'+    { _chSubtitle = Nothing+    , _chImageURL = Nothing+    , _chTitle = Nothing+    , _chImageStyle = Nothing+    }++-- | The subtitle of the card header.+chSubtitle :: Lens' CardHeader (Maybe Text)+chSubtitle+  = lens _chSubtitle (\ s a -> s{_chSubtitle = a})++-- | The URL of the image in the card header.+chImageURL :: Lens' CardHeader (Maybe Text)+chImageURL+  = lens _chImageURL (\ s a -> s{_chImageURL = a})++-- | The title must be specified. The header has a fixed height: if both a+-- title and subtitle is specified, each will take up 1 line. If only the+-- title is specified, it will take up both lines.+chTitle :: Lens' CardHeader (Maybe Text)+chTitle = lens _chTitle (\ s a -> s{_chTitle = a})++-- | The image\'s type (e.g. square border or circular border).+chImageStyle :: Lens' CardHeader (Maybe CardHeaderImageStyle)+chImageStyle+  = lens _chImageStyle (\ s a -> s{_chImageStyle = a})++instance FromJSON CardHeader where+        parseJSON+          = withObject "CardHeader"+              (\ o ->+                 CardHeader' <$>+                   (o .:? "subtitle") <*> (o .:? "imageUrl") <*>+                     (o .:? "title")+                     <*> (o .:? "imageStyle"))++instance ToJSON CardHeader where+        toJSON CardHeader'{..}+          = object+              (catMaybes+                 [("subtitle" .=) <$> _chSubtitle,+                  ("imageUrl" .=) <$> _chImageURL,+                  ("title" .=) <$> _chTitle,+                  ("imageStyle" .=) <$> _chImageStyle])++-- | A button with text and onclick action.+--+-- /See:/ 'textButton' smart constructor.+data TextButton = TextButton'+    { _tbOnClick :: !(Maybe OnClick)+    , _tbText    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextButton' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tbOnClick'+--+-- * 'tbText'+textButton+    :: TextButton+textButton =+    TextButton'+    { _tbOnClick = Nothing+    , _tbText = Nothing+    }++-- | The onclick action of the button.+tbOnClick :: Lens' TextButton (Maybe OnClick)+tbOnClick+  = lens _tbOnClick (\ s a -> s{_tbOnClick = a})++-- | The text of the button.+tbText :: Lens' TextButton (Maybe Text)+tbText = lens _tbText (\ s a -> s{_tbText = a})++instance FromJSON TextButton where+        parseJSON+          = withObject "TextButton"+              (\ o ->+                 TextButton' <$> (o .:? "onClick") <*> (o .:? "text"))++instance ToJSON TextButton where+        toJSON TextButton'{..}+          = object+              (catMaybes+                 [("onClick" .=) <$> _tbOnClick,+                  ("text" .=) <$> _tbText])++-- | A thread in Hangouts Chat.+--+-- /See:/ 'thread' smart constructor.+newtype Thread = Thread'+    { _tName :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Thread' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tName'+thread+    :: Thread+thread =+    Thread'+    { _tName = Nothing+    }++-- | Resource name, in the form \"spaces\/*\/threads\/*\". Example:+-- spaces\/AAAAMpdlehY\/threads\/UMxbHmzDlr4+tName :: Lens' Thread (Maybe Text)+tName = lens _tName (\ s a -> s{_tName = a})++instance FromJSON Thread where+        parseJSON+          = withObject "Thread"+              (\ o -> Thread' <$> (o .:? "name"))++instance ToJSON Thread where+        toJSON Thread'{..}+          = object (catMaybes [("name" .=) <$> _tName])++-- | Annotation metadata for user mentions (\').+--+-- /See:/ 'userMentionMetadata' smart constructor.+data UserMentionMetadata = UserMentionMetadata'+    { _ummUser :: !(Maybe User)+    , _ummType :: !(Maybe UserMentionMetadataType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UserMentionMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ummUser'+--+-- * 'ummType'+userMentionMetadata+    :: UserMentionMetadata+userMentionMetadata =+    UserMentionMetadata'+    { _ummUser = Nothing+    , _ummType = Nothing+    }++-- | The user mentioned.+ummUser :: Lens' UserMentionMetadata (Maybe User)+ummUser = lens _ummUser (\ s a -> s{_ummUser = a})++-- | The type of user mention.+ummType :: Lens' UserMentionMetadata (Maybe UserMentionMetadataType)+ummType = lens _ummType (\ s a -> s{_ummType = a})++instance FromJSON UserMentionMetadata where+        parseJSON+          = withObject "UserMentionMetadata"+              (\ o ->+                 UserMentionMetadata' <$>+                   (o .:? "user") <*> (o .:? "type"))++instance ToJSON UserMentionMetadata where+        toJSON UserMentionMetadata'{..}+          = object+              (catMaybes+                 [("user" .=) <$> _ummUser, ("type" .=) <$> _ummType])++-- | An image button with an onclick action.+--+-- /See:/ 'imageButton' smart constructor.+data ImageButton = ImageButton'+    { _ibOnClick :: !(Maybe OnClick)+    , _ibIcon    :: !(Maybe ImageButtonIcon)+    , _ibName    :: !(Maybe Text)+    , _ibIconURL :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ImageButton' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ibOnClick'+--+-- * 'ibIcon'+--+-- * 'ibName'+--+-- * 'ibIconURL'+imageButton+    :: ImageButton+imageButton =+    ImageButton'+    { _ibOnClick = Nothing+    , _ibIcon = Nothing+    , _ibName = Nothing+    , _ibIconURL = Nothing+    }++-- | The onclick action.+ibOnClick :: Lens' ImageButton (Maybe OnClick)+ibOnClick+  = lens _ibOnClick (\ s a -> s{_ibOnClick = a})++-- | The icon specified by an enum that indices to an icon provided by Chat+-- API.+ibIcon :: Lens' ImageButton (Maybe ImageButtonIcon)+ibIcon = lens _ibIcon (\ s a -> s{_ibIcon = a})++-- | The name of this image_button which will be used for accessibility.+-- Default value will be provided if developers don\'t specify.+ibName :: Lens' ImageButton (Maybe Text)+ibName = lens _ibName (\ s a -> s{_ibName = a})++-- | The icon specified by a URL.+ibIconURL :: Lens' ImageButton (Maybe Text)+ibIconURL+  = lens _ibIconURL (\ s a -> s{_ibIconURL = a})++instance FromJSON ImageButton where+        parseJSON+          = withObject "ImageButton"+              (\ o ->+                 ImageButton' <$>+                   (o .:? "onClick") <*> (o .:? "icon") <*>+                     (o .:? "name")+                     <*> (o .:? "iconUrl"))++instance ToJSON ImageButton where+        toJSON ImageButton'{..}+          = object+              (catMaybes+                 [("onClick" .=) <$> _ibOnClick,+                  ("icon" .=) <$> _ibIcon, ("name" .=) <$> _ibName,+                  ("iconUrl" .=) <$> _ibIconURL])++-- | A section contains a collection of widgets that are rendered+-- (vertically) in the order that they are specified. Across all platforms,+-- cards have a narrow fixed width, so there is currently no need for+-- layout properties (e.g. float).+--+-- /See:/ 'section' smart constructor.+data Section = Section'+    { _sWidgets :: !(Maybe [WidgetMarkup])+    , _sHeader  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Section' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sWidgets'+--+-- * 'sHeader'+section+    :: Section+section =+    Section'+    { _sWidgets = Nothing+    , _sHeader = Nothing+    }++-- | A section must contain at least 1 widget.+sWidgets :: Lens' Section [WidgetMarkup]+sWidgets+  = lens _sWidgets (\ s a -> s{_sWidgets = a}) .+      _Default+      . _Coerce++-- | The header of the section, text formatted supported.+sHeader :: Lens' Section (Maybe Text)+sHeader = lens _sHeader (\ s a -> s{_sHeader = a})++instance FromJSON Section where+        parseJSON+          = withObject "Section"+              (\ o ->+                 Section' <$>+                   (o .:? "widgets" .!= mempty) <*> (o .:? "header"))++instance ToJSON Section where+        toJSON Section'{..}+          = object+              (catMaybes+                 [("widgets" .=) <$> _sWidgets,+                  ("header" .=) <$> _sHeader])
+ gen/Network/Google/Chat/Types/Sum.hs view
@@ -0,0 +1,625 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Chat.Types.Sum+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Chat.Types.Sum where++import           Network.Google.Prelude hiding (Bytes)++-- | An enum value that will be replaced by the Chat API with the+-- corresponding icon image.+data KeyValueIcon+    = KVIIconUnspecified+      -- ^ @ICON_UNSPECIFIED@+    | KVIAirplane+      -- ^ @AIRPLANE@+    | KVIBookmark+      -- ^ @BOOKMARK@+    | KVIBus+      -- ^ @BUS@+    | KVICar+      -- ^ @CAR@+    | KVIClock+      -- ^ @CLOCK@+    | KVIConfirmationNumberIcon+      -- ^ @CONFIRMATION_NUMBER_ICON@+    | KVIDollar+      -- ^ @DOLLAR@+    | KVIDescription+      -- ^ @DESCRIPTION@+    | KVIEmail+      -- ^ @EMAIL@+    | KVIEventPerformer+      -- ^ @EVENT_PERFORMER@+    | KVIEventSeat+      -- ^ @EVENT_SEAT@+    | KVIFlightArrival+      -- ^ @FLIGHT_ARRIVAL@+    | KVIFlightDeParture+      -- ^ @FLIGHT_DEPARTURE@+    | KVIHotel+      -- ^ @HOTEL@+    | KVIHotelRoomType+      -- ^ @HOTEL_ROOM_TYPE@+    | KVIInvite+      -- ^ @INVITE@+    | KVIMapPin+      -- ^ @MAP_PIN@+    | KVIMembership+      -- ^ @MEMBERSHIP@+    | KVIMultiplePeople+      -- ^ @MULTIPLE_PEOPLE@+    | KVIOffer+      -- ^ @OFFER@+    | KVIPerson+      -- ^ @PERSON@+    | KVIPhone+      -- ^ @PHONE@+    | KVIRestaurantIcon+      -- ^ @RESTAURANT_ICON@+    | KVIShoppingCart+      -- ^ @SHOPPING_CART@+    | KVIStar+      -- ^ @STAR@+    | KVIStore+      -- ^ @STORE@+    | KVITicket+      -- ^ @TICKET@+    | KVITrain+      -- ^ @TRAIN@+    | KVIVideoCamera+      -- ^ @VIDEO_CAMERA@+    | KVIVideoPlay+      -- ^ @VIDEO_PLAY@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable KeyValueIcon++instance FromHttpApiData KeyValueIcon where+    parseQueryParam = \case+        "ICON_UNSPECIFIED" -> Right KVIIconUnspecified+        "AIRPLANE" -> Right KVIAirplane+        "BOOKMARK" -> Right KVIBookmark+        "BUS" -> Right KVIBus+        "CAR" -> Right KVICar+        "CLOCK" -> Right KVIClock+        "CONFIRMATION_NUMBER_ICON" -> Right KVIConfirmationNumberIcon+        "DOLLAR" -> Right KVIDollar+        "DESCRIPTION" -> Right KVIDescription+        "EMAIL" -> Right KVIEmail+        "EVENT_PERFORMER" -> Right KVIEventPerformer+        "EVENT_SEAT" -> Right KVIEventSeat+        "FLIGHT_ARRIVAL" -> Right KVIFlightArrival+        "FLIGHT_DEPARTURE" -> Right KVIFlightDeParture+        "HOTEL" -> Right KVIHotel+        "HOTEL_ROOM_TYPE" -> Right KVIHotelRoomType+        "INVITE" -> Right KVIInvite+        "MAP_PIN" -> Right KVIMapPin+        "MEMBERSHIP" -> Right KVIMembership+        "MULTIPLE_PEOPLE" -> Right KVIMultiplePeople+        "OFFER" -> Right KVIOffer+        "PERSON" -> Right KVIPerson+        "PHONE" -> Right KVIPhone+        "RESTAURANT_ICON" -> Right KVIRestaurantIcon+        "SHOPPING_CART" -> Right KVIShoppingCart+        "STAR" -> Right KVIStar+        "STORE" -> Right KVIStore+        "TICKET" -> Right KVITicket+        "TRAIN" -> Right KVITrain+        "VIDEO_CAMERA" -> Right KVIVideoCamera+        "VIDEO_PLAY" -> Right KVIVideoPlay+        x -> Left ("Unable to parse KeyValueIcon from: " <> x)++instance ToHttpApiData KeyValueIcon where+    toQueryParam = \case+        KVIIconUnspecified -> "ICON_UNSPECIFIED"+        KVIAirplane -> "AIRPLANE"+        KVIBookmark -> "BOOKMARK"+        KVIBus -> "BUS"+        KVICar -> "CAR"+        KVIClock -> "CLOCK"+        KVIConfirmationNumberIcon -> "CONFIRMATION_NUMBER_ICON"+        KVIDollar -> "DOLLAR"+        KVIDescription -> "DESCRIPTION"+        KVIEmail -> "EMAIL"+        KVIEventPerformer -> "EVENT_PERFORMER"+        KVIEventSeat -> "EVENT_SEAT"+        KVIFlightArrival -> "FLIGHT_ARRIVAL"+        KVIFlightDeParture -> "FLIGHT_DEPARTURE"+        KVIHotel -> "HOTEL"+        KVIHotelRoomType -> "HOTEL_ROOM_TYPE"+        KVIInvite -> "INVITE"+        KVIMapPin -> "MAP_PIN"+        KVIMembership -> "MEMBERSHIP"+        KVIMultiplePeople -> "MULTIPLE_PEOPLE"+        KVIOffer -> "OFFER"+        KVIPerson -> "PERSON"+        KVIPhone -> "PHONE"+        KVIRestaurantIcon -> "RESTAURANT_ICON"+        KVIShoppingCart -> "SHOPPING_CART"+        KVIStar -> "STAR"+        KVIStore -> "STORE"+        KVITicket -> "TICKET"+        KVITrain -> "TRAIN"+        KVIVideoCamera -> "VIDEO_CAMERA"+        KVIVideoPlay -> "VIDEO_PLAY"++instance FromJSON KeyValueIcon where+    parseJSON = parseJSONText "KeyValueIcon"++instance ToJSON KeyValueIcon where+    toJSON = toJSONText++-- | The type of bot response.+data ActionResponseType+    = TypeUnspecified+      -- ^ @TYPE_UNSPECIFIED@+      -- Default type; will be handled as NEW_MESSAGE.+    | NewMessage+      -- ^ @NEW_MESSAGE@+      -- Post as a new message in the topic.+    | UpdateMessage+      -- ^ @UPDATE_MESSAGE@+      -- Update the bot\'s own message. (Only after CARD_CLICKED events.)+    | RequestConfig+      -- ^ @REQUEST_CONFIG@+      -- Privately ask the user for additional auth or config.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ActionResponseType++instance FromHttpApiData ActionResponseType where+    parseQueryParam = \case+        "TYPE_UNSPECIFIED" -> Right TypeUnspecified+        "NEW_MESSAGE" -> Right NewMessage+        "UPDATE_MESSAGE" -> Right UpdateMessage+        "REQUEST_CONFIG" -> Right RequestConfig+        x -> Left ("Unable to parse ActionResponseType from: " <> x)++instance ToHttpApiData ActionResponseType where+    toQueryParam = \case+        TypeUnspecified -> "TYPE_UNSPECIFIED"+        NewMessage -> "NEW_MESSAGE"+        UpdateMessage -> "UPDATE_MESSAGE"+        RequestConfig -> "REQUEST_CONFIG"++instance FromJSON ActionResponseType where+    parseJSON = parseJSONText "ActionResponseType"++instance ToJSON ActionResponseType where+    toJSON = toJSONText++-- | State of the membership.+data MembershipState+    = MembershipStateUnspecified+      -- ^ @MEMBERSHIP_STATE_UNSPECIFIED@+      -- Default, do not use.+    | Joined+      -- ^ @JOINED@+      -- The user has joined the space.+    | Invited+      -- ^ @INVITED@+      -- The user has been invited, is able to join the space, but currently has+      -- not joined.+    | NotAMember+      -- ^ @NOT_A_MEMBER@+      -- The user is not a member of the space, has not been invited and is not+      -- able to join the space.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable MembershipState++instance FromHttpApiData MembershipState where+    parseQueryParam = \case+        "MEMBERSHIP_STATE_UNSPECIFIED" -> Right MembershipStateUnspecified+        "JOINED" -> Right Joined+        "INVITED" -> Right Invited+        "NOT_A_MEMBER" -> Right NotAMember+        x -> Left ("Unable to parse MembershipState from: " <> x)++instance ToHttpApiData MembershipState where+    toQueryParam = \case+        MembershipStateUnspecified -> "MEMBERSHIP_STATE_UNSPECIFIED"+        Joined -> "JOINED"+        Invited -> "INVITED"+        NotAMember -> "NOT_A_MEMBER"++instance FromJSON MembershipState where+    parseJSON = parseJSONText "MembershipState"++instance ToJSON MembershipState where+    toJSON = toJSONText++-- | The image\'s type (e.g. square border or circular border).+data CardHeaderImageStyle+    = CHISImageStyleUnspecified+      -- ^ @IMAGE_STYLE_UNSPECIFIED@+    | CHISImage+      -- ^ @IMAGE@+      -- Square border.+    | CHISAvatar+      -- ^ @AVATAR@+      -- Circular border.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable CardHeaderImageStyle++instance FromHttpApiData CardHeaderImageStyle where+    parseQueryParam = \case+        "IMAGE_STYLE_UNSPECIFIED" -> Right CHISImageStyleUnspecified+        "IMAGE" -> Right CHISImage+        "AVATAR" -> Right CHISAvatar+        x -> Left ("Unable to parse CardHeaderImageStyle from: " <> x)++instance ToHttpApiData CardHeaderImageStyle where+    toQueryParam = \case+        CHISImageStyleUnspecified -> "IMAGE_STYLE_UNSPECIFIED"+        CHISImage -> "IMAGE"+        CHISAvatar -> "AVATAR"++instance FromJSON CardHeaderImageStyle where+    parseJSON = parseJSONText "CardHeaderImageStyle"++instance ToJSON CardHeaderImageStyle where+    toJSON = toJSONText++-- | The type of user mention.+data UserMentionMetadataType+    = UMMTTypeUnspecified+      -- ^ @TYPE_UNSPECIFIED@+      -- Default value for the enum. DO NOT USE.+    | UMMTAdd+      -- ^ @ADD@+      -- Add user to space.+    | UMMTMention+      -- ^ @MENTION@+      -- Mention user in space.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable UserMentionMetadataType++instance FromHttpApiData UserMentionMetadataType where+    parseQueryParam = \case+        "TYPE_UNSPECIFIED" -> Right UMMTTypeUnspecified+        "ADD" -> Right UMMTAdd+        "MENTION" -> Right UMMTMention+        x -> Left ("Unable to parse UserMentionMetadataType from: " <> x)++instance ToHttpApiData UserMentionMetadataType where+    toQueryParam = \case+        UMMTTypeUnspecified -> "TYPE_UNSPECIFIED"+        UMMTAdd -> "ADD"+        UMMTMention -> "MENTION"++instance FromJSON UserMentionMetadataType where+    parseJSON = parseJSONText "UserMentionMetadataType"++instance ToJSON UserMentionMetadataType where+    toJSON = toJSONText++-- | Output only. The type of a space.+data SpaceType+    = STTypeUnspecified+      -- ^ @TYPE_UNSPECIFIED@+    | STRoom+      -- ^ @ROOM@+      -- A chat space where memberships are free to change. Messages in rooms are+      -- threaded.+    | STDM+      -- ^ @DM@+      -- 1:1 Direct Message between a human and a bot, where all messages are+      -- flat.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SpaceType++instance FromHttpApiData SpaceType where+    parseQueryParam = \case+        "TYPE_UNSPECIFIED" -> Right STTypeUnspecified+        "ROOM" -> Right STRoom+        "DM" -> Right STDM+        x -> Left ("Unable to parse SpaceType from: " <> x)++instance ToHttpApiData SpaceType where+    toQueryParam = \case+        STTypeUnspecified -> "TYPE_UNSPECIFIED"+        STRoom -> "ROOM"+        STDM -> "DM"++instance FromJSON SpaceType where+    parseJSON = parseJSONText "SpaceType"++instance ToJSON SpaceType where+    toJSON = toJSONText++-- | The type of this annotation.+data AnnotationType+    = AnnotationTypeUnspecified+      -- ^ @ANNOTATION_TYPE_UNSPECIFIED@+      -- Default value for the enum. DO NOT USE.+    | UserMention+      -- ^ @USER_MENTION@+      -- A user is mentioned.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable AnnotationType++instance FromHttpApiData AnnotationType where+    parseQueryParam = \case+        "ANNOTATION_TYPE_UNSPECIFIED" -> Right AnnotationTypeUnspecified+        "USER_MENTION" -> Right UserMention+        x -> Left ("Unable to parse AnnotationType from: " <> x)++instance ToHttpApiData AnnotationType where+    toQueryParam = \case+        AnnotationTypeUnspecified -> "ANNOTATION_TYPE_UNSPECIFIED"+        UserMention -> "USER_MENTION"++instance FromJSON AnnotationType where+    parseJSON = parseJSONText "AnnotationType"++instance ToJSON AnnotationType where+    toJSON = toJSONText++-- | The icon specified by an enum that indices to an icon provided by Chat+-- API.+data ImageButtonIcon+    = IBIIconUnspecified+      -- ^ @ICON_UNSPECIFIED@+    | IBIAirplane+      -- ^ @AIRPLANE@+    | IBIBookmark+      -- ^ @BOOKMARK@+    | IBIBus+      -- ^ @BUS@+    | IBICar+      -- ^ @CAR@+    | IBIClock+      -- ^ @CLOCK@+    | IBIConfirmationNumberIcon+      -- ^ @CONFIRMATION_NUMBER_ICON@+    | IBIDollar+      -- ^ @DOLLAR@+    | IBIDescription+      -- ^ @DESCRIPTION@+    | IBIEmail+      -- ^ @EMAIL@+    | IBIEventPerformer+      -- ^ @EVENT_PERFORMER@+    | IBIEventSeat+      -- ^ @EVENT_SEAT@+    | IBIFlightArrival+      -- ^ @FLIGHT_ARRIVAL@+    | IBIFlightDeParture+      -- ^ @FLIGHT_DEPARTURE@+    | IBIHotel+      -- ^ @HOTEL@+    | IBIHotelRoomType+      -- ^ @HOTEL_ROOM_TYPE@+    | IBIInvite+      -- ^ @INVITE@+    | IBIMapPin+      -- ^ @MAP_PIN@+    | IBIMembership+      -- ^ @MEMBERSHIP@+    | IBIMultiplePeople+      -- ^ @MULTIPLE_PEOPLE@+    | IBIOffer+      -- ^ @OFFER@+    | IBIPerson+      -- ^ @PERSON@+    | IBIPhone+      -- ^ @PHONE@+    | IBIRestaurantIcon+      -- ^ @RESTAURANT_ICON@+    | IBIShoppingCart+      -- ^ @SHOPPING_CART@+    | IBIStar+      -- ^ @STAR@+    | IBIStore+      -- ^ @STORE@+    | IBITicket+      -- ^ @TICKET@+    | IBITrain+      -- ^ @TRAIN@+    | IBIVideoCamera+      -- ^ @VIDEO_CAMERA@+    | IBIVideoPlay+      -- ^ @VIDEO_PLAY@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable ImageButtonIcon++instance FromHttpApiData ImageButtonIcon where+    parseQueryParam = \case+        "ICON_UNSPECIFIED" -> Right IBIIconUnspecified+        "AIRPLANE" -> Right IBIAirplane+        "BOOKMARK" -> Right IBIBookmark+        "BUS" -> Right IBIBus+        "CAR" -> Right IBICar+        "CLOCK" -> Right IBIClock+        "CONFIRMATION_NUMBER_ICON" -> Right IBIConfirmationNumberIcon+        "DOLLAR" -> Right IBIDollar+        "DESCRIPTION" -> Right IBIDescription+        "EMAIL" -> Right IBIEmail+        "EVENT_PERFORMER" -> Right IBIEventPerformer+        "EVENT_SEAT" -> Right IBIEventSeat+        "FLIGHT_ARRIVAL" -> Right IBIFlightArrival+        "FLIGHT_DEPARTURE" -> Right IBIFlightDeParture+        "HOTEL" -> Right IBIHotel+        "HOTEL_ROOM_TYPE" -> Right IBIHotelRoomType+        "INVITE" -> Right IBIInvite+        "MAP_PIN" -> Right IBIMapPin+        "MEMBERSHIP" -> Right IBIMembership+        "MULTIPLE_PEOPLE" -> Right IBIMultiplePeople+        "OFFER" -> Right IBIOffer+        "PERSON" -> Right IBIPerson+        "PHONE" -> Right IBIPhone+        "RESTAURANT_ICON" -> Right IBIRestaurantIcon+        "SHOPPING_CART" -> Right IBIShoppingCart+        "STAR" -> Right IBIStar+        "STORE" -> Right IBIStore+        "TICKET" -> Right IBITicket+        "TRAIN" -> Right IBITrain+        "VIDEO_CAMERA" -> Right IBIVideoCamera+        "VIDEO_PLAY" -> Right IBIVideoPlay+        x -> Left ("Unable to parse ImageButtonIcon from: " <> x)++instance ToHttpApiData ImageButtonIcon where+    toQueryParam = \case+        IBIIconUnspecified -> "ICON_UNSPECIFIED"+        IBIAirplane -> "AIRPLANE"+        IBIBookmark -> "BOOKMARK"+        IBIBus -> "BUS"+        IBICar -> "CAR"+        IBIClock -> "CLOCK"+        IBIConfirmationNumberIcon -> "CONFIRMATION_NUMBER_ICON"+        IBIDollar -> "DOLLAR"+        IBIDescription -> "DESCRIPTION"+        IBIEmail -> "EMAIL"+        IBIEventPerformer -> "EVENT_PERFORMER"+        IBIEventSeat -> "EVENT_SEAT"+        IBIFlightArrival -> "FLIGHT_ARRIVAL"+        IBIFlightDeParture -> "FLIGHT_DEPARTURE"+        IBIHotel -> "HOTEL"+        IBIHotelRoomType -> "HOTEL_ROOM_TYPE"+        IBIInvite -> "INVITE"+        IBIMapPin -> "MAP_PIN"+        IBIMembership -> "MEMBERSHIP"+        IBIMultiplePeople -> "MULTIPLE_PEOPLE"+        IBIOffer -> "OFFER"+        IBIPerson -> "PERSON"+        IBIPhone -> "PHONE"+        IBIRestaurantIcon -> "RESTAURANT_ICON"+        IBIShoppingCart -> "SHOPPING_CART"+        IBIStar -> "STAR"+        IBIStore -> "STORE"+        IBITicket -> "TICKET"+        IBITrain -> "TRAIN"+        IBIVideoCamera -> "VIDEO_CAMERA"+        IBIVideoPlay -> "VIDEO_PLAY"++instance FromJSON ImageButtonIcon where+    parseJSON = parseJSONText "ImageButtonIcon"++instance ToJSON ImageButtonIcon where+    toJSON = toJSONText++-- | V1 error format.+data Xgafv+    = X1+      -- ^ @1@+      -- v1 error format+    | X2+      -- ^ @2@+      -- v2 error format+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable Xgafv++instance FromHttpApiData Xgafv where+    parseQueryParam = \case+        "1" -> Right X1+        "2" -> Right X2+        x -> Left ("Unable to parse Xgafv from: " <> x)++instance ToHttpApiData Xgafv where+    toQueryParam = \case+        X1 -> "1"+        X2 -> "2"++instance FromJSON Xgafv where+    parseJSON = parseJSONText "Xgafv"++instance ToJSON Xgafv where+    toJSON = toJSONText++-- | The type of the event.+data DeprecatedEventType+    = DETUnspecified+      -- ^ @UNSPECIFIED@+      -- Default value for the enum. DO NOT USE.+    | DETMessage+      -- ^ @MESSAGE@+      -- A message was sent in a room or direct message.+    | DETAddedToSpace+      -- ^ @ADDED_TO_SPACE@+      -- The bot was added to a room or DM.+    | DETRemovedFromSpace+      -- ^ @REMOVED_FROM_SPACE@+      -- The bot was removed from a room or DM.+    | DETCardClicked+      -- ^ @CARD_CLICKED@+      -- The bot\'s interactive card was clicked.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable DeprecatedEventType++instance FromHttpApiData DeprecatedEventType where+    parseQueryParam = \case+        "UNSPECIFIED" -> Right DETUnspecified+        "MESSAGE" -> Right DETMessage+        "ADDED_TO_SPACE" -> Right DETAddedToSpace+        "REMOVED_FROM_SPACE" -> Right DETRemovedFromSpace+        "CARD_CLICKED" -> Right DETCardClicked+        x -> Left ("Unable to parse DeprecatedEventType from: " <> x)++instance ToHttpApiData DeprecatedEventType where+    toQueryParam = \case+        DETUnspecified -> "UNSPECIFIED"+        DETMessage -> "MESSAGE"+        DETAddedToSpace -> "ADDED_TO_SPACE"+        DETRemovedFromSpace -> "REMOVED_FROM_SPACE"+        DETCardClicked -> "CARD_CLICKED"++instance FromJSON DeprecatedEventType where+    parseJSON = parseJSONText "DeprecatedEventType"++instance ToJSON DeprecatedEventType where+    toJSON = toJSONText++-- | User type.+data UserType+    = UTTypeUnspecified+      -- ^ @TYPE_UNSPECIFIED@+      -- Default value for the enum. DO NOT USE.+    | UTHuman+      -- ^ @HUMAN@+      -- Human user.+    | UTBot+      -- ^ @BOT@+      -- Bot user.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable UserType++instance FromHttpApiData UserType where+    parseQueryParam = \case+        "TYPE_UNSPECIFIED" -> Right UTTypeUnspecified+        "HUMAN" -> Right UTHuman+        "BOT" -> Right UTBot+        x -> Left ("Unable to parse UserType from: " <> x)++instance ToHttpApiData UserType where+    toQueryParam = \case+        UTTypeUnspecified -> "TYPE_UNSPECIFIED"+        UTHuman -> "HUMAN"+        UTBot -> "BOT"++instance FromJSON UserType where+    parseJSON = parseJSONText "UserType"++instance ToJSON UserType where+    toJSON = toJSONText
+ gen/Network/Google/Resource/Chat/Spaces/Get.hs view
@@ -0,0 +1,142 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a space.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.get@.+module Network.Google.Resource.Chat.Spaces.Get+    (+    -- * REST Resource+      SpacesGetResource++    -- * Creating a Request+    , spacesGet+    , SpacesGet++    -- * Request Lenses+    , sgXgafv+    , sgUploadProtocol+    , sgAccessToken+    , sgUploadType+    , sgName+    , sgCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.get@ method which the+-- 'SpacesGet' request conforms to.+type SpacesGetResource =+     "v1" :>+       Capture "name" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :> Get '[JSON] Space++-- | Returns a space.+--+-- /See:/ 'spacesGet' smart constructor.+data SpacesGet = SpacesGet'+    { _sgXgafv          :: !(Maybe Xgafv)+    , _sgUploadProtocol :: !(Maybe Text)+    , _sgAccessToken    :: !(Maybe Text)+    , _sgUploadType     :: !(Maybe Text)+    , _sgName           :: !Text+    , _sgCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sgXgafv'+--+-- * 'sgUploadProtocol'+--+-- * 'sgAccessToken'+--+-- * 'sgUploadType'+--+-- * 'sgName'+--+-- * 'sgCallback'+spacesGet+    :: Text -- ^ 'sgName'+    -> SpacesGet+spacesGet pSgName_ =+    SpacesGet'+    { _sgXgafv = Nothing+    , _sgUploadProtocol = Nothing+    , _sgAccessToken = Nothing+    , _sgUploadType = Nothing+    , _sgName = pSgName_+    , _sgCallback = Nothing+    }++-- | V1 error format.+sgXgafv :: Lens' SpacesGet (Maybe Xgafv)+sgXgafv = lens _sgXgafv (\ s a -> s{_sgXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sgUploadProtocol :: Lens' SpacesGet (Maybe Text)+sgUploadProtocol+  = lens _sgUploadProtocol+      (\ s a -> s{_sgUploadProtocol = a})++-- | OAuth access token.+sgAccessToken :: Lens' SpacesGet (Maybe Text)+sgAccessToken+  = lens _sgAccessToken+      (\ s a -> s{_sgAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sgUploadType :: Lens' SpacesGet (Maybe Text)+sgUploadType+  = lens _sgUploadType (\ s a -> s{_sgUploadType = a})++-- | Required. Resource name of the space, in the form \"spaces\/*\".+-- Example: spaces\/AAAAMpdlehY+sgName :: Lens' SpacesGet Text+sgName = lens _sgName (\ s a -> s{_sgName = a})++-- | JSONP+sgCallback :: Lens' SpacesGet (Maybe Text)+sgCallback+  = lens _sgCallback (\ s a -> s{_sgCallback = a})++instance GoogleRequest SpacesGet where+        type Rs SpacesGet = Space+        type Scopes SpacesGet = '[]+        requestClient SpacesGet'{..}+          = go _sgName _sgXgafv _sgUploadProtocol+              _sgAccessToken+              _sgUploadType+              _sgCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient (Proxy :: Proxy SpacesGetResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/List.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.List+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists spaces the caller is a member of.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.list@.+module Network.Google.Resource.Chat.Spaces.List+    (+    -- * REST Resource+      SpacesListResource++    -- * Creating a Request+    , spacesList+    , SpacesList++    -- * Request Lenses+    , slXgafv+    , slUploadProtocol+    , slAccessToken+    , slUploadType+    , slPageToken+    , slPageSize+    , slCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.list@ method which the+-- 'SpacesList' request conforms to.+type SpacesListResource =+     "v1" :>+       "spaces" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "pageToken" Text :>+                   QueryParam "pageSize" (Textual Int32) :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         Get '[JSON] ListSpacesResponse++-- | Lists spaces the caller is a member of.+--+-- /See:/ 'spacesList' smart constructor.+data SpacesList = SpacesList'+    { _slXgafv          :: !(Maybe Xgafv)+    , _slUploadProtocol :: !(Maybe Text)+    , _slAccessToken    :: !(Maybe Text)+    , _slUploadType     :: !(Maybe Text)+    , _slPageToken      :: !(Maybe Text)+    , _slPageSize       :: !(Maybe (Textual Int32))+    , _slCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'slXgafv'+--+-- * 'slUploadProtocol'+--+-- * 'slAccessToken'+--+-- * 'slUploadType'+--+-- * 'slPageToken'+--+-- * 'slPageSize'+--+-- * 'slCallback'+spacesList+    :: SpacesList+spacesList =+    SpacesList'+    { _slXgafv = Nothing+    , _slUploadProtocol = Nothing+    , _slAccessToken = Nothing+    , _slUploadType = Nothing+    , _slPageToken = Nothing+    , _slPageSize = Nothing+    , _slCallback = Nothing+    }++-- | V1 error format.+slXgafv :: Lens' SpacesList (Maybe Xgafv)+slXgafv = lens _slXgafv (\ s a -> s{_slXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+slUploadProtocol :: Lens' SpacesList (Maybe Text)+slUploadProtocol+  = lens _slUploadProtocol+      (\ s a -> s{_slUploadProtocol = a})++-- | OAuth access token.+slAccessToken :: Lens' SpacesList (Maybe Text)+slAccessToken+  = lens _slAccessToken+      (\ s a -> s{_slAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+slUploadType :: Lens' SpacesList (Maybe Text)+slUploadType+  = lens _slUploadType (\ s a -> s{_slUploadType = a})++-- | A token identifying a page of results the server should return.+slPageToken :: Lens' SpacesList (Maybe Text)+slPageToken+  = lens _slPageToken (\ s a -> s{_slPageToken = a})++-- | Requested page size. The value is capped at 1000. Server may return+-- fewer results than requested. If unspecified, server will default to+-- 100.+slPageSize :: Lens' SpacesList (Maybe Int32)+slPageSize+  = lens _slPageSize (\ s a -> s{_slPageSize = a}) .+      mapping _Coerce++-- | JSONP+slCallback :: Lens' SpacesList (Maybe Text)+slCallback+  = lens _slCallback (\ s a -> s{_slCallback = a})++instance GoogleRequest SpacesList where+        type Rs SpacesList = ListSpacesResponse+        type Scopes SpacesList = '[]+        requestClient SpacesList'{..}+          = go _slXgafv _slUploadProtocol _slAccessToken+              _slUploadType+              _slPageToken+              _slPageSize+              _slCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient (Proxy :: Proxy SpacesListResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Members/Get.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Members.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a membership.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.members.get@.+module Network.Google.Resource.Chat.Spaces.Members.Get+    (+    -- * REST Resource+      SpacesMembersGetResource++    -- * Creating a Request+    , spacesMembersGet+    , SpacesMembersGet++    -- * Request Lenses+    , spaXgafv+    , spaUploadProtocol+    , spaAccessToken+    , spaUploadType+    , spaName+    , spaCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.members.get@ method which the+-- 'SpacesMembersGet' request conforms to.+type SpacesMembersGetResource =+     "v1" :>+       Capture "name" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :> Get '[JSON] Membership++-- | Returns a membership.+--+-- /See:/ 'spacesMembersGet' smart constructor.+data SpacesMembersGet = SpacesMembersGet'+    { _spaXgafv          :: !(Maybe Xgafv)+    , _spaUploadProtocol :: !(Maybe Text)+    , _spaAccessToken    :: !(Maybe Text)+    , _spaUploadType     :: !(Maybe Text)+    , _spaName           :: !Text+    , _spaCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMembersGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spaXgafv'+--+-- * 'spaUploadProtocol'+--+-- * 'spaAccessToken'+--+-- * 'spaUploadType'+--+-- * 'spaName'+--+-- * 'spaCallback'+spacesMembersGet+    :: Text -- ^ 'spaName'+    -> SpacesMembersGet+spacesMembersGet pSpaName_ =+    SpacesMembersGet'+    { _spaXgafv = Nothing+    , _spaUploadProtocol = Nothing+    , _spaAccessToken = Nothing+    , _spaUploadType = Nothing+    , _spaName = pSpaName_+    , _spaCallback = Nothing+    }++-- | V1 error format.+spaXgafv :: Lens' SpacesMembersGet (Maybe Xgafv)+spaXgafv = lens _spaXgafv (\ s a -> s{_spaXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+spaUploadProtocol :: Lens' SpacesMembersGet (Maybe Text)+spaUploadProtocol+  = lens _spaUploadProtocol+      (\ s a -> s{_spaUploadProtocol = a})++-- | OAuth access token.+spaAccessToken :: Lens' SpacesMembersGet (Maybe Text)+spaAccessToken+  = lens _spaAccessToken+      (\ s a -> s{_spaAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+spaUploadType :: Lens' SpacesMembersGet (Maybe Text)+spaUploadType+  = lens _spaUploadType+      (\ s a -> s{_spaUploadType = a})++-- | Required. Resource name of the membership to be retrieved, in the form+-- \"spaces\/*\/members\/*\". Example:+-- spaces\/AAAAMpdlehY\/members\/105115627578887013105+spaName :: Lens' SpacesMembersGet Text+spaName = lens _spaName (\ s a -> s{_spaName = a})++-- | JSONP+spaCallback :: Lens' SpacesMembersGet (Maybe Text)+spaCallback+  = lens _spaCallback (\ s a -> s{_spaCallback = a})++instance GoogleRequest SpacesMembersGet where+        type Rs SpacesMembersGet = Membership+        type Scopes SpacesMembersGet = '[]+        requestClient SpacesMembersGet'{..}+          = go _spaName _spaXgafv _spaUploadProtocol+              _spaAccessToken+              _spaUploadType+              _spaCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMembersGetResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Members/List.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Members.List+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Lists human memberships in a space.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.members.list@.+module Network.Google.Resource.Chat.Spaces.Members.List+    (+    -- * REST Resource+      SpacesMembersListResource++    -- * Creating a Request+    , spacesMembersList+    , SpacesMembersList++    -- * Request Lenses+    , smlParent+    , smlXgafv+    , smlUploadProtocol+    , smlAccessToken+    , smlUploadType+    , smlPageToken+    , smlPageSize+    , smlCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.members.list@ method which the+-- 'SpacesMembersList' request conforms to.+type SpacesMembersListResource =+     "v1" :>+       Capture "parent" Text :>+         "members" :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "pageToken" Text :>+                     QueryParam "pageSize" (Textual Int32) :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] ListMembershipsResponse++-- | Lists human memberships in a space.+--+-- /See:/ 'spacesMembersList' smart constructor.+data SpacesMembersList = SpacesMembersList'+    { _smlParent         :: !Text+    , _smlXgafv          :: !(Maybe Xgafv)+    , _smlUploadProtocol :: !(Maybe Text)+    , _smlAccessToken    :: !(Maybe Text)+    , _smlUploadType     :: !(Maybe Text)+    , _smlPageToken      :: !(Maybe Text)+    , _smlPageSize       :: !(Maybe (Textual Int32))+    , _smlCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMembersList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smlParent'+--+-- * 'smlXgafv'+--+-- * 'smlUploadProtocol'+--+-- * 'smlAccessToken'+--+-- * 'smlUploadType'+--+-- * 'smlPageToken'+--+-- * 'smlPageSize'+--+-- * 'smlCallback'+spacesMembersList+    :: Text -- ^ 'smlParent'+    -> SpacesMembersList+spacesMembersList pSmlParent_ =+    SpacesMembersList'+    { _smlParent = pSmlParent_+    , _smlXgafv = Nothing+    , _smlUploadProtocol = Nothing+    , _smlAccessToken = Nothing+    , _smlUploadType = Nothing+    , _smlPageToken = Nothing+    , _smlPageSize = Nothing+    , _smlCallback = Nothing+    }++-- | Required. The resource name of the space for which membership list is to+-- be fetched, in the form \"spaces\/*\". Example: spaces\/AAAAMpdlehY+smlParent :: Lens' SpacesMembersList Text+smlParent+  = lens _smlParent (\ s a -> s{_smlParent = a})++-- | V1 error format.+smlXgafv :: Lens' SpacesMembersList (Maybe Xgafv)+smlXgafv = lens _smlXgafv (\ s a -> s{_smlXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+smlUploadProtocol :: Lens' SpacesMembersList (Maybe Text)+smlUploadProtocol+  = lens _smlUploadProtocol+      (\ s a -> s{_smlUploadProtocol = a})++-- | OAuth access token.+smlAccessToken :: Lens' SpacesMembersList (Maybe Text)+smlAccessToken+  = lens _smlAccessToken+      (\ s a -> s{_smlAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+smlUploadType :: Lens' SpacesMembersList (Maybe Text)+smlUploadType+  = lens _smlUploadType+      (\ s a -> s{_smlUploadType = a})++-- | A token identifying a page of results the server should return.+smlPageToken :: Lens' SpacesMembersList (Maybe Text)+smlPageToken+  = lens _smlPageToken (\ s a -> s{_smlPageToken = a})++-- | Requested page size. The value is capped at 1000. Server may return+-- fewer results than requested. If unspecified, server will default to+-- 100.+smlPageSize :: Lens' SpacesMembersList (Maybe Int32)+smlPageSize+  = lens _smlPageSize (\ s a -> s{_smlPageSize = a}) .+      mapping _Coerce++-- | JSONP+smlCallback :: Lens' SpacesMembersList (Maybe Text)+smlCallback+  = lens _smlCallback (\ s a -> s{_smlCallback = a})++instance GoogleRequest SpacesMembersList where+        type Rs SpacesMembersList = ListMembershipsResponse+        type Scopes SpacesMembersList = '[]+        requestClient SpacesMembersList'{..}+          = go _smlParent _smlXgafv _smlUploadProtocol+              _smlAccessToken+              _smlUploadType+              _smlPageToken+              _smlPageSize+              _smlCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMembersListResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Messages/Create.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Messages.Create+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a message.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.messages.create@.+module Network.Google.Resource.Chat.Spaces.Messages.Create+    (+    -- * REST Resource+      SpacesMessagesCreateResource++    -- * Creating a Request+    , spacesMessagesCreate+    , SpacesMessagesCreate++    -- * Request Lenses+    , smcParent+    , smcXgafv+    , smcUploadProtocol+    , smcAccessToken+    , smcUploadType+    , smcPayload+    , smcCallback+    , smcThreadKey+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.messages.create@ method which the+-- 'SpacesMessagesCreate' request conforms to.+type SpacesMessagesCreateResource =+     "v1" :>+       Capture "parent" Text :>+         "messages" :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "callback" Text :>+                     QueryParam "threadKey" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] Message :> Post '[JSON] Message++-- | Creates a message.+--+-- /See:/ 'spacesMessagesCreate' smart constructor.+data SpacesMessagesCreate = SpacesMessagesCreate'+    { _smcParent         :: !Text+    , _smcXgafv          :: !(Maybe Xgafv)+    , _smcUploadProtocol :: !(Maybe Text)+    , _smcAccessToken    :: !(Maybe Text)+    , _smcUploadType     :: !(Maybe Text)+    , _smcPayload        :: !Message+    , _smcCallback       :: !(Maybe Text)+    , _smcThreadKey      :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMessagesCreate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smcParent'+--+-- * 'smcXgafv'+--+-- * 'smcUploadProtocol'+--+-- * 'smcAccessToken'+--+-- * 'smcUploadType'+--+-- * 'smcPayload'+--+-- * 'smcCallback'+--+-- * 'smcThreadKey'+spacesMessagesCreate+    :: Text -- ^ 'smcParent'+    -> Message -- ^ 'smcPayload'+    -> SpacesMessagesCreate+spacesMessagesCreate pSmcParent_ pSmcPayload_ =+    SpacesMessagesCreate'+    { _smcParent = pSmcParent_+    , _smcXgafv = Nothing+    , _smcUploadProtocol = Nothing+    , _smcAccessToken = Nothing+    , _smcUploadType = Nothing+    , _smcPayload = pSmcPayload_+    , _smcCallback = Nothing+    , _smcThreadKey = Nothing+    }++-- | Required. Space resource name, in the form \"spaces\/*\". Example:+-- spaces\/AAAAMpdlehY+smcParent :: Lens' SpacesMessagesCreate Text+smcParent+  = lens _smcParent (\ s a -> s{_smcParent = a})++-- | V1 error format.+smcXgafv :: Lens' SpacesMessagesCreate (Maybe Xgafv)+smcXgafv = lens _smcXgafv (\ s a -> s{_smcXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+smcUploadProtocol :: Lens' SpacesMessagesCreate (Maybe Text)+smcUploadProtocol+  = lens _smcUploadProtocol+      (\ s a -> s{_smcUploadProtocol = a})++-- | OAuth access token.+smcAccessToken :: Lens' SpacesMessagesCreate (Maybe Text)+smcAccessToken+  = lens _smcAccessToken+      (\ s a -> s{_smcAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+smcUploadType :: Lens' SpacesMessagesCreate (Maybe Text)+smcUploadType+  = lens _smcUploadType+      (\ s a -> s{_smcUploadType = a})++-- | Multipart request metadata.+smcPayload :: Lens' SpacesMessagesCreate Message+smcPayload+  = lens _smcPayload (\ s a -> s{_smcPayload = a})++-- | JSONP+smcCallback :: Lens' SpacesMessagesCreate (Maybe Text)+smcCallback+  = lens _smcCallback (\ s a -> s{_smcCallback = a})++-- | Opaque thread identifier string that can be specified to group messages+-- into a single thread. If this is the first message with a given thread+-- identifier, a new thread is created. Subsequent messages with the same+-- thread identifier will be posted into the same thread. This relieves+-- bots and webhooks from having to store the Hangouts Chat thread ID of a+-- thread (created earlier by them) to post further updates to it. Has no+-- effect if thread field, corresponding to an existing thread, is set in+-- message.+smcThreadKey :: Lens' SpacesMessagesCreate (Maybe Text)+smcThreadKey+  = lens _smcThreadKey (\ s a -> s{_smcThreadKey = a})++instance GoogleRequest SpacesMessagesCreate where+        type Rs SpacesMessagesCreate = Message+        type Scopes SpacesMessagesCreate = '[]+        requestClient SpacesMessagesCreate'{..}+          = go _smcParent _smcXgafv _smcUploadProtocol+              _smcAccessToken+              _smcUploadType+              _smcCallback+              _smcThreadKey+              (Just AltJSON)+              _smcPayload+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMessagesCreateResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Messages/Delete.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Messages.Delete+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a message.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.messages.delete@.+module Network.Google.Resource.Chat.Spaces.Messages.Delete+    (+    -- * REST Resource+      SpacesMessagesDeleteResource++    -- * Creating a Request+    , spacesMessagesDelete+    , SpacesMessagesDelete++    -- * Request Lenses+    , smdXgafv+    , smdUploadProtocol+    , smdAccessToken+    , smdUploadType+    , smdName+    , smdCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.messages.delete@ method which the+-- 'SpacesMessagesDelete' request conforms to.+type SpacesMessagesDeleteResource =+     "v1" :>+       Capture "name" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty++-- | Deletes a message.+--+-- /See:/ 'spacesMessagesDelete' smart constructor.+data SpacesMessagesDelete = SpacesMessagesDelete'+    { _smdXgafv          :: !(Maybe Xgafv)+    , _smdUploadProtocol :: !(Maybe Text)+    , _smdAccessToken    :: !(Maybe Text)+    , _smdUploadType     :: !(Maybe Text)+    , _smdName           :: !Text+    , _smdCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMessagesDelete' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smdXgafv'+--+-- * 'smdUploadProtocol'+--+-- * 'smdAccessToken'+--+-- * 'smdUploadType'+--+-- * 'smdName'+--+-- * 'smdCallback'+spacesMessagesDelete+    :: Text -- ^ 'smdName'+    -> SpacesMessagesDelete+spacesMessagesDelete pSmdName_ =+    SpacesMessagesDelete'+    { _smdXgafv = Nothing+    , _smdUploadProtocol = Nothing+    , _smdAccessToken = Nothing+    , _smdUploadType = Nothing+    , _smdName = pSmdName_+    , _smdCallback = Nothing+    }++-- | V1 error format.+smdXgafv :: Lens' SpacesMessagesDelete (Maybe Xgafv)+smdXgafv = lens _smdXgafv (\ s a -> s{_smdXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+smdUploadProtocol :: Lens' SpacesMessagesDelete (Maybe Text)+smdUploadProtocol+  = lens _smdUploadProtocol+      (\ s a -> s{_smdUploadProtocol = a})++-- | OAuth access token.+smdAccessToken :: Lens' SpacesMessagesDelete (Maybe Text)+smdAccessToken+  = lens _smdAccessToken+      (\ s a -> s{_smdAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+smdUploadType :: Lens' SpacesMessagesDelete (Maybe Text)+smdUploadType+  = lens _smdUploadType+      (\ s a -> s{_smdUploadType = a})++-- | Required. Resource name of the message to be deleted, in the form+-- \"spaces\/*\/messages\/*\" Example:+-- spaces\/AAAAMpdlehY\/messages\/UMxbHmzDlr4.UMxbHmzDlr4+smdName :: Lens' SpacesMessagesDelete Text+smdName = lens _smdName (\ s a -> s{_smdName = a})++-- | JSONP+smdCallback :: Lens' SpacesMessagesDelete (Maybe Text)+smdCallback+  = lens _smdCallback (\ s a -> s{_smdCallback = a})++instance GoogleRequest SpacesMessagesDelete where+        type Rs SpacesMessagesDelete = Empty+        type Scopes SpacesMessagesDelete = '[]+        requestClient SpacesMessagesDelete'{..}+          = go _smdName _smdXgafv _smdUploadProtocol+              _smdAccessToken+              _smdUploadType+              _smdCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMessagesDeleteResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Messages/Get.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Messages.Get+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a message.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.messages.get@.+module Network.Google.Resource.Chat.Spaces.Messages.Get+    (+    -- * REST Resource+      SpacesMessagesGetResource++    -- * Creating a Request+    , spacesMessagesGet+    , SpacesMessagesGet++    -- * Request Lenses+    , smgXgafv+    , smgUploadProtocol+    , smgAccessToken+    , smgUploadType+    , smgName+    , smgCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.messages.get@ method which the+-- 'SpacesMessagesGet' request conforms to.+type SpacesMessagesGetResource =+     "v1" :>+       Capture "name" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :> Get '[JSON] Message++-- | Returns a message.+--+-- /See:/ 'spacesMessagesGet' smart constructor.+data SpacesMessagesGet = SpacesMessagesGet'+    { _smgXgafv          :: !(Maybe Xgafv)+    , _smgUploadProtocol :: !(Maybe Text)+    , _smgAccessToken    :: !(Maybe Text)+    , _smgUploadType     :: !(Maybe Text)+    , _smgName           :: !Text+    , _smgCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMessagesGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smgXgafv'+--+-- * 'smgUploadProtocol'+--+-- * 'smgAccessToken'+--+-- * 'smgUploadType'+--+-- * 'smgName'+--+-- * 'smgCallback'+spacesMessagesGet+    :: Text -- ^ 'smgName'+    -> SpacesMessagesGet+spacesMessagesGet pSmgName_ =+    SpacesMessagesGet'+    { _smgXgafv = Nothing+    , _smgUploadProtocol = Nothing+    , _smgAccessToken = Nothing+    , _smgUploadType = Nothing+    , _smgName = pSmgName_+    , _smgCallback = Nothing+    }++-- | V1 error format.+smgXgafv :: Lens' SpacesMessagesGet (Maybe Xgafv)+smgXgafv = lens _smgXgafv (\ s a -> s{_smgXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+smgUploadProtocol :: Lens' SpacesMessagesGet (Maybe Text)+smgUploadProtocol+  = lens _smgUploadProtocol+      (\ s a -> s{_smgUploadProtocol = a})++-- | OAuth access token.+smgAccessToken :: Lens' SpacesMessagesGet (Maybe Text)+smgAccessToken+  = lens _smgAccessToken+      (\ s a -> s{_smgAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+smgUploadType :: Lens' SpacesMessagesGet (Maybe Text)+smgUploadType+  = lens _smgUploadType+      (\ s a -> s{_smgUploadType = a})++-- | Required. Resource name of the message to be retrieved, in the form+-- \"spaces\/*\/messages\/*\". Example:+-- spaces\/AAAAMpdlehY\/messages\/UMxbHmzDlr4.UMxbHmzDlr4+smgName :: Lens' SpacesMessagesGet Text+smgName = lens _smgName (\ s a -> s{_smgName = a})++-- | JSONP+smgCallback :: Lens' SpacesMessagesGet (Maybe Text)+smgCallback+  = lens _smgCallback (\ s a -> s{_smgCallback = a})++instance GoogleRequest SpacesMessagesGet where+        type Rs SpacesMessagesGet = Message+        type Scopes SpacesMessagesGet = '[]+        requestClient SpacesMessagesGet'{..}+          = go _smgName _smgXgafv _smgUploadProtocol+              _smgAccessToken+              _smgUploadType+              _smgCallback+              (Just AltJSON)+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMessagesGetResource)+                      mempty
+ gen/Network/Google/Resource/Chat/Spaces/Messages/Update.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Chat.Spaces.Messages.Update+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a message.+--+-- /See:/ <https://developers.google.com/hangouts/chat Hangouts Chat API Reference> for @chat.spaces.messages.update@.+module Network.Google.Resource.Chat.Spaces.Messages.Update+    (+    -- * REST Resource+      SpacesMessagesUpdateResource++    -- * Creating a Request+    , spacesMessagesUpdate+    , SpacesMessagesUpdate++    -- * Request Lenses+    , smuXgafv+    , smuUploadProtocol+    , smuUpdateMask+    , smuAccessToken+    , smuUploadType+    , smuPayload+    , smuName+    , smuCallback+    ) where++import           Network.Google.Chat.Types+import           Network.Google.Prelude++-- | A resource alias for @chat.spaces.messages.update@ method which the+-- 'SpacesMessagesUpdate' request conforms to.+type SpacesMessagesUpdateResource =+     "v1" :>+       Capture "name" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "updateMask" GFieldMask :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "callback" Text :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] Message :> Put '[JSON] Message++-- | Updates a message.+--+-- /See:/ 'spacesMessagesUpdate' smart constructor.+data SpacesMessagesUpdate = SpacesMessagesUpdate'+    { _smuXgafv          :: !(Maybe Xgafv)+    , _smuUploadProtocol :: !(Maybe Text)+    , _smuUpdateMask     :: !(Maybe GFieldMask)+    , _smuAccessToken    :: !(Maybe Text)+    , _smuUploadType     :: !(Maybe Text)+    , _smuPayload        :: !Message+    , _smuName           :: !Text+    , _smuCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SpacesMessagesUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smuXgafv'+--+-- * 'smuUploadProtocol'+--+-- * 'smuUpdateMask'+--+-- * 'smuAccessToken'+--+-- * 'smuUploadType'+--+-- * 'smuPayload'+--+-- * 'smuName'+--+-- * 'smuCallback'+spacesMessagesUpdate+    :: Message -- ^ 'smuPayload'+    -> Text -- ^ 'smuName'+    -> SpacesMessagesUpdate+spacesMessagesUpdate pSmuPayload_ pSmuName_ =+    SpacesMessagesUpdate'+    { _smuXgafv = Nothing+    , _smuUploadProtocol = Nothing+    , _smuUpdateMask = Nothing+    , _smuAccessToken = Nothing+    , _smuUploadType = Nothing+    , _smuPayload = pSmuPayload_+    , _smuName = pSmuName_+    , _smuCallback = Nothing+    }++-- | V1 error format.+smuXgafv :: Lens' SpacesMessagesUpdate (Maybe Xgafv)+smuXgafv = lens _smuXgafv (\ s a -> s{_smuXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+smuUploadProtocol :: Lens' SpacesMessagesUpdate (Maybe Text)+smuUploadProtocol+  = lens _smuUploadProtocol+      (\ s a -> s{_smuUploadProtocol = a})++-- | Required. The field paths to be updated. Currently supported field+-- paths: \"text\", \"cards\".+smuUpdateMask :: Lens' SpacesMessagesUpdate (Maybe GFieldMask)+smuUpdateMask+  = lens _smuUpdateMask+      (\ s a -> s{_smuUpdateMask = a})++-- | OAuth access token.+smuAccessToken :: Lens' SpacesMessagesUpdate (Maybe Text)+smuAccessToken+  = lens _smuAccessToken+      (\ s a -> s{_smuAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+smuUploadType :: Lens' SpacesMessagesUpdate (Maybe Text)+smuUploadType+  = lens _smuUploadType+      (\ s a -> s{_smuUploadType = a})++-- | Multipart request metadata.+smuPayload :: Lens' SpacesMessagesUpdate Message+smuPayload+  = lens _smuPayload (\ s a -> s{_smuPayload = a})++-- | Resource name, in the form \"spaces\/*\/messages\/*\". Example:+-- spaces\/AAAAMpdlehY\/messages\/UMxbHmzDlr4.UMxbHmzDlr4+smuName :: Lens' SpacesMessagesUpdate Text+smuName = lens _smuName (\ s a -> s{_smuName = a})++-- | JSONP+smuCallback :: Lens' SpacesMessagesUpdate (Maybe Text)+smuCallback+  = lens _smuCallback (\ s a -> s{_smuCallback = a})++instance GoogleRequest SpacesMessagesUpdate where+        type Rs SpacesMessagesUpdate = Message+        type Scopes SpacesMessagesUpdate = '[]+        requestClient SpacesMessagesUpdate'{..}+          = go _smuName _smuXgafv _smuUploadProtocol+              _smuUpdateMask+              _smuAccessToken+              _smuUploadType+              _smuCallback+              (Just AltJSON)+              _smuPayload+              chatService+          where go+                  = buildClient+                      (Proxy :: Proxy SpacesMessagesUpdateResource)+                      mempty
+ gogol-chat.cabal view
@@ -0,0 +1,53 @@+name:                  gogol-chat+version:               0.4.0+synopsis:              Google Hangouts Chat SDK.+homepage:              https://github.com/brendanhay/gogol+bug-reports:           https://github.com/brendanhay/gogol/issues+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2015-2016 Brendan Hay+category:              Network, Google, Cloud+build-type:            Simple+cabal-version:         >= 1.10+extra-source-files:    README.md src/.gitkeep++description:+    Enables bots to fetch information and perform actions in Hangouts Chat.+    .+    /Warning:/ 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 @v1@+    of the API.++source-repository head+    type:     git+    location: git://github.com/brendanhay/gogol.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.Google.Chat+        , Network.Google.Chat.Types+        , Network.Google.Resource.Chat.Spaces.Get+        , Network.Google.Resource.Chat.Spaces.List+        , Network.Google.Resource.Chat.Spaces.Members.Get+        , Network.Google.Resource.Chat.Spaces.Members.List+        , Network.Google.Resource.Chat.Spaces.Messages.Create+        , Network.Google.Resource.Chat.Spaces.Messages.Delete+        , Network.Google.Resource.Chat.Spaces.Messages.Get+        , Network.Google.Resource.Chat.Spaces.Messages.Update++    other-modules:+          Network.Google.Chat.Types.Product+        , Network.Google.Chat.Types.Sum++    build-depends:+          gogol-core == 0.4.0.*+        , base       >= 4.7 && < 5
+ src/.gitkeep view