packages feed

gogol-photoslibrary (empty) → 0.4.0

raw patch · 19 files changed

+5373/−0 lines, 19 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-photoslibrary++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`0.3.0`+++## Description++A client library for the Google Photos Library.+++## 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-photoslibrary` 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/PhotosLibrary.hs view
@@ -0,0 +1,363 @@+{-# LANGUAGE DataKinds         #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TypeOperators     #-}++{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- |+-- Module      : Network.Google.PhotosLibrary+-- 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)+--+-- Manage photos, videos, and albums in Google Photos+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference>+module Network.Google.PhotosLibrary+    (+    -- * Service Configuration+      photosLibraryService++    -- * OAuth Scopes+    , photosLibraryReadOnlyScope+    , photosLibraryScope+    , drivePhotosReadOnlyScope+    , photosLibrarySharingScope+    , photosLibraryAppendOnlyScope+    , photosLibraryReadOnlyAppcreatedDataScope++    -- * API Declaration+    , PhotosLibraryAPI++    -- * Resources++    -- ** photoslibrary.albums.addEnrichment+    , module Network.Google.Resource.PhotosLibrary.Albums.AddEnrichment++    -- ** photoslibrary.albums.create+    , module Network.Google.Resource.PhotosLibrary.Albums.Create++    -- ** photoslibrary.albums.get+    , module Network.Google.Resource.PhotosLibrary.Albums.Get++    -- ** photoslibrary.albums.list+    , module Network.Google.Resource.PhotosLibrary.Albums.List++    -- ** photoslibrary.albums.share+    , module Network.Google.Resource.PhotosLibrary.Albums.Share++    -- ** photoslibrary.mediaItems.batchCreate+    , module Network.Google.Resource.PhotosLibrary.MediaItems.BatchCreate++    -- ** photoslibrary.mediaItems.get+    , module Network.Google.Resource.PhotosLibrary.MediaItems.Get++    -- ** photoslibrary.mediaItems.search+    , module Network.Google.Resource.PhotosLibrary.MediaItems.Search++    -- ** photoslibrary.sharedAlbums.join+    , module Network.Google.Resource.PhotosLibrary.SharedAlbums.Join++    -- ** photoslibrary.sharedAlbums.list+    , module Network.Google.Resource.PhotosLibrary.SharedAlbums.List++    -- * Types++    -- ** LatLng+    , LatLng+    , latLng+    , llLatitude+    , llLongitude++    -- ** LocationEnrichment+    , LocationEnrichment+    , locationEnrichment+    , leLocation++    -- ** DateFilter+    , DateFilter+    , dateFilter+    , dfDates+    , dfRanges++    -- ** Photo+    , Photo+    , photo+    , pFocalLength+    , pCameraMake+    , pExposureTime+    , pCameraModel+    , pIsoEquivalent+    , pApertureFNumber++    -- ** TextEnrichment+    , TextEnrichment+    , textEnrichment+    , teText++    -- ** Status+    , Status+    , status+    , sDetails+    , sCode+    , sMessage++    -- ** AddEnrichmentToAlbumResponse+    , AddEnrichmentToAlbumResponse+    , addEnrichmentToAlbumResponse+    , aetarEnrichmentItem++    -- ** SearchMediaItemsResponse+    , SearchMediaItemsResponse+    , searchMediaItemsResponse+    , smirNextPageToken+    , smirMediaItems++    -- ** JoinSharedAlbumResponse+    , JoinSharedAlbumResponse+    , joinSharedAlbumResponse++    -- ** CreateAlbumRequest+    , CreateAlbumRequest+    , createAlbumRequest+    , carAlbum++    -- ** Location+    , Location+    , location+    , lLatlng+    , lLocationName++    -- ** VideoStatus+    , VideoStatus (..)++    -- ** NewEnrichmentItem+    , NewEnrichmentItem+    , newEnrichmentItem+    , neiLocationEnrichment+    , neiTextEnrichment+    , neiMapEnrichment++    -- ** ShareInfo+    , ShareInfo+    , shareInfo+    , siShareableURL+    , siShareToken+    , siSharedAlbumOptions++    -- ** BatchCreateMediaItemsRequest+    , BatchCreateMediaItemsRequest+    , batchCreateMediaItemsRequest+    , bcmirAlbumId+    , bcmirNewMediaItems+    , bcmirAlbumPosition++    -- ** Filters+    , Filters+    , filters+    , fDateFilter+    , fIncludeArchivedMedia+    , fMediaTypeFilter+    , fContentFilter++    -- ** StatusDetailsItem+    , StatusDetailsItem+    , statusDetailsItem+    , sdiAddtional++    -- ** DateRange+    , DateRange+    , dateRange+    , drEndDate+    , drStartDate++    -- ** SharedAlbumOptions+    , SharedAlbumOptions+    , sharedAlbumOptions+    , saoIsCollaborative+    , saoIsCommentable++    -- ** MediaMetadata+    , MediaMetadata+    , mediaMetadata+    , mmCreationTime+    , mmPhoto+    , mmHeight+    , mmWidth+    , mmVideo++    -- ** ShareAlbumResponse+    , ShareAlbumResponse+    , shareAlbumResponse+    , sarShareInfo++    -- ** Video+    , Video+    , video+    , vStatus+    , vCameraMake+    , vCameraModel+    , vFps++    -- ** MediaItem+    , MediaItem+    , mediaItem+    , miProductURL+    , miBaseURL+    , miMediaMetadata+    , miMimeType+    , miId+    , miContributorInfo+    , miDescription++    -- ** Date+    , Date+    , date+    , dDay+    , dYear+    , dMonth++    -- ** EnrichmentItem+    , EnrichmentItem+    , enrichmentItem+    , eiId++    -- ** ListSharedAlbumsResponse+    , ListSharedAlbumsResponse+    , listSharedAlbumsResponse+    , lsarNextPageToken+    , lsarSharedAlbums++    -- ** MediaTypeFilter+    , MediaTypeFilter+    , mediaTypeFilter+    , mtfMediaTypes++    -- ** NewMediaItemResult+    , NewMediaItemResult+    , newMediaItemResult+    , nmirStatus+    , nmirUploadToken+    , nmirMediaItem++    -- ** Album+    , Album+    , album+    , aIsWriteable+    , aProductURL+    , aShareInfo+    , aCoverPhotoBaseURL+    , aId+    , aTotalMediaItems+    , aTitle++    -- ** SimpleMediaItem+    , SimpleMediaItem+    , simpleMediaItem+    , smiUploadToken++    -- ** AlbumPositionPosition+    , AlbumPositionPosition (..)++    -- ** Xgafv+    , Xgafv (..)++    -- ** ContributorInfo+    , ContributorInfo+    , contributorInfo+    , ciProFilePictureBaseURL+    , ciDisplayName++    -- ** ListAlbumsResponse+    , ListAlbumsResponse+    , listAlbumsResponse+    , larNextPageToken+    , larAlbums++    -- ** MapEnrichment+    , MapEnrichment+    , mapEnrichment+    , meDestination+    , meOrigin++    -- ** SearchMediaItemsRequest+    , SearchMediaItemsRequest+    , searchMediaItemsRequest+    , smirAlbumId+    , smirFilters+    , smirPageToken+    , smirPageSize++    -- ** NewMediaItem+    , NewMediaItem+    , newMediaItem+    , nmiSimpleMediaItem+    , nmiDescription++    -- ** AddEnrichmentToAlbumRequest+    , AddEnrichmentToAlbumRequest+    , addEnrichmentToAlbumRequest+    , aetarNewEnrichmentItem+    , aetarAlbumPosition++    -- ** JoinSharedAlbumRequest+    , JoinSharedAlbumRequest+    , joinSharedAlbumRequest+    , jsarShareToken++    -- ** ShareAlbumRequest+    , ShareAlbumRequest+    , shareAlbumRequest+    , sarSharedAlbumOptions++    -- ** AlbumPosition+    , AlbumPosition+    , albumPosition+    , apRelativeMediaItemId+    , apRelativeEnrichmentItemId+    , apPosition++    -- ** ContentFilter+    , ContentFilter+    , contentFilter+    , cfIncludedContentCategories+    , cfExcludedContentCategories++    -- ** BatchCreateMediaItemsResponse+    , BatchCreateMediaItemsResponse+    , batchCreateMediaItemsResponse+    , bcmirNewMediaItemResults+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude+import           Network.Google.Resource.PhotosLibrary.Albums.AddEnrichment+import           Network.Google.Resource.PhotosLibrary.Albums.Create+import           Network.Google.Resource.PhotosLibrary.Albums.Get+import           Network.Google.Resource.PhotosLibrary.Albums.List+import           Network.Google.Resource.PhotosLibrary.Albums.Share+import           Network.Google.Resource.PhotosLibrary.MediaItems.BatchCreate+import           Network.Google.Resource.PhotosLibrary.MediaItems.Get+import           Network.Google.Resource.PhotosLibrary.MediaItems.Search+import           Network.Google.Resource.PhotosLibrary.SharedAlbums.Join+import           Network.Google.Resource.PhotosLibrary.SharedAlbums.List++{- $resources+TODO+-}++-- | Represents the entirety of the methods and resources available for the Photos Library API service.+type PhotosLibraryAPI =+     MediaItemsGetResource :<|>+       MediaItemsBatchCreateResource+       :<|> MediaItemsSearchResource+       :<|> AlbumsListResource+       :<|> AlbumsShareResource+       :<|> AlbumsAddEnrichmentResource+       :<|> AlbumsGetResource+       :<|> AlbumsCreateResource+       :<|> SharedAlbumsListResource+       :<|> SharedAlbumsJoinResource
+ gen/Network/Google/PhotosLibrary/Types.hs view
@@ -0,0 +1,328 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.PhotosLibrary.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.PhotosLibrary.Types+    (+    -- * Service Configuration+      photosLibraryService++    -- * OAuth Scopes+    , photosLibraryReadOnlyScope+    , photosLibraryScope+    , drivePhotosReadOnlyScope+    , photosLibrarySharingScope+    , photosLibraryAppendOnlyScope+    , photosLibraryReadOnlyAppcreatedDataScope++    -- * LatLng+    , LatLng+    , latLng+    , llLatitude+    , llLongitude++    -- * LocationEnrichment+    , LocationEnrichment+    , locationEnrichment+    , leLocation++    -- * DateFilter+    , DateFilter+    , dateFilter+    , dfDates+    , dfRanges++    -- * Photo+    , Photo+    , photo+    , pFocalLength+    , pCameraMake+    , pExposureTime+    , pCameraModel+    , pIsoEquivalent+    , pApertureFNumber++    -- * TextEnrichment+    , TextEnrichment+    , textEnrichment+    , teText++    -- * Status+    , Status+    , status+    , sDetails+    , sCode+    , sMessage++    -- * AddEnrichmentToAlbumResponse+    , AddEnrichmentToAlbumResponse+    , addEnrichmentToAlbumResponse+    , aetarEnrichmentItem++    -- * SearchMediaItemsResponse+    , SearchMediaItemsResponse+    , searchMediaItemsResponse+    , smirNextPageToken+    , smirMediaItems++    -- * JoinSharedAlbumResponse+    , JoinSharedAlbumResponse+    , joinSharedAlbumResponse++    -- * CreateAlbumRequest+    , CreateAlbumRequest+    , createAlbumRequest+    , carAlbum++    -- * Location+    , Location+    , location+    , lLatlng+    , lLocationName++    -- * VideoStatus+    , VideoStatus (..)++    -- * NewEnrichmentItem+    , NewEnrichmentItem+    , newEnrichmentItem+    , neiLocationEnrichment+    , neiTextEnrichment+    , neiMapEnrichment++    -- * ShareInfo+    , ShareInfo+    , shareInfo+    , siShareableURL+    , siShareToken+    , siSharedAlbumOptions++    -- * BatchCreateMediaItemsRequest+    , BatchCreateMediaItemsRequest+    , batchCreateMediaItemsRequest+    , bcmirAlbumId+    , bcmirNewMediaItems+    , bcmirAlbumPosition++    -- * Filters+    , Filters+    , filters+    , fDateFilter+    , fIncludeArchivedMedia+    , fMediaTypeFilter+    , fContentFilter++    -- * StatusDetailsItem+    , StatusDetailsItem+    , statusDetailsItem+    , sdiAddtional++    -- * DateRange+    , DateRange+    , dateRange+    , drEndDate+    , drStartDate++    -- * SharedAlbumOptions+    , SharedAlbumOptions+    , sharedAlbumOptions+    , saoIsCollaborative+    , saoIsCommentable++    -- * MediaMetadata+    , MediaMetadata+    , mediaMetadata+    , mmCreationTime+    , mmPhoto+    , mmHeight+    , mmWidth+    , mmVideo++    -- * ShareAlbumResponse+    , ShareAlbumResponse+    , shareAlbumResponse+    , sarShareInfo++    -- * Video+    , Video+    , video+    , vStatus+    , vCameraMake+    , vCameraModel+    , vFps++    -- * MediaItem+    , MediaItem+    , mediaItem+    , miProductURL+    , miBaseURL+    , miMediaMetadata+    , miMimeType+    , miId+    , miContributorInfo+    , miDescription++    -- * Date+    , Date+    , date+    , dDay+    , dYear+    , dMonth++    -- * EnrichmentItem+    , EnrichmentItem+    , enrichmentItem+    , eiId++    -- * ListSharedAlbumsResponse+    , ListSharedAlbumsResponse+    , listSharedAlbumsResponse+    , lsarNextPageToken+    , lsarSharedAlbums++    -- * MediaTypeFilter+    , MediaTypeFilter+    , mediaTypeFilter+    , mtfMediaTypes++    -- * NewMediaItemResult+    , NewMediaItemResult+    , newMediaItemResult+    , nmirStatus+    , nmirUploadToken+    , nmirMediaItem++    -- * Album+    , Album+    , album+    , aIsWriteable+    , aProductURL+    , aShareInfo+    , aCoverPhotoBaseURL+    , aId+    , aTotalMediaItems+    , aTitle++    -- * SimpleMediaItem+    , SimpleMediaItem+    , simpleMediaItem+    , smiUploadToken++    -- * AlbumPositionPosition+    , AlbumPositionPosition (..)++    -- * Xgafv+    , Xgafv (..)++    -- * ContributorInfo+    , ContributorInfo+    , contributorInfo+    , ciProFilePictureBaseURL+    , ciDisplayName++    -- * ListAlbumsResponse+    , ListAlbumsResponse+    , listAlbumsResponse+    , larNextPageToken+    , larAlbums++    -- * MapEnrichment+    , MapEnrichment+    , mapEnrichment+    , meDestination+    , meOrigin++    -- * SearchMediaItemsRequest+    , SearchMediaItemsRequest+    , searchMediaItemsRequest+    , smirAlbumId+    , smirFilters+    , smirPageToken+    , smirPageSize++    -- * NewMediaItem+    , NewMediaItem+    , newMediaItem+    , nmiSimpleMediaItem+    , nmiDescription++    -- * AddEnrichmentToAlbumRequest+    , AddEnrichmentToAlbumRequest+    , addEnrichmentToAlbumRequest+    , aetarNewEnrichmentItem+    , aetarAlbumPosition++    -- * JoinSharedAlbumRequest+    , JoinSharedAlbumRequest+    , joinSharedAlbumRequest+    , jsarShareToken++    -- * ShareAlbumRequest+    , ShareAlbumRequest+    , shareAlbumRequest+    , sarSharedAlbumOptions++    -- * AlbumPosition+    , AlbumPosition+    , albumPosition+    , apRelativeMediaItemId+    , apRelativeEnrichmentItemId+    , apPosition++    -- * ContentFilter+    , ContentFilter+    , contentFilter+    , cfIncludedContentCategories+    , cfExcludedContentCategories++    -- * BatchCreateMediaItemsResponse+    , BatchCreateMediaItemsResponse+    , batchCreateMediaItemsResponse+    , bcmirNewMediaItemResults+    ) where++import           Network.Google.PhotosLibrary.Types.Product+import           Network.Google.PhotosLibrary.Types.Sum+import           Network.Google.Prelude++-- | Default request referring to version 'v1' of the Photos Library API. This contains the host and root path used as a starting point for constructing service requests.+photosLibraryService :: ServiceConfig+photosLibraryService+  = defaultService (ServiceId "photoslibrary:v1")+      "photoslibrary.googleapis.com"++-- | View your Google Photos library+photosLibraryReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/photoslibrary.readonly"]+photosLibraryReadOnlyScope = Proxy;++-- | View and manage your Google Photos library+photosLibraryScope :: Proxy '["https://www.googleapis.com/auth/photoslibrary"]+photosLibraryScope = Proxy;++-- | View the photos, videos and albums in your Google Photos+drivePhotosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.photos.readonly"]+drivePhotosReadOnlyScope = Proxy;++-- | Manage and add to shared albums on your behalf+photosLibrarySharingScope :: Proxy '["https://www.googleapis.com/auth/photoslibrary.sharing"]+photosLibrarySharingScope = Proxy;++-- | Add to your Google Photos library+photosLibraryAppendOnlyScope :: Proxy '["https://www.googleapis.com/auth/photoslibrary.appendonly"]+photosLibraryAppendOnlyScope = Proxy;++-- | Manage photos added by this app+photosLibraryReadOnlyAppcreatedDataScope :: Proxy '["https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+photosLibraryReadOnlyAppcreatedDataScope = Proxy;
+ gen/Network/Google/PhotosLibrary/Types/Product.hs view
@@ -0,0 +1,2287 @@+{-# 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.PhotosLibrary.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.PhotosLibrary.Types.Product where++import           Network.Google.PhotosLibrary.Types.Sum+import           Network.Google.Prelude++-- | An object representing a latitude\/longitude pair. This is expressed as+-- a pair of doubles representing degrees latitude and degrees longitude.+-- Unless specified otherwise, this must conform to the+-- <http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf WGS84 standard>.+-- Values must be within normalized ranges.+--+-- /See:/ 'latLng' smart constructor.+data LatLng = LatLng'+    { _llLatitude  :: !(Maybe (Textual Double))+    , _llLongitude :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'LatLng' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'llLatitude'+--+-- * 'llLongitude'+latLng+    :: LatLng+latLng =+    LatLng'+    { _llLatitude = Nothing+    , _llLongitude = Nothing+    }++-- | The latitude in degrees. It must be in the range [-90.0, +90.0].+llLatitude :: Lens' LatLng (Maybe Double)+llLatitude+  = lens _llLatitude (\ s a -> s{_llLatitude = a}) .+      mapping _Coerce++-- | The longitude in degrees. It must be in the range [-180.0, +180.0].+llLongitude :: Lens' LatLng (Maybe Double)+llLongitude+  = lens _llLongitude (\ s a -> s{_llLongitude = a}) .+      mapping _Coerce++instance FromJSON LatLng where+        parseJSON+          = withObject "LatLng"+              (\ o ->+                 LatLng' <$>+                   (o .:? "latitude") <*> (o .:? "longitude"))++instance ToJSON LatLng where+        toJSON LatLng'{..}+          = object+              (catMaybes+                 [("latitude" .=) <$> _llLatitude,+                  ("longitude" .=) <$> _llLongitude])++-- | An enrichment containing a single location.+--+-- /See:/ 'locationEnrichment' smart constructor.+newtype LocationEnrichment = LocationEnrichment'+    { _leLocation :: Maybe Location+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'LocationEnrichment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'leLocation'+locationEnrichment+    :: LocationEnrichment+locationEnrichment =+    LocationEnrichment'+    { _leLocation = Nothing+    }++-- | Location for this enrichment item.+leLocation :: Lens' LocationEnrichment (Maybe Location)+leLocation+  = lens _leLocation (\ s a -> s{_leLocation = a})++instance FromJSON LocationEnrichment where+        parseJSON+          = withObject "LocationEnrichment"+              (\ o -> LocationEnrichment' <$> (o .:? "location"))++instance ToJSON LocationEnrichment where+        toJSON LocationEnrichment'{..}+          = object+              (catMaybes [("location" .=) <$> _leLocation])++-- | This filter defines the allowed dates or date ranges for the media+-- returned. It is possible to pick a set of specific dates and a set of+-- date ranges.+--+-- /See:/ 'dateFilter' smart constructor.+data DateFilter = DateFilter'+    { _dfDates  :: !(Maybe [Date])+    , _dfRanges :: !(Maybe [DateRange])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DateFilter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfDates'+--+-- * 'dfRanges'+dateFilter+    :: DateFilter+dateFilter =+    DateFilter'+    { _dfDates = Nothing+    , _dfRanges = Nothing+    }++-- | List of dates that the media items must have been created on. There is a+-- maximum of 5 dates that can be included per request.+dfDates :: Lens' DateFilter [Date]+dfDates+  = lens _dfDates (\ s a -> s{_dfDates = a}) . _Default+      . _Coerce++-- | List of dates ranges that the media items must have been created in.+-- There is a maximum of 5 dates ranges that can be included per request.+dfRanges :: Lens' DateFilter [DateRange]+dfRanges+  = lens _dfRanges (\ s a -> s{_dfRanges = a}) .+      _Default+      . _Coerce++instance FromJSON DateFilter where+        parseJSON+          = withObject "DateFilter"+              (\ o ->+                 DateFilter' <$>+                   (o .:? "dates" .!= mempty) <*>+                     (o .:? "ranges" .!= mempty))++instance ToJSON DateFilter where+        toJSON DateFilter'{..}+          = object+              (catMaybes+                 [("dates" .=) <$> _dfDates,+                  ("ranges" .=) <$> _dfRanges])++-- | Metadata that is specific to a photo, for example, ISO, focal length and+-- exposure time. Some of these fields may be null or not included.+--+-- /See:/ 'photo' smart constructor.+data Photo = Photo'+    { _pFocalLength     :: !(Maybe (Textual Double))+    , _pCameraMake      :: !(Maybe Text)+    , _pExposureTime    :: !(Maybe GDuration)+    , _pCameraModel     :: !(Maybe Text)+    , _pIsoEquivalent   :: !(Maybe (Textual Int32))+    , _pApertureFNumber :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Photo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pFocalLength'+--+-- * 'pCameraMake'+--+-- * 'pExposureTime'+--+-- * 'pCameraModel'+--+-- * 'pIsoEquivalent'+--+-- * 'pApertureFNumber'+photo+    :: Photo+photo =+    Photo'+    { _pFocalLength = Nothing+    , _pCameraMake = Nothing+    , _pExposureTime = Nothing+    , _pCameraModel = Nothing+    , _pIsoEquivalent = Nothing+    , _pApertureFNumber = Nothing+    }++-- | Focal length of the photo.+pFocalLength :: Lens' Photo (Maybe Double)+pFocalLength+  = lens _pFocalLength (\ s a -> s{_pFocalLength = a})+      . mapping _Coerce++-- | Brand of the camera which took the photo.+pCameraMake :: Lens' Photo (Maybe Text)+pCameraMake+  = lens _pCameraMake (\ s a -> s{_pCameraMake = a})++-- | Exposure time of the photo.+pExposureTime :: Lens' Photo (Maybe Scientific)+pExposureTime+  = lens _pExposureTime+      (\ s a -> s{_pExposureTime = a})+      . mapping _GDuration++-- | Model of the camera which took the photo.+pCameraModel :: Lens' Photo (Maybe Text)+pCameraModel+  = lens _pCameraModel (\ s a -> s{_pCameraModel = a})++-- | ISO of the photo.+pIsoEquivalent :: Lens' Photo (Maybe Int32)+pIsoEquivalent+  = lens _pIsoEquivalent+      (\ s a -> s{_pIsoEquivalent = a})+      . mapping _Coerce++-- | Apeture f number of the photo.+pApertureFNumber :: Lens' Photo (Maybe Double)+pApertureFNumber+  = lens _pApertureFNumber+      (\ s a -> s{_pApertureFNumber = a})+      . mapping _Coerce++instance FromJSON Photo where+        parseJSON+          = withObject "Photo"+              (\ o ->+                 Photo' <$>+                   (o .:? "focalLength") <*> (o .:? "cameraMake") <*>+                     (o .:? "exposureTime")+                     <*> (o .:? "cameraModel")+                     <*> (o .:? "isoEquivalent")+                     <*> (o .:? "apertureFNumber"))++instance ToJSON Photo where+        toJSON Photo'{..}+          = object+              (catMaybes+                 [("focalLength" .=) <$> _pFocalLength,+                  ("cameraMake" .=) <$> _pCameraMake,+                  ("exposureTime" .=) <$> _pExposureTime,+                  ("cameraModel" .=) <$> _pCameraModel,+                  ("isoEquivalent" .=) <$> _pIsoEquivalent,+                  ("apertureFNumber" .=) <$> _pApertureFNumber])++-- | An enrichment containing text.+--+-- /See:/ 'textEnrichment' smart constructor.+newtype TextEnrichment = TextEnrichment'+    { _teText :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TextEnrichment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'teText'+textEnrichment+    :: TextEnrichment+textEnrichment =+    TextEnrichment'+    { _teText = Nothing+    }++-- | Text for this text enrichment item.+teText :: Lens' TextEnrichment (Maybe Text)+teText = lens _teText (\ s a -> s{_teText = a})++instance FromJSON TextEnrichment where+        parseJSON+          = withObject "TextEnrichment"+              (\ o -> TextEnrichment' <$> (o .:? "text"))++instance ToJSON TextEnrichment where+        toJSON TextEnrichment'{..}+          = object (catMaybes [("text" .=) <$> _teText])++-- | The \`Status\` type defines a logical error model that is suitable for+-- different programming environments, including REST APIs and RPC APIs. It+-- is used by [gRPC](https:\/\/github.com\/grpc). The error model is+-- designed to be: - Simple to use and understand for most users - Flexible+-- enough to meet unexpected needs # Overview The \`Status\` message+-- contains three pieces of data: error code, error message, and error+-- details. The error code should be an enum value of google.rpc.Code, but+-- it may accept additional error codes if needed. The error message should+-- be a developer-facing English message that helps developers *understand*+-- and *resolve* the error. If a localized user-facing error message is+-- needed, put the localized message in the error details or localize it in+-- the client. The optional error details may contain arbitrary information+-- about the error. There is a predefined set of error detail types in the+-- package \`google.rpc\` that can be used for common error conditions. #+-- Language mapping The \`Status\` message is the logical representation of+-- the error model, but it is not necessarily the actual wire format. When+-- the \`Status\` message is exposed in different client libraries and+-- different wire protocols, it can be mapped differently. For example, it+-- will likely be mapped to some exceptions in Java, but more likely mapped+-- to some error codes in C. # Other uses The error model and the+-- \`Status\` message can be used in a variety of environments, either with+-- or without APIs, to provide a consistent developer experience across+-- different environments. Example uses of this error model include: -+-- Partial errors. If a service needs to return partial errors to the+-- client, it may embed the \`Status\` in the normal response to indicate+-- the partial errors. - Workflow errors. A typical workflow has multiple+-- steps. Each step may have a \`Status\` message for error reporting. -+-- Batch operations. If a client uses batch request and batch response, the+-- \`Status\` message should be used directly inside batch response, one+-- for each error sub-response. - Asynchronous operations. If an API call+-- embeds asynchronous operation results in its response, the status of+-- those operations should be represented directly using the \`Status\`+-- message. - Logging. If some API errors are stored in logs, the message+-- \`Status\` could be used directly after any stripping needed for+-- security\/privacy reasons.+--+-- /See:/ 'status' smart constructor.+data Status = Status'+    { _sDetails :: !(Maybe [StatusDetailsItem])+    , _sCode    :: !(Maybe (Textual Int32))+    , _sMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Status' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sDetails'+--+-- * 'sCode'+--+-- * 'sMessage'+status+    :: Status+status =+    Status'+    { _sDetails = Nothing+    , _sCode = Nothing+    , _sMessage = Nothing+    }++-- | A list of messages that carry the error details. There is a common set+-- of message types for APIs to use.+sDetails :: Lens' Status [StatusDetailsItem]+sDetails+  = lens _sDetails (\ s a -> s{_sDetails = a}) .+      _Default+      . _Coerce++-- | The status code, which should be an enum value of google.rpc.Code.+sCode :: Lens' Status (Maybe Int32)+sCode+  = lens _sCode (\ s a -> s{_sCode = a}) .+      mapping _Coerce++-- | A developer-facing error message, which should be in English. Any+-- user-facing error message should be localized and sent in the+-- google.rpc.Status.details field, or localized by the client.+sMessage :: Lens' Status (Maybe Text)+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})++instance FromJSON Status where+        parseJSON+          = withObject "Status"+              (\ o ->+                 Status' <$>+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON Status where+        toJSON Status'{..}+          = object+              (catMaybes+                 [("details" .=) <$> _sDetails,+                  ("code" .=) <$> _sCode,+                  ("message" .=) <$> _sMessage])++--+-- /See:/ 'addEnrichmentToAlbumResponse' smart constructor.+newtype AddEnrichmentToAlbumResponse = AddEnrichmentToAlbumResponse'+    { _aetarEnrichmentItem :: Maybe EnrichmentItem+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddEnrichmentToAlbumResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aetarEnrichmentItem'+addEnrichmentToAlbumResponse+    :: AddEnrichmentToAlbumResponse+addEnrichmentToAlbumResponse =+    AddEnrichmentToAlbumResponse'+    { _aetarEnrichmentItem = Nothing+    }++-- | [Output only] Enrichment which was added.+aetarEnrichmentItem :: Lens' AddEnrichmentToAlbumResponse (Maybe EnrichmentItem)+aetarEnrichmentItem+  = lens _aetarEnrichmentItem+      (\ s a -> s{_aetarEnrichmentItem = a})++instance FromJSON AddEnrichmentToAlbumResponse where+        parseJSON+          = withObject "AddEnrichmentToAlbumResponse"+              (\ o ->+                 AddEnrichmentToAlbumResponse' <$>+                   (o .:? "enrichmentItem"))++instance ToJSON AddEnrichmentToAlbumResponse where+        toJSON AddEnrichmentToAlbumResponse'{..}+          = object+              (catMaybes+                 [("enrichmentItem" .=) <$> _aetarEnrichmentItem])++--+-- /See:/ 'searchMediaItemsResponse' smart constructor.+data SearchMediaItemsResponse = SearchMediaItemsResponse'+    { _smirNextPageToken :: !(Maybe Text)+    , _smirMediaItems    :: !(Maybe [MediaItem])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchMediaItemsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smirNextPageToken'+--+-- * 'smirMediaItems'+searchMediaItemsResponse+    :: SearchMediaItemsResponse+searchMediaItemsResponse =+    SearchMediaItemsResponse'+    { _smirNextPageToken = Nothing+    , _smirMediaItems = Nothing+    }++-- | [Output only] Token to use to get the next set of media items. Its+-- presence is the only reliable indicator of more media items being+-- available in the next request.+smirNextPageToken :: Lens' SearchMediaItemsResponse (Maybe Text)+smirNextPageToken+  = lens _smirNextPageToken+      (\ s a -> s{_smirNextPageToken = a})++-- | [Output only] List of media items that match the search parameters.+smirMediaItems :: Lens' SearchMediaItemsResponse [MediaItem]+smirMediaItems+  = lens _smirMediaItems+      (\ s a -> s{_smirMediaItems = a})+      . _Default+      . _Coerce++instance FromJSON SearchMediaItemsResponse where+        parseJSON+          = withObject "SearchMediaItemsResponse"+              (\ o ->+                 SearchMediaItemsResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "mediaItems" .!= mempty))++instance ToJSON SearchMediaItemsResponse where+        toJSON SearchMediaItemsResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _smirNextPageToken,+                  ("mediaItems" .=) <$> _smirMediaItems])++-- | Response to successfully joining the shared album on behalf of the user.+--+-- /See:/ 'joinSharedAlbumResponse' smart constructor.+data JoinSharedAlbumResponse =+    JoinSharedAlbumResponse'+    deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JoinSharedAlbumResponse' with the minimum fields required to make a request.+--+joinSharedAlbumResponse+    :: JoinSharedAlbumResponse+joinSharedAlbumResponse = JoinSharedAlbumResponse'++instance FromJSON JoinSharedAlbumResponse where+        parseJSON+          = withObject "JoinSharedAlbumResponse"+              (\ o -> pure JoinSharedAlbumResponse')++instance ToJSON JoinSharedAlbumResponse where+        toJSON = const emptyObject++-- | Request to create an album in Google Photos.+--+-- /See:/ 'createAlbumRequest' smart constructor.+newtype CreateAlbumRequest = CreateAlbumRequest'+    { _carAlbum :: Maybe Album+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CreateAlbumRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'carAlbum'+createAlbumRequest+    :: CreateAlbumRequest+createAlbumRequest =+    CreateAlbumRequest'+    { _carAlbum = Nothing+    }++-- | The album to be created.+carAlbum :: Lens' CreateAlbumRequest (Maybe Album)+carAlbum = lens _carAlbum (\ s a -> s{_carAlbum = a})++instance FromJSON CreateAlbumRequest where+        parseJSON+          = withObject "CreateAlbumRequest"+              (\ o -> CreateAlbumRequest' <$> (o .:? "album"))++instance ToJSON CreateAlbumRequest where+        toJSON CreateAlbumRequest'{..}+          = object (catMaybes [("album" .=) <$> _carAlbum])++-- | Represents a physical location.+--+-- /See:/ 'location' smart constructor.+data Location = Location'+    { _lLatlng       :: !(Maybe LatLng)+    , _lLocationName :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Location' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lLatlng'+--+-- * 'lLocationName'+location+    :: Location+location =+    Location'+    { _lLatlng = Nothing+    , _lLocationName = Nothing+    }++-- | Position of the location on the map.+lLatlng :: Lens' Location (Maybe LatLng)+lLatlng = lens _lLatlng (\ s a -> s{_lLatlng = a})++-- | Name of the location to be displayed.+lLocationName :: Lens' Location (Maybe Text)+lLocationName+  = lens _lLocationName+      (\ s a -> s{_lLocationName = a})++instance FromJSON Location where+        parseJSON+          = withObject "Location"+              (\ o ->+                 Location' <$>+                   (o .:? "latlng") <*> (o .:? "locationName"))++instance ToJSON Location where+        toJSON Location'{..}+          = object+              (catMaybes+                 [("latlng" .=) <$> _lLatlng,+                  ("locationName" .=) <$> _lLocationName])++-- | A new enrichment item to be added to an album, used by the+-- AddEnrichmentToAlbum call.+--+-- /See:/ 'newEnrichmentItem' smart constructor.+data NewEnrichmentItem = NewEnrichmentItem'+    { _neiLocationEnrichment :: !(Maybe LocationEnrichment)+    , _neiTextEnrichment     :: !(Maybe TextEnrichment)+    , _neiMapEnrichment      :: !(Maybe MapEnrichment)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NewEnrichmentItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'neiLocationEnrichment'+--+-- * 'neiTextEnrichment'+--+-- * 'neiMapEnrichment'+newEnrichmentItem+    :: NewEnrichmentItem+newEnrichmentItem =+    NewEnrichmentItem'+    { _neiLocationEnrichment = Nothing+    , _neiTextEnrichment = Nothing+    , _neiMapEnrichment = Nothing+    }++-- | Location to be added to the album.+neiLocationEnrichment :: Lens' NewEnrichmentItem (Maybe LocationEnrichment)+neiLocationEnrichment+  = lens _neiLocationEnrichment+      (\ s a -> s{_neiLocationEnrichment = a})++-- | Text to be added to the album.+neiTextEnrichment :: Lens' NewEnrichmentItem (Maybe TextEnrichment)+neiTextEnrichment+  = lens _neiTextEnrichment+      (\ s a -> s{_neiTextEnrichment = a})++-- | Map to be added to the album.+neiMapEnrichment :: Lens' NewEnrichmentItem (Maybe MapEnrichment)+neiMapEnrichment+  = lens _neiMapEnrichment+      (\ s a -> s{_neiMapEnrichment = a})++instance FromJSON NewEnrichmentItem where+        parseJSON+          = withObject "NewEnrichmentItem"+              (\ o ->+                 NewEnrichmentItem' <$>+                   (o .:? "locationEnrichment") <*>+                     (o .:? "textEnrichment")+                     <*> (o .:? "mapEnrichment"))++instance ToJSON NewEnrichmentItem where+        toJSON NewEnrichmentItem'{..}+          = object+              (catMaybes+                 [("locationEnrichment" .=) <$>+                    _neiLocationEnrichment,+                  ("textEnrichment" .=) <$> _neiTextEnrichment,+                  ("mapEnrichment" .=) <$> _neiMapEnrichment])++-- | Information about albums that are shared. Note that this information is+-- only included if the album was created by you and you have the sharing+-- scope.+--+-- /See:/ 'shareInfo' smart constructor.+data ShareInfo = ShareInfo'+    { _siShareableURL       :: !(Maybe Text)+    , _siShareToken         :: !(Maybe Text)+    , _siSharedAlbumOptions :: !(Maybe SharedAlbumOptions)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ShareInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'siShareableURL'+--+-- * 'siShareToken'+--+-- * 'siSharedAlbumOptions'+shareInfo+    :: ShareInfo+shareInfo =+    ShareInfo'+    { _siShareableURL = Nothing+    , _siShareToken = Nothing+    , _siSharedAlbumOptions = Nothing+    }++-- | A link to the album that\'s now shared on the Google Photos website and+-- app. Anyone with the link can access this shared album and see all of+-- the items present in the album.+siShareableURL :: Lens' ShareInfo (Maybe Text)+siShareableURL+  = lens _siShareableURL+      (\ s a -> s{_siShareableURL = a})++-- | A token which can be used to join this shared album on behalf of other+-- users via the API.+siShareToken :: Lens' ShareInfo (Maybe Text)+siShareToken+  = lens _siShareToken (\ s a -> s{_siShareToken = a})++-- | Options set for the shared album.+siSharedAlbumOptions :: Lens' ShareInfo (Maybe SharedAlbumOptions)+siSharedAlbumOptions+  = lens _siSharedAlbumOptions+      (\ s a -> s{_siSharedAlbumOptions = a})++instance FromJSON ShareInfo where+        parseJSON+          = withObject "ShareInfo"+              (\ o ->+                 ShareInfo' <$>+                   (o .:? "shareableUrl") <*> (o .:? "shareToken") <*>+                     (o .:? "sharedAlbumOptions"))++instance ToJSON ShareInfo where+        toJSON ShareInfo'{..}+          = object+              (catMaybes+                 [("shareableUrl" .=) <$> _siShareableURL,+                  ("shareToken" .=) <$> _siShareToken,+                  ("sharedAlbumOptions" .=) <$> _siSharedAlbumOptions])++-- | Request to create one or more media items in a user\'s Google Photos+-- library. If an 'albumid' is specified, the media items are also added to+-- that album. 'albumPosition' is optional and can only be specified if an+-- 'albumId' is set.+--+-- /See:/ 'batchCreateMediaItemsRequest' smart constructor.+data BatchCreateMediaItemsRequest = BatchCreateMediaItemsRequest'+    { _bcmirAlbumId       :: !(Maybe Text)+    , _bcmirNewMediaItems :: !(Maybe [NewMediaItem])+    , _bcmirAlbumPosition :: !(Maybe AlbumPosition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchCreateMediaItemsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcmirAlbumId'+--+-- * 'bcmirNewMediaItems'+--+-- * 'bcmirAlbumPosition'+batchCreateMediaItemsRequest+    :: BatchCreateMediaItemsRequest+batchCreateMediaItemsRequest =+    BatchCreateMediaItemsRequest'+    { _bcmirAlbumId = Nothing+    , _bcmirNewMediaItems = Nothing+    , _bcmirAlbumPosition = Nothing+    }++-- | Identifier of the album where the media item(s) will be added. They will+-- also be added to the user\'s library. This is an optional field.+bcmirAlbumId :: Lens' BatchCreateMediaItemsRequest (Maybe Text)+bcmirAlbumId+  = lens _bcmirAlbumId (\ s a -> s{_bcmirAlbumId = a})++-- | List of media items to be created.+bcmirNewMediaItems :: Lens' BatchCreateMediaItemsRequest [NewMediaItem]+bcmirNewMediaItems+  = lens _bcmirNewMediaItems+      (\ s a -> s{_bcmirNewMediaItems = a})+      . _Default+      . _Coerce++-- | Position in the album where the media item(s) will be added. If not+-- specified, the media item(s) will be added to the end of the album (as+-- per the default value which is LAST_IN_ALBUM). The request will fail if+-- this field is present but no album_id is specified.+bcmirAlbumPosition :: Lens' BatchCreateMediaItemsRequest (Maybe AlbumPosition)+bcmirAlbumPosition+  = lens _bcmirAlbumPosition+      (\ s a -> s{_bcmirAlbumPosition = a})++instance FromJSON BatchCreateMediaItemsRequest where+        parseJSON+          = withObject "BatchCreateMediaItemsRequest"+              (\ o ->+                 BatchCreateMediaItemsRequest' <$>+                   (o .:? "albumId") <*>+                     (o .:? "newMediaItems" .!= mempty)+                     <*> (o .:? "albumPosition"))++instance ToJSON BatchCreateMediaItemsRequest where+        toJSON BatchCreateMediaItemsRequest'{..}+          = object+              (catMaybes+                 [("albumId" .=) <$> _bcmirAlbumId,+                  ("newMediaItems" .=) <$> _bcmirNewMediaItems,+                  ("albumPosition" .=) <$> _bcmirAlbumPosition])++-- | Filters that can be applied to a media item search. If multiple filter+-- options are specified, they are treated as AND with each other.+--+-- /See:/ 'filters' smart constructor.+data Filters = Filters'+    { _fDateFilter           :: !(Maybe DateFilter)+    , _fIncludeArchivedMedia :: !(Maybe Bool)+    , _fMediaTypeFilter      :: !(Maybe MediaTypeFilter)+    , _fContentFilter        :: !(Maybe ContentFilter)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Filters' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fDateFilter'+--+-- * 'fIncludeArchivedMedia'+--+-- * 'fMediaTypeFilter'+--+-- * 'fContentFilter'+filters+    :: Filters+filters =+    Filters'+    { _fDateFilter = Nothing+    , _fIncludeArchivedMedia = Nothing+    , _fMediaTypeFilter = Nothing+    , _fContentFilter = Nothing+    }++-- | Filters the media items based on their creation date.+fDateFilter :: Lens' Filters (Maybe DateFilter)+fDateFilter+  = lens _fDateFilter (\ s a -> s{_fDateFilter = a})++-- | If set, the results will include media items that the user has archived.+-- Defaults to false (archived media items are not included).+fIncludeArchivedMedia :: Lens' Filters (Maybe Bool)+fIncludeArchivedMedia+  = lens _fIncludeArchivedMedia+      (\ s a -> s{_fIncludeArchivedMedia = a})++-- | Filters the media items based on the type of media.+fMediaTypeFilter :: Lens' Filters (Maybe MediaTypeFilter)+fMediaTypeFilter+  = lens _fMediaTypeFilter+      (\ s a -> s{_fMediaTypeFilter = a})++-- | Filters the media items based on their content.+fContentFilter :: Lens' Filters (Maybe ContentFilter)+fContentFilter+  = lens _fContentFilter+      (\ s a -> s{_fContentFilter = a})++instance FromJSON Filters where+        parseJSON+          = withObject "Filters"+              (\ o ->+                 Filters' <$>+                   (o .:? "dateFilter") <*>+                     (o .:? "includeArchivedMedia")+                     <*> (o .:? "mediaTypeFilter")+                     <*> (o .:? "contentFilter"))++instance ToJSON Filters where+        toJSON Filters'{..}+          = object+              (catMaybes+                 [("dateFilter" .=) <$> _fDateFilter,+                  ("includeArchivedMedia" .=) <$>+                    _fIncludeArchivedMedia,+                  ("mediaTypeFilter" .=) <$> _fMediaTypeFilter,+                  ("contentFilter" .=) <$> _fContentFilter])++--+-- /See:/ 'statusDetailsItem' smart constructor.+newtype StatusDetailsItem = StatusDetailsItem'+    { _sdiAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sdiAddtional'+statusDetailsItem+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'+    -> StatusDetailsItem+statusDetailsItem pSdiAddtional_ =+    StatusDetailsItem'+    { _sdiAddtional = _Coerce # pSdiAddtional_+    }++-- | Properties of the object. Contains field \'type with type URL.+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)+sdiAddtional+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})+      . _Coerce++instance FromJSON StatusDetailsItem where+        parseJSON+          = withObject "StatusDetailsItem"+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))++instance ToJSON StatusDetailsItem where+        toJSON = toJSON . _sdiAddtional++-- | Defines a range of dates. Both dates must be of the same format (see+-- Date definition for more).+--+-- /See:/ 'dateRange' smart constructor.+data DateRange = DateRange'+    { _drEndDate   :: !(Maybe Date)+    , _drStartDate :: !(Maybe Date)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DateRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drEndDate'+--+-- * 'drStartDate'+dateRange+    :: DateRange+dateRange =+    DateRange'+    { _drEndDate = Nothing+    , _drStartDate = Nothing+    }++-- | The end date (included as part of the range) in the same format as the+-- start date.+drEndDate :: Lens' DateRange (Maybe Date)+drEndDate+  = lens _drEndDate (\ s a -> s{_drEndDate = a})++-- | The start date (included as part of the range) in one of the formats+-- described.+drStartDate :: Lens' DateRange (Maybe Date)+drStartDate+  = lens _drStartDate (\ s a -> s{_drStartDate = a})++instance FromJSON DateRange where+        parseJSON+          = withObject "DateRange"+              (\ o ->+                 DateRange' <$>+                   (o .:? "endDate") <*> (o .:? "startDate"))++instance ToJSON DateRange where+        toJSON DateRange'{..}+          = object+              (catMaybes+                 [("endDate" .=) <$> _drEndDate,+                  ("startDate" .=) <$> _drStartDate])++-- | Options that control the sharing of an album.+--+-- /See:/ 'sharedAlbumOptions' smart constructor.+data SharedAlbumOptions = SharedAlbumOptions'+    { _saoIsCollaborative :: !(Maybe Bool)+    , _saoIsCommentable   :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SharedAlbumOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'saoIsCollaborative'+--+-- * 'saoIsCommentable'+sharedAlbumOptions+    :: SharedAlbumOptions+sharedAlbumOptions =+    SharedAlbumOptions'+    { _saoIsCollaborative = Nothing+    , _saoIsCommentable = Nothing+    }++-- | True if the shared album allows collaborators (users who have joined the+-- album) to add media items to it. Defaults to false.+saoIsCollaborative :: Lens' SharedAlbumOptions (Maybe Bool)+saoIsCollaborative+  = lens _saoIsCollaborative+      (\ s a -> s{_saoIsCollaborative = a})++-- | True if the shared album allows the owner and the collaborators (users+-- who have joined the album) to add comments to the album. Defaults to+-- false.+saoIsCommentable :: Lens' SharedAlbumOptions (Maybe Bool)+saoIsCommentable+  = lens _saoIsCommentable+      (\ s a -> s{_saoIsCommentable = a})++instance FromJSON SharedAlbumOptions where+        parseJSON+          = withObject "SharedAlbumOptions"+              (\ o ->+                 SharedAlbumOptions' <$>+                   (o .:? "isCollaborative") <*>+                     (o .:? "isCommentable"))++instance ToJSON SharedAlbumOptions where+        toJSON SharedAlbumOptions'{..}+          = object+              (catMaybes+                 [("isCollaborative" .=) <$> _saoIsCollaborative,+                  ("isCommentable" .=) <$> _saoIsCommentable])++-- | Metadata for a media item.+--+-- /See:/ 'mediaMetadata' smart constructor.+data MediaMetadata = MediaMetadata'+    { _mmCreationTime :: !(Maybe DateTime')+    , _mmPhoto        :: !(Maybe Photo)+    , _mmHeight       :: !(Maybe (Textual Int64))+    , _mmWidth        :: !(Maybe (Textual Int64))+    , _mmVideo        :: !(Maybe Video)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mmCreationTime'+--+-- * 'mmPhoto'+--+-- * 'mmHeight'+--+-- * 'mmWidth'+--+-- * 'mmVideo'+mediaMetadata+    :: MediaMetadata+mediaMetadata =+    MediaMetadata'+    { _mmCreationTime = Nothing+    , _mmPhoto = Nothing+    , _mmHeight = Nothing+    , _mmWidth = Nothing+    , _mmVideo = Nothing+    }++-- | Time when the media item was first created (not when it was uploaded to+-- Google Photos).+mmCreationTime :: Lens' MediaMetadata (Maybe UTCTime)+mmCreationTime+  = lens _mmCreationTime+      (\ s a -> s{_mmCreationTime = a})+      . mapping _DateTime++-- | Metadata for a photo media type.+mmPhoto :: Lens' MediaMetadata (Maybe Photo)+mmPhoto = lens _mmPhoto (\ s a -> s{_mmPhoto = a})++-- | Original height (in pixels) of the media item.+mmHeight :: Lens' MediaMetadata (Maybe Int64)+mmHeight+  = lens _mmHeight (\ s a -> s{_mmHeight = a}) .+      mapping _Coerce++-- | Original width (in pixels) of the media item.+mmWidth :: Lens' MediaMetadata (Maybe Int64)+mmWidth+  = lens _mmWidth (\ s a -> s{_mmWidth = a}) .+      mapping _Coerce++-- | Metadata for a video media type.+mmVideo :: Lens' MediaMetadata (Maybe Video)+mmVideo = lens _mmVideo (\ s a -> s{_mmVideo = a})++instance FromJSON MediaMetadata where+        parseJSON+          = withObject "MediaMetadata"+              (\ o ->+                 MediaMetadata' <$>+                   (o .:? "creationTime") <*> (o .:? "photo") <*>+                     (o .:? "height")+                     <*> (o .:? "width")+                     <*> (o .:? "video"))++instance ToJSON MediaMetadata where+        toJSON MediaMetadata'{..}+          = object+              (catMaybes+                 [("creationTime" .=) <$> _mmCreationTime,+                  ("photo" .=) <$> _mmPhoto,+                  ("height" .=) <$> _mmHeight,+                  ("width" .=) <$> _mmWidth,+                  ("video" .=) <$> _mmVideo])++--+-- /See:/ 'shareAlbumResponse' smart constructor.+newtype ShareAlbumResponse = ShareAlbumResponse'+    { _sarShareInfo :: Maybe ShareInfo+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ShareAlbumResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sarShareInfo'+shareAlbumResponse+    :: ShareAlbumResponse+shareAlbumResponse =+    ShareAlbumResponse'+    { _sarShareInfo = Nothing+    }++-- | [Output only] Information about the shared album.+sarShareInfo :: Lens' ShareAlbumResponse (Maybe ShareInfo)+sarShareInfo+  = lens _sarShareInfo (\ s a -> s{_sarShareInfo = a})++instance FromJSON ShareAlbumResponse where+        parseJSON+          = withObject "ShareAlbumResponse"+              (\ o -> ShareAlbumResponse' <$> (o .:? "shareInfo"))++instance ToJSON ShareAlbumResponse where+        toJSON ShareAlbumResponse'{..}+          = object+              (catMaybes [("shareInfo" .=) <$> _sarShareInfo])++-- | Metadata that is specific to a video, for example, fps and processing+-- status. Some of these fields may be null or not included.+--+-- /See:/ 'video' smart constructor.+data Video = Video'+    { _vStatus      :: !(Maybe VideoStatus)+    , _vCameraMake  :: !(Maybe Text)+    , _vCameraModel :: !(Maybe Text)+    , _vFps         :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Video' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vStatus'+--+-- * 'vCameraMake'+--+-- * 'vCameraModel'+--+-- * 'vFps'+video+    :: Video+video =+    Video'+    { _vStatus = Nothing+    , _vCameraMake = Nothing+    , _vCameraModel = Nothing+    , _vFps = Nothing+    }++-- | Processing status of the video.+vStatus :: Lens' Video (Maybe VideoStatus)+vStatus = lens _vStatus (\ s a -> s{_vStatus = a})++-- | Brand of the camera which took the video.+vCameraMake :: Lens' Video (Maybe Text)+vCameraMake+  = lens _vCameraMake (\ s a -> s{_vCameraMake = a})++-- | Model of the camera which took the video.+vCameraModel :: Lens' Video (Maybe Text)+vCameraModel+  = lens _vCameraModel (\ s a -> s{_vCameraModel = a})++-- | Frame rate of the video.+vFps :: Lens' Video (Maybe Double)+vFps+  = lens _vFps (\ s a -> s{_vFps = a}) .+      mapping _Coerce++instance FromJSON Video where+        parseJSON+          = withObject "Video"+              (\ o ->+                 Video' <$>+                   (o .:? "status") <*> (o .:? "cameraMake") <*>+                     (o .:? "cameraModel")+                     <*> (o .:? "fps"))++instance ToJSON Video where+        toJSON Video'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _vStatus,+                  ("cameraMake" .=) <$> _vCameraMake,+                  ("cameraModel" .=) <$> _vCameraModel,+                  ("fps" .=) <$> _vFps])++-- | Representation of a media item (e.g. photo, video etc.) in Google+-- Photos.+--+-- /See:/ 'mediaItem' smart constructor.+data MediaItem = MediaItem'+    { _miProductURL      :: !(Maybe Text)+    , _miBaseURL         :: !(Maybe Text)+    , _miMediaMetadata   :: !(Maybe MediaMetadata)+    , _miMimeType        :: !(Maybe Text)+    , _miId              :: !(Maybe Text)+    , _miContributorInfo :: !(Maybe ContributorInfo)+    , _miDescription     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'miProductURL'+--+-- * 'miBaseURL'+--+-- * 'miMediaMetadata'+--+-- * 'miMimeType'+--+-- * 'miId'+--+-- * 'miContributorInfo'+--+-- * 'miDescription'+mediaItem+    :: MediaItem+mediaItem =+    MediaItem'+    { _miProductURL = Nothing+    , _miBaseURL = Nothing+    , _miMediaMetadata = Nothing+    , _miMimeType = Nothing+    , _miId = Nothing+    , _miContributorInfo = Nothing+    , _miDescription = Nothing+    }++-- | Google Photos URL for the media item. This link will only be available+-- to the user if they\'re signed in.+miProductURL :: Lens' MediaItem (Maybe Text)+miProductURL+  = lens _miProductURL (\ s a -> s{_miProductURL = a})++-- | A URL to the media item\'s bytes. This should not be used as is. For+-- example, \'=w2048-h1024\' will set the dimensions of a media item of+-- type photo to have a width of 2048 px and height of 1024 px.+miBaseURL :: Lens' MediaItem (Maybe Text)+miBaseURL+  = lens _miBaseURL (\ s a -> s{_miBaseURL = a})++-- | Metadata related to the media item, for example the height, width or+-- creation time.+miMediaMetadata :: Lens' MediaItem (Maybe MediaMetadata)+miMediaMetadata+  = lens _miMediaMetadata+      (\ s a -> s{_miMediaMetadata = a})++-- | MIME type of the media item.+miMimeType :: Lens' MediaItem (Maybe Text)+miMimeType+  = lens _miMimeType (\ s a -> s{_miMimeType = a})++-- | Identifier for the media item. This is a persistent identifier that can+-- be used between sessions to identify this media item.+miId :: Lens' MediaItem (Maybe Text)+miId = lens _miId (\ s a -> s{_miId = a})++-- | Information about the user who created this media item.+miContributorInfo :: Lens' MediaItem (Maybe ContributorInfo)+miContributorInfo+  = lens _miContributorInfo+      (\ s a -> s{_miContributorInfo = a})++-- | Description of the media item. This is shown to the user in the item\'s+-- info section in the Google Photos app.+miDescription :: Lens' MediaItem (Maybe Text)+miDescription+  = lens _miDescription+      (\ s a -> s{_miDescription = a})++instance FromJSON MediaItem where+        parseJSON+          = withObject "MediaItem"+              (\ o ->+                 MediaItem' <$>+                   (o .:? "productUrl") <*> (o .:? "baseUrl") <*>+                     (o .:? "mediaMetadata")+                     <*> (o .:? "mimeType")+                     <*> (o .:? "id")+                     <*> (o .:? "contributorInfo")+                     <*> (o .:? "description"))++instance ToJSON MediaItem where+        toJSON MediaItem'{..}+          = object+              (catMaybes+                 [("productUrl" .=) <$> _miProductURL,+                  ("baseUrl" .=) <$> _miBaseURL,+                  ("mediaMetadata" .=) <$> _miMediaMetadata,+                  ("mimeType" .=) <$> _miMimeType, ("id" .=) <$> _miId,+                  ("contributorInfo" .=) <$> _miContributorInfo,+                  ("description" .=) <$> _miDescription])++-- | Represents a whole calendar date. The day may be 0 to represent a year+-- and month where the day is not significant, e.g. a whole calendar month.+-- The month may be 0 to represent a a day and a year where the month is+-- not signficant, e.g. when you want to specify the same day in every+-- month of a year or a specific year. The year may be 0 to represent a+-- month and day independent of year, e.g. anniversary date.+--+-- /See:/ 'date' smart constructor.+data Date = Date'+    { _dDay   :: !(Maybe (Textual Int32))+    , _dYear  :: !(Maybe (Textual Int32))+    , _dMonth :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Date' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dDay'+--+-- * 'dYear'+--+-- * 'dMonth'+date+    :: Date+date =+    Date'+    { _dDay = Nothing+    , _dYear = Nothing+    , _dMonth = Nothing+    }++-- | Day of month. Must be from 1 to 31 and valid for the year and month, or+-- 0 if specifying a year\/month where the day is not significant.+dDay :: Lens' Date (Maybe Int32)+dDay+  = lens _dDay (\ s a -> s{_dDay = a}) .+      mapping _Coerce++-- | Year of date. Must be from 1 to 9999, or 0 if specifying a date without+-- a year.+dYear :: Lens' Date (Maybe Int32)+dYear+  = lens _dYear (\ s a -> s{_dYear = a}) .+      mapping _Coerce++-- | Month of year. Must be from 1 to 12, or 0 if specifying a date without a+-- month.+dMonth :: Lens' Date (Maybe Int32)+dMonth+  = lens _dMonth (\ s a -> s{_dMonth = a}) .+      mapping _Coerce++instance FromJSON Date where+        parseJSON+          = withObject "Date"+              (\ o ->+                 Date' <$>+                   (o .:? "day") <*> (o .:? "year") <*> (o .:? "month"))++instance ToJSON Date where+        toJSON Date'{..}+          = object+              (catMaybes+                 [("day" .=) <$> _dDay, ("year" .=) <$> _dYear,+                  ("month" .=) <$> _dMonth])++-- | An enrichment item.+--+-- /See:/ 'enrichmentItem' smart constructor.+newtype EnrichmentItem = EnrichmentItem'+    { _eiId :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EnrichmentItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eiId'+enrichmentItem+    :: EnrichmentItem+enrichmentItem =+    EnrichmentItem'+    { _eiId = Nothing+    }++-- | Identifier of the enrichment item.+eiId :: Lens' EnrichmentItem (Maybe Text)+eiId = lens _eiId (\ s a -> s{_eiId = a})++instance FromJSON EnrichmentItem where+        parseJSON+          = withObject "EnrichmentItem"+              (\ o -> EnrichmentItem' <$> (o .:? "id"))++instance ToJSON EnrichmentItem where+        toJSON EnrichmentItem'{..}+          = object (catMaybes [("id" .=) <$> _eiId])++--+-- /See:/ 'listSharedAlbumsResponse' smart constructor.+data ListSharedAlbumsResponse = ListSharedAlbumsResponse'+    { _lsarNextPageToken :: !(Maybe Text)+    , _lsarSharedAlbums  :: !(Maybe [Album])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListSharedAlbumsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsarNextPageToken'+--+-- * 'lsarSharedAlbums'+listSharedAlbumsResponse+    :: ListSharedAlbumsResponse+listSharedAlbumsResponse =+    ListSharedAlbumsResponse'+    { _lsarNextPageToken = Nothing+    , _lsarSharedAlbums = Nothing+    }++-- | [Output only] Token to use to get the next set of shared albums.+-- Populated if there are more shared albums to retrieve for this request.+lsarNextPageToken :: Lens' ListSharedAlbumsResponse (Maybe Text)+lsarNextPageToken+  = lens _lsarNextPageToken+      (\ s a -> s{_lsarNextPageToken = a})++-- | [Output only] List of shared albums that were requested.+lsarSharedAlbums :: Lens' ListSharedAlbumsResponse [Album]+lsarSharedAlbums+  = lens _lsarSharedAlbums+      (\ s a -> s{_lsarSharedAlbums = a})+      . _Default+      . _Coerce++instance FromJSON ListSharedAlbumsResponse where+        parseJSON+          = withObject "ListSharedAlbumsResponse"+              (\ o ->+                 ListSharedAlbumsResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "sharedAlbums" .!= mempty))++instance ToJSON ListSharedAlbumsResponse where+        toJSON ListSharedAlbumsResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _lsarNextPageToken,+                  ("sharedAlbums" .=) <$> _lsarSharedAlbums])++-- | This filter defines the type of media items to be returned, for example+-- videos or photos. All the specified media types are treated as an OR+-- with each other.+--+-- /See:/ 'mediaTypeFilter' smart constructor.+newtype MediaTypeFilter = MediaTypeFilter'+    { _mtfMediaTypes :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaTypeFilter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtfMediaTypes'+mediaTypeFilter+    :: MediaTypeFilter+mediaTypeFilter =+    MediaTypeFilter'+    { _mtfMediaTypes = Nothing+    }++-- | The types of media items to be included. This field should only be+-- populated with one media type, multiple media types will result in an+-- error response.+mtfMediaTypes :: Lens' MediaTypeFilter [Text]+mtfMediaTypes+  = lens _mtfMediaTypes+      (\ s a -> s{_mtfMediaTypes = a})+      . _Default+      . _Coerce++instance FromJSON MediaTypeFilter where+        parseJSON+          = withObject "MediaTypeFilter"+              (\ o ->+                 MediaTypeFilter' <$> (o .:? "mediaTypes" .!= mempty))++instance ToJSON MediaTypeFilter where+        toJSON MediaTypeFilter'{..}+          = object+              (catMaybes [("mediaTypes" .=) <$> _mtfMediaTypes])++-- | Result of creating a new media item.+--+-- /See:/ 'newMediaItemResult' smart constructor.+data NewMediaItemResult = NewMediaItemResult'+    { _nmirStatus      :: !(Maybe Status)+    , _nmirUploadToken :: !(Maybe Text)+    , _nmirMediaItem   :: !(Maybe MediaItem)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NewMediaItemResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nmirStatus'+--+-- * 'nmirUploadToken'+--+-- * 'nmirMediaItem'+newMediaItemResult+    :: NewMediaItemResult+newMediaItemResult =+    NewMediaItemResult'+    { _nmirStatus = Nothing+    , _nmirUploadToken = Nothing+    , _nmirMediaItem = Nothing+    }++-- | If an error occurred during the creation of this media item, this field+-- will be populated with information related to the error. Details of this+-- status can be found down below.+nmirStatus :: Lens' NewMediaItemResult (Maybe Status)+nmirStatus+  = lens _nmirStatus (\ s a -> s{_nmirStatus = a})++-- | The upload token used to create this new media item.+nmirUploadToken :: Lens' NewMediaItemResult (Maybe Text)+nmirUploadToken+  = lens _nmirUploadToken+      (\ s a -> s{_nmirUploadToken = a})++-- | Media item created with the upload token. It is populated if no errors+-- occurred and the media item was created successfully.+nmirMediaItem :: Lens' NewMediaItemResult (Maybe MediaItem)+nmirMediaItem+  = lens _nmirMediaItem+      (\ s a -> s{_nmirMediaItem = a})++instance FromJSON NewMediaItemResult where+        parseJSON+          = withObject "NewMediaItemResult"+              (\ o ->+                 NewMediaItemResult' <$>+                   (o .:? "status") <*> (o .:? "uploadToken") <*>+                     (o .:? "mediaItem"))++instance ToJSON NewMediaItemResult where+        toJSON NewMediaItemResult'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _nmirStatus,+                  ("uploadToken" .=) <$> _nmirUploadToken,+                  ("mediaItem" .=) <$> _nmirMediaItem])++-- | Representation of an album in Google Photos. Albums are a container for+-- media items. They contain an additional shareInfo property if they have+-- been shared by the application.+--+-- /See:/ 'album' smart constructor.+data Album = Album'+    { _aIsWriteable       :: !(Maybe Bool)+    , _aProductURL        :: !(Maybe Text)+    , _aShareInfo         :: !(Maybe ShareInfo)+    , _aCoverPhotoBaseURL :: !(Maybe Text)+    , _aId                :: !(Maybe Text)+    , _aTotalMediaItems   :: !(Maybe (Textual Int64))+    , _aTitle             :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Album' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aIsWriteable'+--+-- * 'aProductURL'+--+-- * 'aShareInfo'+--+-- * 'aCoverPhotoBaseURL'+--+-- * 'aId'+--+-- * 'aTotalMediaItems'+--+-- * 'aTitle'+album+    :: Album+album =+    Album'+    { _aIsWriteable = Nothing+    , _aProductURL = Nothing+    , _aShareInfo = Nothing+    , _aCoverPhotoBaseURL = Nothing+    , _aId = Nothing+    , _aTotalMediaItems = Nothing+    , _aTitle = Nothing+    }++-- | [Output only] True if media items can be created in the album. This+-- field is based on the scopes granted and permissions of the album. If+-- the scopes are changed or permissions of the album are changed, this+-- field will be updated.+aIsWriteable :: Lens' Album (Maybe Bool)+aIsWriteable+  = lens _aIsWriteable (\ s a -> s{_aIsWriteable = a})++-- | [Output only] Google Photos URL for the album. The user needs to be+-- signed in to their Google Photos account to access this link.+aProductURL :: Lens' Album (Maybe Text)+aProductURL+  = lens _aProductURL (\ s a -> s{_aProductURL = a})++-- | [Output only] Information related to shared albums. This field is only+-- populated if the album is a shared album, the developer created the+-- album and the user has granted photoslibrary.sharing scope.+aShareInfo :: Lens' Album (Maybe ShareInfo)+aShareInfo+  = lens _aShareInfo (\ s a -> s{_aShareInfo = a})++-- | [Output only] A URL to the cover photo\'s bytes. This should not be used+-- as is. Parameters should be appended to this URL before use. For+-- example, \'=w2048-h1024\' will set the dimensions of the cover photo to+-- have a width of 2048 px and height of 1024 px.+aCoverPhotoBaseURL :: Lens' Album (Maybe Text)+aCoverPhotoBaseURL+  = lens _aCoverPhotoBaseURL+      (\ s a -> s{_aCoverPhotoBaseURL = a})++-- | [Ouput only] Identifier for the album. This is a persistent identifier+-- that can be used between sessions to identify this album.+aId :: Lens' Album (Maybe Text)+aId = lens _aId (\ s a -> s{_aId = a})++-- | [Output only] The number of media items in the album+aTotalMediaItems :: Lens' Album (Maybe Int64)+aTotalMediaItems+  = lens _aTotalMediaItems+      (\ s a -> s{_aTotalMediaItems = a})+      . mapping _Coerce++-- | Name of the album displayed to the user in their Google Photos account.+-- This string should not be more than 500 characters.+aTitle :: Lens' Album (Maybe Text)+aTitle = lens _aTitle (\ s a -> s{_aTitle = a})++instance FromJSON Album where+        parseJSON+          = withObject "Album"+              (\ o ->+                 Album' <$>+                   (o .:? "isWriteable") <*> (o .:? "productUrl") <*>+                     (o .:? "shareInfo")+                     <*> (o .:? "coverPhotoBaseUrl")+                     <*> (o .:? "id")+                     <*> (o .:? "totalMediaItems")+                     <*> (o .:? "title"))++instance ToJSON Album where+        toJSON Album'{..}+          = object+              (catMaybes+                 [("isWriteable" .=) <$> _aIsWriteable,+                  ("productUrl" .=) <$> _aProductURL,+                  ("shareInfo" .=) <$> _aShareInfo,+                  ("coverPhotoBaseUrl" .=) <$> _aCoverPhotoBaseURL,+                  ("id" .=) <$> _aId,+                  ("totalMediaItems" .=) <$> _aTotalMediaItems,+                  ("title" .=) <$> _aTitle])++-- | A simple media item to be created in Google Photos via an upload token.+--+-- /See:/ 'simpleMediaItem' smart constructor.+newtype SimpleMediaItem = SimpleMediaItem'+    { _smiUploadToken :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SimpleMediaItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smiUploadToken'+simpleMediaItem+    :: SimpleMediaItem+simpleMediaItem =+    SimpleMediaItem'+    { _smiUploadToken = Nothing+    }++-- | Token identifying the media bytes which have been uploaded to Google.+smiUploadToken :: Lens' SimpleMediaItem (Maybe Text)+smiUploadToken+  = lens _smiUploadToken+      (\ s a -> s{_smiUploadToken = a})++instance FromJSON SimpleMediaItem where+        parseJSON+          = withObject "SimpleMediaItem"+              (\ o -> SimpleMediaItem' <$> (o .:? "uploadToken"))++instance ToJSON SimpleMediaItem where+        toJSON SimpleMediaItem'{..}+          = object+              (catMaybes [("uploadToken" .=) <$> _smiUploadToken])++-- | Information about a user who contributed the media item. Note that this+-- information is only included if the album containing the media item is+-- shared, was created by you and you have the sharing scope.+--+-- /See:/ 'contributorInfo' smart constructor.+data ContributorInfo = ContributorInfo'+    { _ciProFilePictureBaseURL :: !(Maybe Text)+    , _ciDisplayName           :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ContributorInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ciProFilePictureBaseURL'+--+-- * 'ciDisplayName'+contributorInfo+    :: ContributorInfo+contributorInfo =+    ContributorInfo'+    { _ciProFilePictureBaseURL = Nothing+    , _ciDisplayName = Nothing+    }++-- | URL to the profile picture of the contributor.+ciProFilePictureBaseURL :: Lens' ContributorInfo (Maybe Text)+ciProFilePictureBaseURL+  = lens _ciProFilePictureBaseURL+      (\ s a -> s{_ciProFilePictureBaseURL = a})++-- | Display name of the contributor.+ciDisplayName :: Lens' ContributorInfo (Maybe Text)+ciDisplayName+  = lens _ciDisplayName+      (\ s a -> s{_ciDisplayName = a})++instance FromJSON ContributorInfo where+        parseJSON+          = withObject "ContributorInfo"+              (\ o ->+                 ContributorInfo' <$>+                   (o .:? "profilePictureBaseUrl") <*>+                     (o .:? "displayName"))++instance ToJSON ContributorInfo where+        toJSON ContributorInfo'{..}+          = object+              (catMaybes+                 [("profilePictureBaseUrl" .=) <$>+                    _ciProFilePictureBaseURL,+                  ("displayName" .=) <$> _ciDisplayName])++--+-- /See:/ 'listAlbumsResponse' smart constructor.+data ListAlbumsResponse = ListAlbumsResponse'+    { _larNextPageToken :: !(Maybe Text)+    , _larAlbums        :: !(Maybe [Album])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListAlbumsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'larNextPageToken'+--+-- * 'larAlbums'+listAlbumsResponse+    :: ListAlbumsResponse+listAlbumsResponse =+    ListAlbumsResponse'+    { _larNextPageToken = Nothing+    , _larAlbums = Nothing+    }++-- | [Output only] Token to use to get the next set of albums. Populated if+-- there are more albums to retrieve for this request.+larNextPageToken :: Lens' ListAlbumsResponse (Maybe Text)+larNextPageToken+  = lens _larNextPageToken+      (\ s a -> s{_larNextPageToken = a})++-- | [Output only] List of albums that were created by the user.+larAlbums :: Lens' ListAlbumsResponse [Album]+larAlbums+  = lens _larAlbums (\ s a -> s{_larAlbums = a}) .+      _Default+      . _Coerce++instance FromJSON ListAlbumsResponse where+        parseJSON+          = withObject "ListAlbumsResponse"+              (\ o ->+                 ListAlbumsResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "albums" .!= mempty))++instance ToJSON ListAlbumsResponse where+        toJSON ListAlbumsResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _larNextPageToken,+                  ("albums" .=) <$> _larAlbums])++-- | An enrichment containing a map, showing origin and destination+-- locations.+--+-- /See:/ 'mapEnrichment' smart constructor.+data MapEnrichment = MapEnrichment'+    { _meDestination :: !(Maybe Location)+    , _meOrigin      :: !(Maybe Location)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MapEnrichment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'meDestination'+--+-- * 'meOrigin'+mapEnrichment+    :: MapEnrichment+mapEnrichment =+    MapEnrichment'+    { _meDestination = Nothing+    , _meOrigin = Nothing+    }++-- | Destination location for this enrichemt item.+meDestination :: Lens' MapEnrichment (Maybe Location)+meDestination+  = lens _meDestination+      (\ s a -> s{_meDestination = a})++-- | Origin location for this enrichment item.+meOrigin :: Lens' MapEnrichment (Maybe Location)+meOrigin = lens _meOrigin (\ s a -> s{_meOrigin = a})++instance FromJSON MapEnrichment where+        parseJSON+          = withObject "MapEnrichment"+              (\ o ->+                 MapEnrichment' <$>+                   (o .:? "destination") <*> (o .:? "origin"))++instance ToJSON MapEnrichment where+        toJSON MapEnrichment'{..}+          = object+              (catMaybes+                 [("destination" .=) <$> _meDestination,+                  ("origin" .=) <$> _meOrigin])++-- | Request to search for media items in a user\'s library. If the album id+-- is specified, this call will return the list of media items in the+-- album. If neither filters nor album id are specified, this call will+-- return all media items in a user\'s Google Photos library. If filters+-- are specified, this call will return all media items in the user\'s+-- library which fulfills the criteria based upon the filters. Filters and+-- album id must not both be set, as this will result in an invalid+-- request.+--+-- /See:/ 'searchMediaItemsRequest' smart constructor.+data SearchMediaItemsRequest = SearchMediaItemsRequest'+    { _smirAlbumId   :: !(Maybe Text)+    , _smirFilters   :: !(Maybe Filters)+    , _smirPageToken :: !(Maybe Text)+    , _smirPageSize  :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchMediaItemsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smirAlbumId'+--+-- * 'smirFilters'+--+-- * 'smirPageToken'+--+-- * 'smirPageSize'+searchMediaItemsRequest+    :: SearchMediaItemsRequest+searchMediaItemsRequest =+    SearchMediaItemsRequest'+    { _smirAlbumId = Nothing+    , _smirFilters = Nothing+    , _smirPageToken = Nothing+    , _smirPageSize = Nothing+    }++-- | Identifier of an album. If populated will list all media items in+-- specified album. Cannot be set in conjunction with any filters.+smirAlbumId :: Lens' SearchMediaItemsRequest (Maybe Text)+smirAlbumId+  = lens _smirAlbumId (\ s a -> s{_smirAlbumId = a})++-- | Filters to apply to the request. Cannot be set in conjuction with an+-- albumId.+smirFilters :: Lens' SearchMediaItemsRequest (Maybe Filters)+smirFilters+  = lens _smirFilters (\ s a -> s{_smirFilters = a})++-- | A continuation token to get the next page of the results. Adding this to+-- the request will return the rows after the pageToken. The pageToken+-- should be the value returned in the nextPageToken parameter in the+-- response to the searchMediaItems request.+smirPageToken :: Lens' SearchMediaItemsRequest (Maybe Text)+smirPageToken+  = lens _smirPageToken+      (\ s a -> s{_smirPageToken = a})++-- | Maximum number of media items to return in the response. The default+-- number of media items to return at a time is 100. The maximum page size+-- is 500.+smirPageSize :: Lens' SearchMediaItemsRequest (Maybe Int32)+smirPageSize+  = lens _smirPageSize (\ s a -> s{_smirPageSize = a})+      . mapping _Coerce++instance FromJSON SearchMediaItemsRequest where+        parseJSON+          = withObject "SearchMediaItemsRequest"+              (\ o ->+                 SearchMediaItemsRequest' <$>+                   (o .:? "albumId") <*> (o .:? "filters") <*>+                     (o .:? "pageToken")+                     <*> (o .:? "pageSize"))++instance ToJSON SearchMediaItemsRequest where+        toJSON SearchMediaItemsRequest'{..}+          = object+              (catMaybes+                 [("albumId" .=) <$> _smirAlbumId,+                  ("filters" .=) <$> _smirFilters,+                  ("pageToken" .=) <$> _smirPageToken,+                  ("pageSize" .=) <$> _smirPageSize])++-- | New media item that will be created in a user\'s Google Photos account.+--+-- /See:/ 'newMediaItem' smart constructor.+data NewMediaItem = NewMediaItem'+    { _nmiSimpleMediaItem :: !(Maybe SimpleMediaItem)+    , _nmiDescription     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NewMediaItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nmiSimpleMediaItem'+--+-- * 'nmiDescription'+newMediaItem+    :: NewMediaItem+newMediaItem =+    NewMediaItem'+    { _nmiSimpleMediaItem = Nothing+    , _nmiDescription = Nothing+    }++-- | A new media item that has been uploaded via the included uploadToken.+nmiSimpleMediaItem :: Lens' NewMediaItem (Maybe SimpleMediaItem)+nmiSimpleMediaItem+  = lens _nmiSimpleMediaItem+      (\ s a -> s{_nmiSimpleMediaItem = a})++-- | Description of the media item. This will be shown to the user in the+-- item\'s info section in the Google Photos app. This string should not be+-- more than 1000 characters.+nmiDescription :: Lens' NewMediaItem (Maybe Text)+nmiDescription+  = lens _nmiDescription+      (\ s a -> s{_nmiDescription = a})++instance FromJSON NewMediaItem where+        parseJSON+          = withObject "NewMediaItem"+              (\ o ->+                 NewMediaItem' <$>+                   (o .:? "simpleMediaItem") <*> (o .:? "description"))++instance ToJSON NewMediaItem where+        toJSON NewMediaItem'{..}+          = object+              (catMaybes+                 [("simpleMediaItem" .=) <$> _nmiSimpleMediaItem,+                  ("description" .=) <$> _nmiDescription])++-- | Request to add an enrichment to a specific album at a specific position.+--+-- /See:/ 'addEnrichmentToAlbumRequest' smart constructor.+data AddEnrichmentToAlbumRequest = AddEnrichmentToAlbumRequest'+    { _aetarNewEnrichmentItem :: !(Maybe NewEnrichmentItem)+    , _aetarAlbumPosition     :: !(Maybe AlbumPosition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddEnrichmentToAlbumRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aetarNewEnrichmentItem'+--+-- * 'aetarAlbumPosition'+addEnrichmentToAlbumRequest+    :: AddEnrichmentToAlbumRequest+addEnrichmentToAlbumRequest =+    AddEnrichmentToAlbumRequest'+    { _aetarNewEnrichmentItem = Nothing+    , _aetarAlbumPosition = Nothing+    }++-- | The enrichment to be added.+aetarNewEnrichmentItem :: Lens' AddEnrichmentToAlbumRequest (Maybe NewEnrichmentItem)+aetarNewEnrichmentItem+  = lens _aetarNewEnrichmentItem+      (\ s a -> s{_aetarNewEnrichmentItem = a})++-- | The position where the enrichment will be inserted.+aetarAlbumPosition :: Lens' AddEnrichmentToAlbumRequest (Maybe AlbumPosition)+aetarAlbumPosition+  = lens _aetarAlbumPosition+      (\ s a -> s{_aetarAlbumPosition = a})++instance FromJSON AddEnrichmentToAlbumRequest where+        parseJSON+          = withObject "AddEnrichmentToAlbumRequest"+              (\ o ->+                 AddEnrichmentToAlbumRequest' <$>+                   (o .:? "newEnrichmentItem") <*>+                     (o .:? "albumPosition"))++instance ToJSON AddEnrichmentToAlbumRequest where+        toJSON AddEnrichmentToAlbumRequest'{..}+          = object+              (catMaybes+                 [("newEnrichmentItem" .=) <$>+                    _aetarNewEnrichmentItem,+                  ("albumPosition" .=) <$> _aetarAlbumPosition])++-- | Request to join a shared album on behalf of the user. This uses a+-- shareToken which can be acquired via the shareAlbum or listSharedAlbums+-- calls.+--+-- /See:/ 'joinSharedAlbumRequest' smart constructor.+newtype JoinSharedAlbumRequest = JoinSharedAlbumRequest'+    { _jsarShareToken :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JoinSharedAlbumRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jsarShareToken'+joinSharedAlbumRequest+    :: JoinSharedAlbumRequest+joinSharedAlbumRequest =+    JoinSharedAlbumRequest'+    { _jsarShareToken = Nothing+    }++-- | Token indicating the shared album to join on behalf of the user.+jsarShareToken :: Lens' JoinSharedAlbumRequest (Maybe Text)+jsarShareToken+  = lens _jsarShareToken+      (\ s a -> s{_jsarShareToken = a})++instance FromJSON JoinSharedAlbumRequest where+        parseJSON+          = withObject "JoinSharedAlbumRequest"+              (\ o ->+                 JoinSharedAlbumRequest' <$> (o .:? "shareToken"))++instance ToJSON JoinSharedAlbumRequest where+        toJSON JoinSharedAlbumRequest'{..}+          = object+              (catMaybes [("shareToken" .=) <$> _jsarShareToken])++-- | Request to make an album shared in Google Photos.+--+-- /See:/ 'shareAlbumRequest' smart constructor.+newtype ShareAlbumRequest = ShareAlbumRequest'+    { _sarSharedAlbumOptions :: Maybe SharedAlbumOptions+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ShareAlbumRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sarSharedAlbumOptions'+shareAlbumRequest+    :: ShareAlbumRequest+shareAlbumRequest =+    ShareAlbumRequest'+    { _sarSharedAlbumOptions = Nothing+    }++-- | Options to be set when converting the album to a shared album.+sarSharedAlbumOptions :: Lens' ShareAlbumRequest (Maybe SharedAlbumOptions)+sarSharedAlbumOptions+  = lens _sarSharedAlbumOptions+      (\ s a -> s{_sarSharedAlbumOptions = a})++instance FromJSON ShareAlbumRequest where+        parseJSON+          = withObject "ShareAlbumRequest"+              (\ o ->+                 ShareAlbumRequest' <$> (o .:? "sharedAlbumOptions"))++instance ToJSON ShareAlbumRequest where+        toJSON ShareAlbumRequest'{..}+          = object+              (catMaybes+                 [("sharedAlbumOptions" .=) <$>+                    _sarSharedAlbumOptions])++-- | Specifies a position in an album.+--+-- /See:/ 'albumPosition' smart constructor.+data AlbumPosition = AlbumPosition'+    { _apRelativeMediaItemId      :: !(Maybe Text)+    , _apRelativeEnrichmentItemId :: !(Maybe Text)+    , _apPosition                 :: !(Maybe AlbumPositionPosition)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apRelativeMediaItemId'+--+-- * 'apRelativeEnrichmentItemId'+--+-- * 'apPosition'+albumPosition+    :: AlbumPosition+albumPosition =+    AlbumPosition'+    { _apRelativeMediaItemId = Nothing+    , _apRelativeEnrichmentItemId = Nothing+    , _apPosition = Nothing+    }++-- | The media item to which the position is relative to. Only used when+-- position type is AFTER_MEDIA_ITEM.+apRelativeMediaItemId :: Lens' AlbumPosition (Maybe Text)+apRelativeMediaItemId+  = lens _apRelativeMediaItemId+      (\ s a -> s{_apRelativeMediaItemId = a})++-- | The enrichment item to which the position is relative to. Only used when+-- position type is AFTER_ENRICHMENT_ITEM.+apRelativeEnrichmentItemId :: Lens' AlbumPosition (Maybe Text)+apRelativeEnrichmentItemId+  = lens _apRelativeEnrichmentItemId+      (\ s a -> s{_apRelativeEnrichmentItemId = a})++-- | Type of position, for a media or enrichment item.+apPosition :: Lens' AlbumPosition (Maybe AlbumPositionPosition)+apPosition+  = lens _apPosition (\ s a -> s{_apPosition = a})++instance FromJSON AlbumPosition where+        parseJSON+          = withObject "AlbumPosition"+              (\ o ->+                 AlbumPosition' <$>+                   (o .:? "relativeMediaItemId") <*>+                     (o .:? "relativeEnrichmentItemId")+                     <*> (o .:? "position"))++instance ToJSON AlbumPosition where+        toJSON AlbumPosition'{..}+          = object+              (catMaybes+                 [("relativeMediaItemId" .=) <$>+                    _apRelativeMediaItemId,+                  ("relativeEnrichmentItemId" .=) <$>+                    _apRelativeEnrichmentItemId,+                  ("position" .=) <$> _apPosition])++-- | This filter is used to define which results to return based on the+-- contents of the media item. It is possible to specify a list of+-- categories to include, and\/or a list of categories to exclude. Within+-- each list, the categories are combined with an OR. For example, if the+-- content filter looks like: included_content_categories: [c1, c2, c3] It+-- would get media items that contain (c1 OR c2 OR c3). And if the content+-- filter looks like: excluded_content_categories: [c1, c2, c3] It would+-- get media items that contain NOT (c1 OR c2 OR c3). You can also include+-- some categories while excluding others, as in this proto:+-- included_content_categories: [c1, c2], excluded_content_category: [c3,+-- c4] It would get media items that contain (c1 OR c2) AND NOT (c3 OR c4).+-- A category that appears in 'includedContentategories' must not appear in+-- 'excludedContentCategories'.+--+-- /See:/ 'contentFilter' smart constructor.+data ContentFilter = ContentFilter'+    { _cfIncludedContentCategories :: !(Maybe [Text])+    , _cfExcludedContentCategories :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ContentFilter' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfIncludedContentCategories'+--+-- * 'cfExcludedContentCategories'+contentFilter+    :: ContentFilter+contentFilter =+    ContentFilter'+    { _cfIncludedContentCategories = Nothing+    , _cfExcludedContentCategories = Nothing+    }++-- | The set of categories that must be present in the media items in the+-- result. The items in the set are ORed. There is a maximum of 10+-- includedContentCategories per request.+cfIncludedContentCategories :: Lens' ContentFilter [Text]+cfIncludedContentCategories+  = lens _cfIncludedContentCategories+      (\ s a -> s{_cfIncludedContentCategories = a})+      . _Default+      . _Coerce++-- | The set of categories that must NOT be present in the media items in the+-- result. The items in the set are ORed. There is a maximum of 10+-- excludedContentCategories per request.+cfExcludedContentCategories :: Lens' ContentFilter [Text]+cfExcludedContentCategories+  = lens _cfExcludedContentCategories+      (\ s a -> s{_cfExcludedContentCategories = a})+      . _Default+      . _Coerce++instance FromJSON ContentFilter where+        parseJSON+          = withObject "ContentFilter"+              (\ o ->+                 ContentFilter' <$>+                   (o .:? "includedContentCategories" .!= mempty) <*>+                     (o .:? "excludedContentCategories" .!= mempty))++instance ToJSON ContentFilter where+        toJSON ContentFilter'{..}+          = object+              (catMaybes+                 [("includedContentCategories" .=) <$>+                    _cfIncludedContentCategories,+                  ("excludedContentCategories" .=) <$>+                    _cfExcludedContentCategories])++--+-- /See:/ 'batchCreateMediaItemsResponse' smart constructor.+newtype BatchCreateMediaItemsResponse = BatchCreateMediaItemsResponse'+    { _bcmirNewMediaItemResults :: Maybe [NewMediaItemResult]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchCreateMediaItemsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bcmirNewMediaItemResults'+batchCreateMediaItemsResponse+    :: BatchCreateMediaItemsResponse+batchCreateMediaItemsResponse =+    BatchCreateMediaItemsResponse'+    { _bcmirNewMediaItemResults = Nothing+    }++-- | [Output only] List of media items which were created.+bcmirNewMediaItemResults :: Lens' BatchCreateMediaItemsResponse [NewMediaItemResult]+bcmirNewMediaItemResults+  = lens _bcmirNewMediaItemResults+      (\ s a -> s{_bcmirNewMediaItemResults = a})+      . _Default+      . _Coerce++instance FromJSON BatchCreateMediaItemsResponse where+        parseJSON+          = withObject "BatchCreateMediaItemsResponse"+              (\ o ->+                 BatchCreateMediaItemsResponse' <$>+                   (o .:? "newMediaItemResults" .!= mempty))++instance ToJSON BatchCreateMediaItemsResponse where+        toJSON BatchCreateMediaItemsResponse'{..}+          = object+              (catMaybes+                 [("newMediaItemResults" .=) <$>+                    _bcmirNewMediaItemResults])
+ gen/Network/Google/PhotosLibrary/Types/Sum.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.PhotosLibrary.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.PhotosLibrary.Types.Sum where++import           Network.Google.Prelude hiding (Bytes)++-- | Processing status of the video.+data VideoStatus+    = Unspecified+      -- ^ @UNSPECIFIED@+      -- Video processing status is unknown.+    | Processing+      -- ^ @PROCESSING@+      -- Video is currently being processed. The user will see an icon for this+      -- video in the Google Photos app, however, it will not be playable yet.+    | Ready+      -- ^ @READY@+      -- Video is now ready for viewing.+    | Failed+      -- ^ @FAILED@+      -- Something has gone wrong and the video has failed to process.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable VideoStatus++instance FromHttpApiData VideoStatus where+    parseQueryParam = \case+        "UNSPECIFIED" -> Right Unspecified+        "PROCESSING" -> Right Processing+        "READY" -> Right Ready+        "FAILED" -> Right Failed+        x -> Left ("Unable to parse VideoStatus from: " <> x)++instance ToHttpApiData VideoStatus where+    toQueryParam = \case+        Unspecified -> "UNSPECIFIED"+        Processing -> "PROCESSING"+        Ready -> "READY"+        Failed -> "FAILED"++instance FromJSON VideoStatus where+    parseJSON = parseJSONText "VideoStatus"++instance ToJSON VideoStatus where+    toJSON = toJSONText++-- | Type of position, for a media or enrichment item.+data AlbumPositionPosition+    = PositionTypeUnspecified+      -- ^ @POSITION_TYPE_UNSPECIFIED@+      -- Default value if this enum is not set.+    | FirstInAlbum+      -- ^ @FIRST_IN_ALBUM@+      -- At the beginning of the album.+    | LastInAlbum+      -- ^ @LAST_IN_ALBUM@+      -- At the end of the album.+    | AfterMediaItem+      -- ^ @AFTER_MEDIA_ITEM@+      -- After a media item.+    | AfterEnrichmentItem+      -- ^ @AFTER_ENRICHMENT_ITEM@+      -- After an enrichment item.+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable AlbumPositionPosition++instance FromHttpApiData AlbumPositionPosition where+    parseQueryParam = \case+        "POSITION_TYPE_UNSPECIFIED" -> Right PositionTypeUnspecified+        "FIRST_IN_ALBUM" -> Right FirstInAlbum+        "LAST_IN_ALBUM" -> Right LastInAlbum+        "AFTER_MEDIA_ITEM" -> Right AfterMediaItem+        "AFTER_ENRICHMENT_ITEM" -> Right AfterEnrichmentItem+        x -> Left ("Unable to parse AlbumPositionPosition from: " <> x)++instance ToHttpApiData AlbumPositionPosition where+    toQueryParam = \case+        PositionTypeUnspecified -> "POSITION_TYPE_UNSPECIFIED"+        FirstInAlbum -> "FIRST_IN_ALBUM"+        LastInAlbum -> "LAST_IN_ALBUM"+        AfterMediaItem -> "AFTER_MEDIA_ITEM"+        AfterEnrichmentItem -> "AFTER_ENRICHMENT_ITEM"++instance FromJSON AlbumPositionPosition where+    parseJSON = parseJSONText "AlbumPositionPosition"++instance ToJSON AlbumPositionPosition 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
+ gen/Network/Google/Resource/PhotosLibrary/Albums/AddEnrichment.hs view
@@ -0,0 +1,187 @@+{-# 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.PhotosLibrary.Albums.AddEnrichment+-- 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)+--+-- Adds an enrichment to a specified position in a defined album.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.albums.addEnrichment@.+module Network.Google.Resource.PhotosLibrary.Albums.AddEnrichment+    (+    -- * REST Resource+      AlbumsAddEnrichmentResource++    -- * Creating a Request+    , albumsAddEnrichment+    , AlbumsAddEnrichment++    -- * Request Lenses+    , aaeXgafv+    , aaeAlbumId+    , aaeUploadProtocol+    , aaePp+    , aaeAccessToken+    , aaeUploadType+    , aaePayload+    , aaeBearerToken+    , aaeCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.albums.addEnrichment@ method which the+-- 'AlbumsAddEnrichment' request conforms to.+type AlbumsAddEnrichmentResource =+     "v1" :>+       "albums" :>+         CaptureMode "albumId" "addEnrichment" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "bearer_token" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           ReqBody '[JSON] AddEnrichmentToAlbumRequest :>+                             Post '[JSON] AddEnrichmentToAlbumResponse++-- | Adds an enrichment to a specified position in a defined album.+--+-- /See:/ 'albumsAddEnrichment' smart constructor.+data AlbumsAddEnrichment = AlbumsAddEnrichment'+    { _aaeXgafv          :: !(Maybe Xgafv)+    , _aaeAlbumId        :: !Text+    , _aaeUploadProtocol :: !(Maybe Text)+    , _aaePp             :: !Bool+    , _aaeAccessToken    :: !(Maybe Text)+    , _aaeUploadType     :: !(Maybe Text)+    , _aaePayload        :: !AddEnrichmentToAlbumRequest+    , _aaeBearerToken    :: !(Maybe Text)+    , _aaeCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumsAddEnrichment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aaeXgafv'+--+-- * 'aaeAlbumId'+--+-- * 'aaeUploadProtocol'+--+-- * 'aaePp'+--+-- * 'aaeAccessToken'+--+-- * 'aaeUploadType'+--+-- * 'aaePayload'+--+-- * 'aaeBearerToken'+--+-- * 'aaeCallback'+albumsAddEnrichment+    :: Text -- ^ 'aaeAlbumId'+    -> AddEnrichmentToAlbumRequest -- ^ 'aaePayload'+    -> AlbumsAddEnrichment+albumsAddEnrichment pAaeAlbumId_ pAaePayload_ =+    AlbumsAddEnrichment'+    { _aaeXgafv = Nothing+    , _aaeAlbumId = pAaeAlbumId_+    , _aaeUploadProtocol = Nothing+    , _aaePp = True+    , _aaeAccessToken = Nothing+    , _aaeUploadType = Nothing+    , _aaePayload = pAaePayload_+    , _aaeBearerToken = Nothing+    , _aaeCallback = Nothing+    }++-- | V1 error format.+aaeXgafv :: Lens' AlbumsAddEnrichment (Maybe Xgafv)+aaeXgafv = lens _aaeXgafv (\ s a -> s{_aaeXgafv = a})++-- | Identifier of the album where the enrichment will be added.+aaeAlbumId :: Lens' AlbumsAddEnrichment Text+aaeAlbumId+  = lens _aaeAlbumId (\ s a -> s{_aaeAlbumId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+aaeUploadProtocol :: Lens' AlbumsAddEnrichment (Maybe Text)+aaeUploadProtocol+  = lens _aaeUploadProtocol+      (\ s a -> s{_aaeUploadProtocol = a})++-- | Pretty-print response.+aaePp :: Lens' AlbumsAddEnrichment Bool+aaePp = lens _aaePp (\ s a -> s{_aaePp = a})++-- | OAuth access token.+aaeAccessToken :: Lens' AlbumsAddEnrichment (Maybe Text)+aaeAccessToken+  = lens _aaeAccessToken+      (\ s a -> s{_aaeAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+aaeUploadType :: Lens' AlbumsAddEnrichment (Maybe Text)+aaeUploadType+  = lens _aaeUploadType+      (\ s a -> s{_aaeUploadType = a})++-- | Multipart request metadata.+aaePayload :: Lens' AlbumsAddEnrichment AddEnrichmentToAlbumRequest+aaePayload+  = lens _aaePayload (\ s a -> s{_aaePayload = a})++-- | OAuth bearer token.+aaeBearerToken :: Lens' AlbumsAddEnrichment (Maybe Text)+aaeBearerToken+  = lens _aaeBearerToken+      (\ s a -> s{_aaeBearerToken = a})++-- | JSONP+aaeCallback :: Lens' AlbumsAddEnrichment (Maybe Text)+aaeCallback+  = lens _aaeCallback (\ s a -> s{_aaeCallback = a})++instance GoogleRequest AlbumsAddEnrichment where+        type Rs AlbumsAddEnrichment =+             AddEnrichmentToAlbumResponse+        type Scopes AlbumsAddEnrichment =+             '["https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.appendonly",+               "https://www.googleapis.com/auth/photoslibrary.sharing"]+        requestClient AlbumsAddEnrichment'{..}+          = go _aaeAlbumId _aaeXgafv _aaeUploadProtocol+              (Just _aaePp)+              _aaeAccessToken+              _aaeUploadType+              _aaeBearerToken+              _aaeCallback+              (Just AltJSON)+              _aaePayload+              photosLibraryService+          where go+                  = buildClient+                      (Proxy :: Proxy AlbumsAddEnrichmentResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/Albums/Create.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.PhotosLibrary.Albums.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 an album in a user\'s Google Photos library.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.albums.create@.+module Network.Google.Resource.PhotosLibrary.Albums.Create+    (+    -- * REST Resource+      AlbumsCreateResource++    -- * Creating a Request+    , albumsCreate+    , AlbumsCreate++    -- * Request Lenses+    , acXgafv+    , acUploadProtocol+    , acPp+    , acAccessToken+    , acUploadType+    , acPayload+    , acBearerToken+    , acCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.albums.create@ method which the+-- 'AlbumsCreate' request conforms to.+type AlbumsCreateResource =+     "v1" :>+       "albums" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] CreateAlbumRequest :>+                           Post '[JSON] Album++-- | Creates an album in a user\'s Google Photos library.+--+-- /See:/ 'albumsCreate' smart constructor.+data AlbumsCreate = AlbumsCreate'+    { _acXgafv          :: !(Maybe Xgafv)+    , _acUploadProtocol :: !(Maybe Text)+    , _acPp             :: !Bool+    , _acAccessToken    :: !(Maybe Text)+    , _acUploadType     :: !(Maybe Text)+    , _acPayload        :: !CreateAlbumRequest+    , _acBearerToken    :: !(Maybe Text)+    , _acCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumsCreate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acXgafv'+--+-- * 'acUploadProtocol'+--+-- * 'acPp'+--+-- * 'acAccessToken'+--+-- * 'acUploadType'+--+-- * 'acPayload'+--+-- * 'acBearerToken'+--+-- * 'acCallback'+albumsCreate+    :: CreateAlbumRequest -- ^ 'acPayload'+    -> AlbumsCreate+albumsCreate pAcPayload_ =+    AlbumsCreate'+    { _acXgafv = Nothing+    , _acUploadProtocol = Nothing+    , _acPp = True+    , _acAccessToken = Nothing+    , _acUploadType = Nothing+    , _acPayload = pAcPayload_+    , _acBearerToken = Nothing+    , _acCallback = Nothing+    }++-- | V1 error format.+acXgafv :: Lens' AlbumsCreate (Maybe Xgafv)+acXgafv = lens _acXgafv (\ s a -> s{_acXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+acUploadProtocol :: Lens' AlbumsCreate (Maybe Text)+acUploadProtocol+  = lens _acUploadProtocol+      (\ s a -> s{_acUploadProtocol = a})++-- | Pretty-print response.+acPp :: Lens' AlbumsCreate Bool+acPp = lens _acPp (\ s a -> s{_acPp = a})++-- | OAuth access token.+acAccessToken :: Lens' AlbumsCreate (Maybe Text)+acAccessToken+  = lens _acAccessToken+      (\ s a -> s{_acAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+acUploadType :: Lens' AlbumsCreate (Maybe Text)+acUploadType+  = lens _acUploadType (\ s a -> s{_acUploadType = a})++-- | Multipart request metadata.+acPayload :: Lens' AlbumsCreate CreateAlbumRequest+acPayload+  = lens _acPayload (\ s a -> s{_acPayload = a})++-- | OAuth bearer token.+acBearerToken :: Lens' AlbumsCreate (Maybe Text)+acBearerToken+  = lens _acBearerToken+      (\ s a -> s{_acBearerToken = a})++-- | JSONP+acCallback :: Lens' AlbumsCreate (Maybe Text)+acCallback+  = lens _acCallback (\ s a -> s{_acCallback = a})++instance GoogleRequest AlbumsCreate where+        type Rs AlbumsCreate = Album+        type Scopes AlbumsCreate =+             '["https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.appendonly",+               "https://www.googleapis.com/auth/photoslibrary.sharing"]+        requestClient AlbumsCreate'{..}+          = go _acXgafv _acUploadProtocol (Just _acPp)+              _acAccessToken+              _acUploadType+              _acBearerToken+              _acCallback+              (Just AltJSON)+              _acPayload+              photosLibraryService+          where go+                  = buildClient (Proxy :: Proxy AlbumsCreateResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/Albums/Get.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.PhotosLibrary.Albums.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 the album specified by the given album id.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.albums.get@.+module Network.Google.Resource.PhotosLibrary.Albums.Get+    (+    -- * REST Resource+      AlbumsGetResource++    -- * Creating a Request+    , albumsGet+    , AlbumsGet++    -- * Request Lenses+    , agXgafv+    , agAlbumId+    , agUploadProtocol+    , agPp+    , agAccessToken+    , agUploadType+    , agBearerToken+    , agCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.albums.get@ method which the+-- 'AlbumsGet' request conforms to.+type AlbumsGetResource =+     "v1" :>+       "albums" :>+         Capture "albumId" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "bearer_token" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :> Get '[JSON] Album++-- | Returns the album specified by the given album id.+--+-- /See:/ 'albumsGet' smart constructor.+data AlbumsGet = AlbumsGet'+    { _agXgafv          :: !(Maybe Xgafv)+    , _agAlbumId        :: !Text+    , _agUploadProtocol :: !(Maybe Text)+    , _agPp             :: !Bool+    , _agAccessToken    :: !(Maybe Text)+    , _agUploadType     :: !(Maybe Text)+    , _agBearerToken    :: !(Maybe Text)+    , _agCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumsGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'agXgafv'+--+-- * 'agAlbumId'+--+-- * 'agUploadProtocol'+--+-- * 'agPp'+--+-- * 'agAccessToken'+--+-- * 'agUploadType'+--+-- * 'agBearerToken'+--+-- * 'agCallback'+albumsGet+    :: Text -- ^ 'agAlbumId'+    -> AlbumsGet+albumsGet pAgAlbumId_ =+    AlbumsGet'+    { _agXgafv = Nothing+    , _agAlbumId = pAgAlbumId_+    , _agUploadProtocol = Nothing+    , _agPp = True+    , _agAccessToken = Nothing+    , _agUploadType = Nothing+    , _agBearerToken = Nothing+    , _agCallback = Nothing+    }++-- | V1 error format.+agXgafv :: Lens' AlbumsGet (Maybe Xgafv)+agXgafv = lens _agXgafv (\ s a -> s{_agXgafv = a})++-- | Identifier of the album to be requested.+agAlbumId :: Lens' AlbumsGet Text+agAlbumId+  = lens _agAlbumId (\ s a -> s{_agAlbumId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+agUploadProtocol :: Lens' AlbumsGet (Maybe Text)+agUploadProtocol+  = lens _agUploadProtocol+      (\ s a -> s{_agUploadProtocol = a})++-- | Pretty-print response.+agPp :: Lens' AlbumsGet Bool+agPp = lens _agPp (\ s a -> s{_agPp = a})++-- | OAuth access token.+agAccessToken :: Lens' AlbumsGet (Maybe Text)+agAccessToken+  = lens _agAccessToken+      (\ s a -> s{_agAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+agUploadType :: Lens' AlbumsGet (Maybe Text)+agUploadType+  = lens _agUploadType (\ s a -> s{_agUploadType = a})++-- | OAuth bearer token.+agBearerToken :: Lens' AlbumsGet (Maybe Text)+agBearerToken+  = lens _agBearerToken+      (\ s a -> s{_agBearerToken = a})++-- | JSONP+agCallback :: Lens' AlbumsGet (Maybe Text)+agCallback+  = lens _agCallback (\ s a -> s{_agCallback = a})++instance GoogleRequest AlbumsGet where+        type Rs AlbumsGet = Album+        type Scopes AlbumsGet =+             '["https://www.googleapis.com/auth/drive.photos.readonly",+               "https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.readonly",+               "https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+        requestClient AlbumsGet'{..}+          = go _agAlbumId _agXgafv _agUploadProtocol+              (Just _agPp)+              _agAccessToken+              _agUploadType+              _agBearerToken+              _agCallback+              (Just AltJSON)+              photosLibraryService+          where go+                  = buildClient (Proxy :: Proxy AlbumsGetResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/Albums/List.hs view
@@ -0,0 +1,190 @@+{-# 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.PhotosLibrary.Albums.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 all albums shown to a user in the \'Albums\' tab of the Google+-- Photos app.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.albums.list@.+module Network.Google.Resource.PhotosLibrary.Albums.List+    (+    -- * REST Resource+      AlbumsListResource++    -- * Creating a Request+    , albumsList+    , AlbumsList++    -- * Request Lenses+    , alXgafv+    , alUploadProtocol+    , alPp+    , alAccessToken+    , alUploadType+    , alBearerToken+    , alPageToken+    , alPageSize+    , alCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.albums.list@ method which the+-- 'AlbumsList' request conforms to.+type AlbumsListResource =+     "v1" :>+       "albums" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "pageSize" (Textual Int32) :>+                         QueryParam "callback" Text :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] ListAlbumsResponse++-- | Lists all albums shown to a user in the \'Albums\' tab of the Google+-- Photos app.+--+-- /See:/ 'albumsList' smart constructor.+data AlbumsList = AlbumsList'+    { _alXgafv          :: !(Maybe Xgafv)+    , _alUploadProtocol :: !(Maybe Text)+    , _alPp             :: !Bool+    , _alAccessToken    :: !(Maybe Text)+    , _alUploadType     :: !(Maybe Text)+    , _alBearerToken    :: !(Maybe Text)+    , _alPageToken      :: !(Maybe Text)+    , _alPageSize       :: !(Maybe (Textual Int32))+    , _alCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumsList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'alXgafv'+--+-- * 'alUploadProtocol'+--+-- * 'alPp'+--+-- * 'alAccessToken'+--+-- * 'alUploadType'+--+-- * 'alBearerToken'+--+-- * 'alPageToken'+--+-- * 'alPageSize'+--+-- * 'alCallback'+albumsList+    :: AlbumsList+albumsList =+    AlbumsList'+    { _alXgafv = Nothing+    , _alUploadProtocol = Nothing+    , _alPp = True+    , _alAccessToken = Nothing+    , _alUploadType = Nothing+    , _alBearerToken = Nothing+    , _alPageToken = Nothing+    , _alPageSize = Nothing+    , _alCallback = Nothing+    }++-- | V1 error format.+alXgafv :: Lens' AlbumsList (Maybe Xgafv)+alXgafv = lens _alXgafv (\ s a -> s{_alXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+alUploadProtocol :: Lens' AlbumsList (Maybe Text)+alUploadProtocol+  = lens _alUploadProtocol+      (\ s a -> s{_alUploadProtocol = a})++-- | Pretty-print response.+alPp :: Lens' AlbumsList Bool+alPp = lens _alPp (\ s a -> s{_alPp = a})++-- | OAuth access token.+alAccessToken :: Lens' AlbumsList (Maybe Text)+alAccessToken+  = lens _alAccessToken+      (\ s a -> s{_alAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+alUploadType :: Lens' AlbumsList (Maybe Text)+alUploadType+  = lens _alUploadType (\ s a -> s{_alUploadType = a})++-- | OAuth bearer token.+alBearerToken :: Lens' AlbumsList (Maybe Text)+alBearerToken+  = lens _alBearerToken+      (\ s a -> s{_alBearerToken = a})++-- | A continuation token to get the next page of the results. Adding this to+-- the request will return the rows after the pageToken. The pageToken+-- should be the value returned in the nextPageToken parameter in the+-- response to the listAlbums request.+alPageToken :: Lens' AlbumsList (Maybe Text)+alPageToken+  = lens _alPageToken (\ s a -> s{_alPageToken = a})++-- | Maximum number of albums to return in the response. The default number+-- of albums to return at a time is 20. The maximum page size is 50.+alPageSize :: Lens' AlbumsList (Maybe Int32)+alPageSize+  = lens _alPageSize (\ s a -> s{_alPageSize = a}) .+      mapping _Coerce++-- | JSONP+alCallback :: Lens' AlbumsList (Maybe Text)+alCallback+  = lens _alCallback (\ s a -> s{_alCallback = a})++instance GoogleRequest AlbumsList where+        type Rs AlbumsList = ListAlbumsResponse+        type Scopes AlbumsList =+             '["https://www.googleapis.com/auth/drive.photos.readonly",+               "https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.readonly",+               "https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+        requestClient AlbumsList'{..}+          = go _alXgafv _alUploadProtocol (Just _alPp)+              _alAccessToken+              _alUploadType+              _alBearerToken+              _alPageToken+              _alPageSize+              _alCallback+              (Just AltJSON)+              photosLibraryService+          where go+                  = buildClient (Proxy :: Proxy AlbumsListResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/Albums/Share.hs view
@@ -0,0 +1,187 @@+{-# 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.PhotosLibrary.Albums.Share+-- 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)+--+-- Marks an album as \'shared\' and accessible to other users. This action+-- can only be performed on albums which were created by the developer via+-- the API.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.albums.share@.+module Network.Google.Resource.PhotosLibrary.Albums.Share+    (+    -- * REST Resource+      AlbumsShareResource++    -- * Creating a Request+    , albumsShare+    , AlbumsShare++    -- * Request Lenses+    , asXgafv+    , asAlbumId+    , asUploadProtocol+    , asPp+    , asAccessToken+    , asUploadType+    , asPayload+    , asBearerToken+    , asCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.albums.share@ method which the+-- 'AlbumsShare' request conforms to.+type AlbumsShareResource =+     "v1" :>+       "albums" :>+         CaptureMode "albumId" "share" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "bearer_token" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :>+                           ReqBody '[JSON] ShareAlbumRequest :>+                             Post '[JSON] ShareAlbumResponse++-- | Marks an album as \'shared\' and accessible to other users. This action+-- can only be performed on albums which were created by the developer via+-- the API.+--+-- /See:/ 'albumsShare' smart constructor.+data AlbumsShare = AlbumsShare'+    { _asXgafv          :: !(Maybe Xgafv)+    , _asAlbumId        :: !Text+    , _asUploadProtocol :: !(Maybe Text)+    , _asPp             :: !Bool+    , _asAccessToken    :: !(Maybe Text)+    , _asUploadType     :: !(Maybe Text)+    , _asPayload        :: !ShareAlbumRequest+    , _asBearerToken    :: !(Maybe Text)+    , _asCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AlbumsShare' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'asXgafv'+--+-- * 'asAlbumId'+--+-- * 'asUploadProtocol'+--+-- * 'asPp'+--+-- * 'asAccessToken'+--+-- * 'asUploadType'+--+-- * 'asPayload'+--+-- * 'asBearerToken'+--+-- * 'asCallback'+albumsShare+    :: Text -- ^ 'asAlbumId'+    -> ShareAlbumRequest -- ^ 'asPayload'+    -> AlbumsShare+albumsShare pAsAlbumId_ pAsPayload_ =+    AlbumsShare'+    { _asXgafv = Nothing+    , _asAlbumId = pAsAlbumId_+    , _asUploadProtocol = Nothing+    , _asPp = True+    , _asAccessToken = Nothing+    , _asUploadType = Nothing+    , _asPayload = pAsPayload_+    , _asBearerToken = Nothing+    , _asCallback = Nothing+    }++-- | V1 error format.+asXgafv :: Lens' AlbumsShare (Maybe Xgafv)+asXgafv = lens _asXgafv (\ s a -> s{_asXgafv = a})++-- | Identifier of the album to be shared. This album id must belong to an+-- album created by the developer. .+asAlbumId :: Lens' AlbumsShare Text+asAlbumId+  = lens _asAlbumId (\ s a -> s{_asAlbumId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+asUploadProtocol :: Lens' AlbumsShare (Maybe Text)+asUploadProtocol+  = lens _asUploadProtocol+      (\ s a -> s{_asUploadProtocol = a})++-- | Pretty-print response.+asPp :: Lens' AlbumsShare Bool+asPp = lens _asPp (\ s a -> s{_asPp = a})++-- | OAuth access token.+asAccessToken :: Lens' AlbumsShare (Maybe Text)+asAccessToken+  = lens _asAccessToken+      (\ s a -> s{_asAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+asUploadType :: Lens' AlbumsShare (Maybe Text)+asUploadType+  = lens _asUploadType (\ s a -> s{_asUploadType = a})++-- | Multipart request metadata.+asPayload :: Lens' AlbumsShare ShareAlbumRequest+asPayload+  = lens _asPayload (\ s a -> s{_asPayload = a})++-- | OAuth bearer token.+asBearerToken :: Lens' AlbumsShare (Maybe Text)+asBearerToken+  = lens _asBearerToken+      (\ s a -> s{_asBearerToken = a})++-- | JSONP+asCallback :: Lens' AlbumsShare (Maybe Text)+asCallback+  = lens _asCallback (\ s a -> s{_asCallback = a})++instance GoogleRequest AlbumsShare where+        type Rs AlbumsShare = ShareAlbumResponse+        type Scopes AlbumsShare =+             '["https://www.googleapis.com/auth/photoslibrary.sharing"]+        requestClient AlbumsShare'{..}+          = go _asAlbumId _asXgafv _asUploadProtocol+              (Just _asPp)+              _asAccessToken+              _asUploadType+              _asBearerToken+              _asCallback+              (Just AltJSON)+              _asPayload+              photosLibraryService+          where go+                  = buildClient (Proxy :: Proxy AlbumsShareResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/MediaItems/BatchCreate.hs view
@@ -0,0 +1,185 @@+{-# 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.PhotosLibrary.MediaItems.BatchCreate+-- 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 one or more media items in a user\'s Google Photos library. If+-- an album id is specified, the media item(s) are also added to the album.+-- By default the media item(s) will be added to the end of the library or+-- album. If an album id and position are both defined, then the media+-- items will be added to the album at the specified position. If multiple+-- media items are given, they will be inserted at the specified position.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.mediaItems.batchCreate@.+module Network.Google.Resource.PhotosLibrary.MediaItems.BatchCreate+    (+    -- * REST Resource+      MediaItemsBatchCreateResource++    -- * Creating a Request+    , mediaItemsBatchCreate+    , MediaItemsBatchCreate++    -- * Request Lenses+    , mibcXgafv+    , mibcUploadProtocol+    , mibcPp+    , mibcAccessToken+    , mibcUploadType+    , mibcPayload+    , mibcBearerToken+    , mibcCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.mediaItems.batchCreate@ method which the+-- 'MediaItemsBatchCreate' request conforms to.+type MediaItemsBatchCreateResource =+     "v1" :>+       "mediaItems:batchCreate" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] BatchCreateMediaItemsRequest :>+                           Post '[JSON] BatchCreateMediaItemsResponse++-- | Creates one or more media items in a user\'s Google Photos library. If+-- an album id is specified, the media item(s) are also added to the album.+-- By default the media item(s) will be added to the end of the library or+-- album. If an album id and position are both defined, then the media+-- items will be added to the album at the specified position. If multiple+-- media items are given, they will be inserted at the specified position.+--+-- /See:/ 'mediaItemsBatchCreate' smart constructor.+data MediaItemsBatchCreate = MediaItemsBatchCreate'+    { _mibcXgafv          :: !(Maybe Xgafv)+    , _mibcUploadProtocol :: !(Maybe Text)+    , _mibcPp             :: !Bool+    , _mibcAccessToken    :: !(Maybe Text)+    , _mibcUploadType     :: !(Maybe Text)+    , _mibcPayload        :: !BatchCreateMediaItemsRequest+    , _mibcBearerToken    :: !(Maybe Text)+    , _mibcCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaItemsBatchCreate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mibcXgafv'+--+-- * 'mibcUploadProtocol'+--+-- * 'mibcPp'+--+-- * 'mibcAccessToken'+--+-- * 'mibcUploadType'+--+-- * 'mibcPayload'+--+-- * 'mibcBearerToken'+--+-- * 'mibcCallback'+mediaItemsBatchCreate+    :: BatchCreateMediaItemsRequest -- ^ 'mibcPayload'+    -> MediaItemsBatchCreate+mediaItemsBatchCreate pMibcPayload_ =+    MediaItemsBatchCreate'+    { _mibcXgafv = Nothing+    , _mibcUploadProtocol = Nothing+    , _mibcPp = True+    , _mibcAccessToken = Nothing+    , _mibcUploadType = Nothing+    , _mibcPayload = pMibcPayload_+    , _mibcBearerToken = Nothing+    , _mibcCallback = Nothing+    }++-- | V1 error format.+mibcXgafv :: Lens' MediaItemsBatchCreate (Maybe Xgafv)+mibcXgafv+  = lens _mibcXgafv (\ s a -> s{_mibcXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+mibcUploadProtocol :: Lens' MediaItemsBatchCreate (Maybe Text)+mibcUploadProtocol+  = lens _mibcUploadProtocol+      (\ s a -> s{_mibcUploadProtocol = a})++-- | Pretty-print response.+mibcPp :: Lens' MediaItemsBatchCreate Bool+mibcPp = lens _mibcPp (\ s a -> s{_mibcPp = a})++-- | OAuth access token.+mibcAccessToken :: Lens' MediaItemsBatchCreate (Maybe Text)+mibcAccessToken+  = lens _mibcAccessToken+      (\ s a -> s{_mibcAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+mibcUploadType :: Lens' MediaItemsBatchCreate (Maybe Text)+mibcUploadType+  = lens _mibcUploadType+      (\ s a -> s{_mibcUploadType = a})++-- | Multipart request metadata.+mibcPayload :: Lens' MediaItemsBatchCreate BatchCreateMediaItemsRequest+mibcPayload+  = lens _mibcPayload (\ s a -> s{_mibcPayload = a})++-- | OAuth bearer token.+mibcBearerToken :: Lens' MediaItemsBatchCreate (Maybe Text)+mibcBearerToken+  = lens _mibcBearerToken+      (\ s a -> s{_mibcBearerToken = a})++-- | JSONP+mibcCallback :: Lens' MediaItemsBatchCreate (Maybe Text)+mibcCallback+  = lens _mibcCallback (\ s a -> s{_mibcCallback = a})++instance GoogleRequest MediaItemsBatchCreate where+        type Rs MediaItemsBatchCreate =+             BatchCreateMediaItemsResponse+        type Scopes MediaItemsBatchCreate =+             '["https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.appendonly",+               "https://www.googleapis.com/auth/photoslibrary.sharing"]+        requestClient MediaItemsBatchCreate'{..}+          = go _mibcXgafv _mibcUploadProtocol (Just _mibcPp)+              _mibcAccessToken+              _mibcUploadType+              _mibcBearerToken+              _mibcCallback+              (Just AltJSON)+              _mibcPayload+              photosLibraryService+          where go+                  = buildClient+                      (Proxy :: Proxy MediaItemsBatchCreateResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/MediaItems/Get.hs view
@@ -0,0 +1,173 @@+{-# 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.PhotosLibrary.MediaItems.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 the media item specified based on a given media item id.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.mediaItems.get@.+module Network.Google.Resource.PhotosLibrary.MediaItems.Get+    (+    -- * REST Resource+      MediaItemsGetResource++    -- * Creating a Request+    , mediaItemsGet+    , MediaItemsGet++    -- * Request Lenses+    , migXgafv+    , migUploadProtocol+    , migPp+    , migAccessToken+    , migUploadType+    , migMediaItemId+    , migBearerToken+    , migCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.mediaItems.get@ method which the+-- 'MediaItemsGet' request conforms to.+type MediaItemsGetResource =+     "v1" :>+       "mediaItems" :>+         Capture "mediaItemId" Text :>+           QueryParam "$.xgafv" Xgafv :>+             QueryParam "upload_protocol" Text :>+               QueryParam "pp" Bool :>+                 QueryParam "access_token" Text :>+                   QueryParam "uploadType" Text :>+                     QueryParam "bearer_token" Text :>+                       QueryParam "callback" Text :>+                         QueryParam "alt" AltJSON :> Get '[JSON] MediaItem++-- | Returns the media item specified based on a given media item id.+--+-- /See:/ 'mediaItemsGet' smart constructor.+data MediaItemsGet = MediaItemsGet'+    { _migXgafv          :: !(Maybe Xgafv)+    , _migUploadProtocol :: !(Maybe Text)+    , _migPp             :: !Bool+    , _migAccessToken    :: !(Maybe Text)+    , _migUploadType     :: !(Maybe Text)+    , _migMediaItemId    :: !Text+    , _migBearerToken    :: !(Maybe Text)+    , _migCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaItemsGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'migXgafv'+--+-- * 'migUploadProtocol'+--+-- * 'migPp'+--+-- * 'migAccessToken'+--+-- * 'migUploadType'+--+-- * 'migMediaItemId'+--+-- * 'migBearerToken'+--+-- * 'migCallback'+mediaItemsGet+    :: Text -- ^ 'migMediaItemId'+    -> MediaItemsGet+mediaItemsGet pMigMediaItemId_ =+    MediaItemsGet'+    { _migXgafv = Nothing+    , _migUploadProtocol = Nothing+    , _migPp = True+    , _migAccessToken = Nothing+    , _migUploadType = Nothing+    , _migMediaItemId = pMigMediaItemId_+    , _migBearerToken = Nothing+    , _migCallback = Nothing+    }++-- | V1 error format.+migXgafv :: Lens' MediaItemsGet (Maybe Xgafv)+migXgafv = lens _migXgafv (\ s a -> s{_migXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+migUploadProtocol :: Lens' MediaItemsGet (Maybe Text)+migUploadProtocol+  = lens _migUploadProtocol+      (\ s a -> s{_migUploadProtocol = a})++-- | Pretty-print response.+migPp :: Lens' MediaItemsGet Bool+migPp = lens _migPp (\ s a -> s{_migPp = a})++-- | OAuth access token.+migAccessToken :: Lens' MediaItemsGet (Maybe Text)+migAccessToken+  = lens _migAccessToken+      (\ s a -> s{_migAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+migUploadType :: Lens' MediaItemsGet (Maybe Text)+migUploadType+  = lens _migUploadType+      (\ s a -> s{_migUploadType = a})++-- | Identifier of media item to be requested.+migMediaItemId :: Lens' MediaItemsGet Text+migMediaItemId+  = lens _migMediaItemId+      (\ s a -> s{_migMediaItemId = a})++-- | OAuth bearer token.+migBearerToken :: Lens' MediaItemsGet (Maybe Text)+migBearerToken+  = lens _migBearerToken+      (\ s a -> s{_migBearerToken = a})++-- | JSONP+migCallback :: Lens' MediaItemsGet (Maybe Text)+migCallback+  = lens _migCallback (\ s a -> s{_migCallback = a})++instance GoogleRequest MediaItemsGet where+        type Rs MediaItemsGet = MediaItem+        type Scopes MediaItemsGet =+             '["https://www.googleapis.com/auth/drive.photos.readonly",+               "https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.readonly",+               "https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+        requestClient MediaItemsGet'{..}+          = go _migMediaItemId _migXgafv _migUploadProtocol+              (Just _migPp)+              _migAccessToken+              _migUploadType+              _migBearerToken+              _migCallback+              (Just AltJSON)+              photosLibraryService+          where go+                  = buildClient (Proxy :: Proxy MediaItemsGetResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/MediaItems/Search.hs view
@@ -0,0 +1,184 @@+{-# 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.PhotosLibrary.MediaItems.Search+-- 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)+--+-- Searches for media items in a user\'s Google Photos library. If no+-- filters are set, then all media items in the user\'s library will be+-- returned. If an album is set, all media items in the specified album+-- will be returned. If filters are specified, anything that matches the+-- filters from the user\'s library will be listed. If an album and filters+-- are set, then this will result in an error.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.mediaItems.search@.+module Network.Google.Resource.PhotosLibrary.MediaItems.Search+    (+    -- * REST Resource+      MediaItemsSearchResource++    -- * Creating a Request+    , mediaItemsSearch+    , MediaItemsSearch++    -- * Request Lenses+    , misXgafv+    , misUploadProtocol+    , misPp+    , misAccessToken+    , misUploadType+    , misPayload+    , misBearerToken+    , misCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.mediaItems.search@ method which the+-- 'MediaItemsSearch' request conforms to.+type MediaItemsSearchResource =+     "v1" :>+       "mediaItems:search" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] SearchMediaItemsRequest :>+                           Post '[JSON] SearchMediaItemsResponse++-- | Searches for media items in a user\'s Google Photos library. If no+-- filters are set, then all media items in the user\'s library will be+-- returned. If an album is set, all media items in the specified album+-- will be returned. If filters are specified, anything that matches the+-- filters from the user\'s library will be listed. If an album and filters+-- are set, then this will result in an error.+--+-- /See:/ 'mediaItemsSearch' smart constructor.+data MediaItemsSearch = MediaItemsSearch'+    { _misXgafv          :: !(Maybe Xgafv)+    , _misUploadProtocol :: !(Maybe Text)+    , _misPp             :: !Bool+    , _misAccessToken    :: !(Maybe Text)+    , _misUploadType     :: !(Maybe Text)+    , _misPayload        :: !SearchMediaItemsRequest+    , _misBearerToken    :: !(Maybe Text)+    , _misCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MediaItemsSearch' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'misXgafv'+--+-- * 'misUploadProtocol'+--+-- * 'misPp'+--+-- * 'misAccessToken'+--+-- * 'misUploadType'+--+-- * 'misPayload'+--+-- * 'misBearerToken'+--+-- * 'misCallback'+mediaItemsSearch+    :: SearchMediaItemsRequest -- ^ 'misPayload'+    -> MediaItemsSearch+mediaItemsSearch pMisPayload_ =+    MediaItemsSearch'+    { _misXgafv = Nothing+    , _misUploadProtocol = Nothing+    , _misPp = True+    , _misAccessToken = Nothing+    , _misUploadType = Nothing+    , _misPayload = pMisPayload_+    , _misBearerToken = Nothing+    , _misCallback = Nothing+    }++-- | V1 error format.+misXgafv :: Lens' MediaItemsSearch (Maybe Xgafv)+misXgafv = lens _misXgafv (\ s a -> s{_misXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+misUploadProtocol :: Lens' MediaItemsSearch (Maybe Text)+misUploadProtocol+  = lens _misUploadProtocol+      (\ s a -> s{_misUploadProtocol = a})++-- | Pretty-print response.+misPp :: Lens' MediaItemsSearch Bool+misPp = lens _misPp (\ s a -> s{_misPp = a})++-- | OAuth access token.+misAccessToken :: Lens' MediaItemsSearch (Maybe Text)+misAccessToken+  = lens _misAccessToken+      (\ s a -> s{_misAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+misUploadType :: Lens' MediaItemsSearch (Maybe Text)+misUploadType+  = lens _misUploadType+      (\ s a -> s{_misUploadType = a})++-- | Multipart request metadata.+misPayload :: Lens' MediaItemsSearch SearchMediaItemsRequest+misPayload+  = lens _misPayload (\ s a -> s{_misPayload = a})++-- | OAuth bearer token.+misBearerToken :: Lens' MediaItemsSearch (Maybe Text)+misBearerToken+  = lens _misBearerToken+      (\ s a -> s{_misBearerToken = a})++-- | JSONP+misCallback :: Lens' MediaItemsSearch (Maybe Text)+misCallback+  = lens _misCallback (\ s a -> s{_misCallback = a})++instance GoogleRequest MediaItemsSearch where+        type Rs MediaItemsSearch = SearchMediaItemsResponse+        type Scopes MediaItemsSearch =+             '["https://www.googleapis.com/auth/drive.photos.readonly",+               "https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.readonly",+               "https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+        requestClient MediaItemsSearch'{..}+          = go _misXgafv _misUploadProtocol (Just _misPp)+              _misAccessToken+              _misUploadType+              _misBearerToken+              _misCallback+              (Just AltJSON)+              _misPayload+              photosLibraryService+          where go+                  = buildClient+                      (Proxy :: Proxy MediaItemsSearchResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/SharedAlbums/Join.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.PhotosLibrary.SharedAlbums.Join+-- 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)+--+-- Joins a shared album on behalf of the Google Photos user.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.sharedAlbums.join@.+module Network.Google.Resource.PhotosLibrary.SharedAlbums.Join+    (+    -- * REST Resource+      SharedAlbumsJoinResource++    -- * Creating a Request+    , sharedAlbumsJoin+    , SharedAlbumsJoin++    -- * Request Lenses+    , sajXgafv+    , sajUploadProtocol+    , sajPp+    , sajAccessToken+    , sajUploadType+    , sajPayload+    , sajBearerToken+    , sajCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.sharedAlbums.join@ method which the+-- 'SharedAlbumsJoin' request conforms to.+type SharedAlbumsJoinResource =+     "v1" :>+       "sharedAlbums:join" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "callback" Text :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] JoinSharedAlbumRequest :>+                           Post '[JSON] JoinSharedAlbumResponse++-- | Joins a shared album on behalf of the Google Photos user.+--+-- /See:/ 'sharedAlbumsJoin' smart constructor.+data SharedAlbumsJoin = SharedAlbumsJoin'+    { _sajXgafv          :: !(Maybe Xgafv)+    , _sajUploadProtocol :: !(Maybe Text)+    , _sajPp             :: !Bool+    , _sajAccessToken    :: !(Maybe Text)+    , _sajUploadType     :: !(Maybe Text)+    , _sajPayload        :: !JoinSharedAlbumRequest+    , _sajBearerToken    :: !(Maybe Text)+    , _sajCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SharedAlbumsJoin' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sajXgafv'+--+-- * 'sajUploadProtocol'+--+-- * 'sajPp'+--+-- * 'sajAccessToken'+--+-- * 'sajUploadType'+--+-- * 'sajPayload'+--+-- * 'sajBearerToken'+--+-- * 'sajCallback'+sharedAlbumsJoin+    :: JoinSharedAlbumRequest -- ^ 'sajPayload'+    -> SharedAlbumsJoin+sharedAlbumsJoin pSajPayload_ =+    SharedAlbumsJoin'+    { _sajXgafv = Nothing+    , _sajUploadProtocol = Nothing+    , _sajPp = True+    , _sajAccessToken = Nothing+    , _sajUploadType = Nothing+    , _sajPayload = pSajPayload_+    , _sajBearerToken = Nothing+    , _sajCallback = Nothing+    }++-- | V1 error format.+sajXgafv :: Lens' SharedAlbumsJoin (Maybe Xgafv)+sajXgafv = lens _sajXgafv (\ s a -> s{_sajXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+sajUploadProtocol :: Lens' SharedAlbumsJoin (Maybe Text)+sajUploadProtocol+  = lens _sajUploadProtocol+      (\ s a -> s{_sajUploadProtocol = a})++-- | Pretty-print response.+sajPp :: Lens' SharedAlbumsJoin Bool+sajPp = lens _sajPp (\ s a -> s{_sajPp = a})++-- | OAuth access token.+sajAccessToken :: Lens' SharedAlbumsJoin (Maybe Text)+sajAccessToken+  = lens _sajAccessToken+      (\ s a -> s{_sajAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+sajUploadType :: Lens' SharedAlbumsJoin (Maybe Text)+sajUploadType+  = lens _sajUploadType+      (\ s a -> s{_sajUploadType = a})++-- | Multipart request metadata.+sajPayload :: Lens' SharedAlbumsJoin JoinSharedAlbumRequest+sajPayload+  = lens _sajPayload (\ s a -> s{_sajPayload = a})++-- | OAuth bearer token.+sajBearerToken :: Lens' SharedAlbumsJoin (Maybe Text)+sajBearerToken+  = lens _sajBearerToken+      (\ s a -> s{_sajBearerToken = a})++-- | JSONP+sajCallback :: Lens' SharedAlbumsJoin (Maybe Text)+sajCallback+  = lens _sajCallback (\ s a -> s{_sajCallback = a})++instance GoogleRequest SharedAlbumsJoin where+        type Rs SharedAlbumsJoin = JoinSharedAlbumResponse+        type Scopes SharedAlbumsJoin =+             '["https://www.googleapis.com/auth/photoslibrary.sharing"]+        requestClient SharedAlbumsJoin'{..}+          = go _sajXgafv _sajUploadProtocol (Just _sajPp)+              _sajAccessToken+              _sajUploadType+              _sajBearerToken+              _sajCallback+              (Just AltJSON)+              _sajPayload+              photosLibraryService+          where go+                  = buildClient+                      (Proxy :: Proxy SharedAlbumsJoinResource)+                      mempty
+ gen/Network/Google/Resource/PhotosLibrary/SharedAlbums/List.hs view
@@ -0,0 +1,192 @@+{-# 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.PhotosLibrary.SharedAlbums.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 all shared albums shown to a user in the \'Sharing\' tab of the+-- Google Photos app.+--+-- /See:/ <https://developers.google.com/photos/ Photos Library API Reference> for @photoslibrary.sharedAlbums.list@.+module Network.Google.Resource.PhotosLibrary.SharedAlbums.List+    (+    -- * REST Resource+      SharedAlbumsListResource++    -- * Creating a Request+    , sharedAlbumsList+    , SharedAlbumsList++    -- * Request Lenses+    , salXgafv+    , salUploadProtocol+    , salPp+    , salAccessToken+    , salUploadType+    , salBearerToken+    , salPageToken+    , salPageSize+    , salCallback+    ) where++import           Network.Google.PhotosLibrary.Types+import           Network.Google.Prelude++-- | A resource alias for @photoslibrary.sharedAlbums.list@ method which the+-- 'SharedAlbumsList' request conforms to.+type SharedAlbumsListResource =+     "v1" :>+       "sharedAlbums" :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "pp" Bool :>+               QueryParam "access_token" Text :>+                 QueryParam "uploadType" Text :>+                   QueryParam "bearer_token" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "pageSize" (Textual Int32) :>+                         QueryParam "callback" Text :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] ListSharedAlbumsResponse++-- | Lists all shared albums shown to a user in the \'Sharing\' tab of the+-- Google Photos app.+--+-- /See:/ 'sharedAlbumsList' smart constructor.+data SharedAlbumsList = SharedAlbumsList'+    { _salXgafv          :: !(Maybe Xgafv)+    , _salUploadProtocol :: !(Maybe Text)+    , _salPp             :: !Bool+    , _salAccessToken    :: !(Maybe Text)+    , _salUploadType     :: !(Maybe Text)+    , _salBearerToken    :: !(Maybe Text)+    , _salPageToken      :: !(Maybe Text)+    , _salPageSize       :: !(Maybe (Textual Int32))+    , _salCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SharedAlbumsList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'salXgafv'+--+-- * 'salUploadProtocol'+--+-- * 'salPp'+--+-- * 'salAccessToken'+--+-- * 'salUploadType'+--+-- * 'salBearerToken'+--+-- * 'salPageToken'+--+-- * 'salPageSize'+--+-- * 'salCallback'+sharedAlbumsList+    :: SharedAlbumsList+sharedAlbumsList =+    SharedAlbumsList'+    { _salXgafv = Nothing+    , _salUploadProtocol = Nothing+    , _salPp = True+    , _salAccessToken = Nothing+    , _salUploadType = Nothing+    , _salBearerToken = Nothing+    , _salPageToken = Nothing+    , _salPageSize = Nothing+    , _salCallback = Nothing+    }++-- | V1 error format.+salXgafv :: Lens' SharedAlbumsList (Maybe Xgafv)+salXgafv = lens _salXgafv (\ s a -> s{_salXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+salUploadProtocol :: Lens' SharedAlbumsList (Maybe Text)+salUploadProtocol+  = lens _salUploadProtocol+      (\ s a -> s{_salUploadProtocol = a})++-- | Pretty-print response.+salPp :: Lens' SharedAlbumsList Bool+salPp = lens _salPp (\ s a -> s{_salPp = a})++-- | OAuth access token.+salAccessToken :: Lens' SharedAlbumsList (Maybe Text)+salAccessToken+  = lens _salAccessToken+      (\ s a -> s{_salAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+salUploadType :: Lens' SharedAlbumsList (Maybe Text)+salUploadType+  = lens _salUploadType+      (\ s a -> s{_salUploadType = a})++-- | OAuth bearer token.+salBearerToken :: Lens' SharedAlbumsList (Maybe Text)+salBearerToken+  = lens _salBearerToken+      (\ s a -> s{_salBearerToken = a})++-- | A continuation token to get the next page of the results. Adding this to+-- the request will return the rows after the pageToken. The pageToken+-- should be the value returned in the nextPageToken parameter in the+-- response to the listSharedAlbums request.+salPageToken :: Lens' SharedAlbumsList (Maybe Text)+salPageToken+  = lens _salPageToken (\ s a -> s{_salPageToken = a})++-- | Maximum number of albums to return in the response. The default number+-- of albums to return at a time is 20. The maximum page size is 50.+salPageSize :: Lens' SharedAlbumsList (Maybe Int32)+salPageSize+  = lens _salPageSize (\ s a -> s{_salPageSize = a}) .+      mapping _Coerce++-- | JSONP+salCallback :: Lens' SharedAlbumsList (Maybe Text)+salCallback+  = lens _salCallback (\ s a -> s{_salCallback = a})++instance GoogleRequest SharedAlbumsList where+        type Rs SharedAlbumsList = ListSharedAlbumsResponse+        type Scopes SharedAlbumsList =+             '["https://www.googleapis.com/auth/drive.photos.readonly",+               "https://www.googleapis.com/auth/photoslibrary",+               "https://www.googleapis.com/auth/photoslibrary.readonly",+               "https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata"]+        requestClient SharedAlbumsList'{..}+          = go _salXgafv _salUploadProtocol (Just _salPp)+              _salAccessToken+              _salUploadType+              _salBearerToken+              _salPageToken+              _salPageSize+              _salCallback+              (Just AltJSON)+              photosLibraryService+          where go+                  = buildClient+                      (Proxy :: Proxy SharedAlbumsListResource)+                      mempty
+ gogol-photoslibrary.cabal view
@@ -0,0 +1,55 @@+name:                  gogol-photoslibrary+version:               0.4.0+synopsis:              Google Photos Library 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:+    Manage photos, videos, and albums in Google Photos+    .+    /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.PhotosLibrary+        , Network.Google.PhotosLibrary.Types+        , Network.Google.Resource.PhotosLibrary.Albums.AddEnrichment+        , Network.Google.Resource.PhotosLibrary.Albums.Create+        , Network.Google.Resource.PhotosLibrary.Albums.Get+        , Network.Google.Resource.PhotosLibrary.Albums.List+        , Network.Google.Resource.PhotosLibrary.Albums.Share+        , Network.Google.Resource.PhotosLibrary.MediaItems.BatchCreate+        , Network.Google.Resource.PhotosLibrary.MediaItems.Get+        , Network.Google.Resource.PhotosLibrary.MediaItems.Search+        , Network.Google.Resource.PhotosLibrary.SharedAlbums.Join+        , Network.Google.Resource.PhotosLibrary.SharedAlbums.List++    other-modules:+          Network.Google.PhotosLibrary.Types.Product+        , Network.Google.PhotosLibrary.Types.Sum++    build-depends:+          gogol-core == 0.4.0.*+        , base       >= 4.7 && < 5
+ src/.gitkeep view