packages feed

gogol-books 0.4.0 → 0.5.0

raw patch · 56 files changed

+8739/−8245 lines, 56 filesdep ~gogol-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

+ Network.Google.Books: nTimeToExpireMs :: Lens' Notification (Maybe Int64)
+ Network.Google.Books.Types: nTimeToExpireMs :: Lens' Notification (Maybe Int64)

Files

README.md view
@@ -8,7 +8,7 @@  ## Version -`0.3.0`+`0.5.0`   ## Description
gen/Network/Google/Books.hs view
@@ -462,6 +462,7 @@     , nKind     , nBody     , nCrmExperimentIds+    , nTimeToExpireMs     , nPcampaignId     , nReason     , nIsDocumentMature
gen/Network/Google/Books/Types.hs view
@@ -300,6 +300,7 @@     , nKind     , nBody     , nCrmExperimentIds+    , nTimeToExpireMs     , nPcampaignId     , nReason     , nIsDocumentMature@@ -992,4 +993,4 @@  -- | Manage your books booksScope :: Proxy '["https://www.googleapis.com/auth/books"]-booksScope = Proxy;+booksScope = Proxy
gen/Network/Google/Books/Types/Product.hs view
@@ -22,8044 +22,8371 @@  -- -- /See:/ 'userSettings' smart constructor.-data UserSettings = UserSettings'-    { _usNotification :: !(Maybe UserSettingsNotification)-    , _usKind         :: !Text-    , _usNotesExport  :: !(Maybe UserSettingsNotesExport)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettings' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usNotification'------ * 'usKind'------ * 'usNotesExport'-userSettings-    :: UserSettings-userSettings =-    UserSettings'-    { _usNotification = Nothing-    , _usKind = "books#usersettings"-    , _usNotesExport = Nothing-    }--usNotification :: Lens' UserSettings (Maybe UserSettingsNotification)-usNotification-  = lens _usNotification-      (\ s a -> s{_usNotification = a})---- | Resource type.-usKind :: Lens' UserSettings Text-usKind = lens _usKind (\ s a -> s{_usKind = a})---- | User settings in sub-objects, each for different purposes.-usNotesExport :: Lens' UserSettings (Maybe UserSettingsNotesExport)-usNotesExport-  = lens _usNotesExport-      (\ s a -> s{_usNotesExport = a})--instance FromJSON UserSettings where-        parseJSON-          = withObject "UserSettings"-              (\ o ->-                 UserSettings' <$>-                   (o .:? "notification") <*>-                     (o .:? "kind" .!= "books#usersettings")-                     <*> (o .:? "notesExport"))--instance ToJSON UserSettings where-        toJSON UserSettings'{..}-          = object-              (catMaybes-                 [("notification" .=) <$> _usNotification,-                  Just ("kind" .= _usKind),-                  ("notesExport" .=) <$> _usNotesExport])------- /See:/ 'annotations' smart constructor.-data Annotations = Annotations'-    { _aTotalItems    :: !(Maybe (Textual Int32))-    , _aNextPageToken :: !(Maybe Text)-    , _aKind          :: !Text-    , _aItems         :: !(Maybe [Annotation])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Annotations' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aTotalItems'------ * 'aNextPageToken'------ * 'aKind'------ * 'aItems'-annotations-    :: Annotations-annotations =-    Annotations'-    { _aTotalItems = Nothing-    , _aNextPageToken = Nothing-    , _aKind = "books#annotations"-    , _aItems = Nothing-    }---- | Total number of annotations found. This may be greater than the number--- of notes returned in this response if results have been paginated.-aTotalItems :: Lens' Annotations (Maybe Int32)-aTotalItems-  = lens _aTotalItems (\ s a -> s{_aTotalItems = a}) .-      mapping _Coerce---- | Token to pass in for pagination for the next page. This will not be--- present if this request does not have more results.-aNextPageToken :: Lens' Annotations (Maybe Text)-aNextPageToken-  = lens _aNextPageToken-      (\ s a -> s{_aNextPageToken = a})---- | Resource type.-aKind :: Lens' Annotations Text-aKind = lens _aKind (\ s a -> s{_aKind = a})---- | A list of annotations.-aItems :: Lens' Annotations [Annotation]-aItems-  = lens _aItems (\ s a -> s{_aItems = a}) . _Default .-      _Coerce--instance FromJSON Annotations where-        parseJSON-          = withObject "Annotations"-              (\ o ->-                 Annotations' <$>-                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "books#annotations")-                     <*> (o .:? "items" .!= mempty))--instance ToJSON Annotations where-        toJSON Annotations'{..}-          = object-              (catMaybes-                 [("totalItems" .=) <$> _aTotalItems,-                  ("nextPageToken" .=) <$> _aNextPageToken,-                  Just ("kind" .= _aKind), ("items" .=) <$> _aItems])------- /See:/ 'annotationsData' smart constructor.-data AnnotationsData = AnnotationsData'-    { _adTotalItems    :: !(Maybe (Textual Int32))-    , _adNextPageToken :: !(Maybe Text)-    , _adKind          :: !Text-    , _adItems         :: !(Maybe [AnnotationData])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationsData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adTotalItems'------ * 'adNextPageToken'------ * 'adKind'------ * 'adItems'-annotationsData-    :: AnnotationsData-annotationsData =-    AnnotationsData'-    { _adTotalItems = Nothing-    , _adNextPageToken = Nothing-    , _adKind = "books#annotationsdata"-    , _adItems = Nothing-    }---- | The total number of volume annotations found.-adTotalItems :: Lens' AnnotationsData (Maybe Int32)-adTotalItems-  = lens _adTotalItems (\ s a -> s{_adTotalItems = a})-      . mapping _Coerce---- | Token to pass in for pagination for the next page. This will not be--- present if this request does not have more results.-adNextPageToken :: Lens' AnnotationsData (Maybe Text)-adNextPageToken-  = lens _adNextPageToken-      (\ s a -> s{_adNextPageToken = a})---- | Resource type-adKind :: Lens' AnnotationsData Text-adKind = lens _adKind (\ s a -> s{_adKind = a})---- | A list of Annotation Data.-adItems :: Lens' AnnotationsData [AnnotationData]-adItems-  = lens _adItems (\ s a -> s{_adItems = a}) . _Default-      . _Coerce--instance FromJSON AnnotationsData where-        parseJSON-          = withObject "AnnotationsData"-              (\ o ->-                 AnnotationsData' <$>-                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "books#annotationsdata")-                     <*> (o .:? "items" .!= mempty))--instance ToJSON AnnotationsData where-        toJSON AnnotationsData'{..}-          = object-              (catMaybes-                 [("totalItems" .=) <$> _adTotalItems,-                  ("nextPageToken" .=) <$> _adNextPageToken,-                  Just ("kind" .= _adKind), ("items" .=) <$> _adItems])------- /See:/ 'userSettingsNotificationMoreFromAuthors' smart constructor.-newtype UserSettingsNotificationMoreFromAuthors = UserSettingsNotificationMoreFromAuthors'-    { _usnmfaOptedState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotificationMoreFromAuthors' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnmfaOptedState'-userSettingsNotificationMoreFromAuthors-    :: UserSettingsNotificationMoreFromAuthors-userSettingsNotificationMoreFromAuthors =-    UserSettingsNotificationMoreFromAuthors'-    { _usnmfaOptedState = Nothing-    }--usnmfaOptedState :: Lens' UserSettingsNotificationMoreFromAuthors (Maybe Text)-usnmfaOptedState-  = lens _usnmfaOptedState-      (\ s a -> s{_usnmfaOptedState = a})--instance FromJSON-         UserSettingsNotificationMoreFromAuthors where-        parseJSON-          = withObject-              "UserSettingsNotificationMoreFromAuthors"-              (\ o ->-                 UserSettingsNotificationMoreFromAuthors' <$>-                   (o .:? "opted_state"))--instance ToJSON-         UserSettingsNotificationMoreFromAuthors where-        toJSON UserSettingsNotificationMoreFromAuthors'{..}-          = object-              (catMaybes-                 [("opted_state" .=) <$> _usnmfaOptedState])------- /See:/ 'volumeannotations' smart constructor.-data Volumeannotations = Volumeannotations'-    { _vTotalItems    :: !(Maybe (Textual Int32))-    , _vNextPageToken :: !(Maybe Text)-    , _vKind          :: !Text-    , _vItems         :: !(Maybe [Volumeannotation])-    , _vVersion       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Volumeannotations' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vTotalItems'------ * 'vNextPageToken'------ * 'vKind'------ * 'vItems'------ * 'vVersion'-volumeannotations-    :: Volumeannotations-volumeannotations =-    Volumeannotations'-    { _vTotalItems = Nothing-    , _vNextPageToken = Nothing-    , _vKind = "books#volumeannotations"-    , _vItems = Nothing-    , _vVersion = Nothing-    }---- | The total number of volume annotations found.-vTotalItems :: Lens' Volumeannotations (Maybe Int32)-vTotalItems-  = lens _vTotalItems (\ s a -> s{_vTotalItems = a}) .-      mapping _Coerce---- | Token to pass in for pagination for the next page. This will not be--- present if this request does not have more results.-vNextPageToken :: Lens' Volumeannotations (Maybe Text)-vNextPageToken-  = lens _vNextPageToken-      (\ s a -> s{_vNextPageToken = a})---- | Resource type-vKind :: Lens' Volumeannotations Text-vKind = lens _vKind (\ s a -> s{_vKind = a})---- | A list of volume annotations.-vItems :: Lens' Volumeannotations [Volumeannotation]-vItems-  = lens _vItems (\ s a -> s{_vItems = a}) . _Default .-      _Coerce---- | The version string for all of the volume annotations in this layer (not--- just the ones in this response). Note: the version string doesn\'t apply--- to the annotation data, just the information in this response (e.g. the--- location of annotations in the book).-vVersion :: Lens' Volumeannotations (Maybe Text)-vVersion = lens _vVersion (\ s a -> s{_vVersion = a})--instance FromJSON Volumeannotations where-        parseJSON-          = withObject "Volumeannotations"-              (\ o ->-                 Volumeannotations' <$>-                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "books#volumeannotations")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "version"))--instance ToJSON Volumeannotations where-        toJSON Volumeannotations'{..}-          = object-              (catMaybes-                 [("totalItems" .=) <$> _vTotalItems,-                  ("nextPageToken" .=) <$> _vNextPageToken,-                  Just ("kind" .= _vKind), ("items" .=) <$> _vItems,-                  ("version" .=) <$> _vVersion])---- | Information regarding the source of this review, when the review is not--- from a Google Books user.------ /See:/ 'reviewSource' smart constructor.-data ReviewSource = ReviewSource'-    { _rsExtraDescription :: !(Maybe Text)-    , _rsURL              :: !(Maybe Text)-    , _rsDescription      :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ReviewSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rsExtraDescription'------ * 'rsURL'------ * 'rsDescription'-reviewSource-    :: ReviewSource-reviewSource =-    ReviewSource'-    { _rsExtraDescription = Nothing-    , _rsURL = Nothing-    , _rsDescription = Nothing-    }---- | Extra text about the source of the review.-rsExtraDescription :: Lens' ReviewSource (Maybe Text)-rsExtraDescription-  = lens _rsExtraDescription-      (\ s a -> s{_rsExtraDescription = a})---- | URL of the source of the review.-rsURL :: Lens' ReviewSource (Maybe Text)-rsURL = lens _rsURL (\ s a -> s{_rsURL = a})---- | Name of the source.-rsDescription :: Lens' ReviewSource (Maybe Text)-rsDescription-  = lens _rsDescription-      (\ s a -> s{_rsDescription = a})--instance FromJSON ReviewSource where-        parseJSON-          = withObject "ReviewSource"-              (\ o ->-                 ReviewSource' <$>-                   (o .:? "extraDescription") <*> (o .:? "url") <*>-                     (o .:? "description"))--instance ToJSON ReviewSource where-        toJSON ReviewSource'{..}-          = object-              (catMaybes-                 [("extraDescription" .=) <$> _rsExtraDescription,-                  ("url" .=) <$> _rsURL,-                  ("description" .=) <$> _rsDescription])------- /See:/ 'annotationData' smart constructor.-data AnnotationData = AnnotationData'-    { _annEncodedData    :: !(Maybe Bytes)-    , _annKind           :: !Text-    , _annData           :: !(Maybe JSONValue)-    , _annSelfLink       :: !(Maybe Text)-    , _annAnnotationType :: !(Maybe Text)-    , _annVolumeId       :: !(Maybe Text)-    , _annId             :: !(Maybe Text)-    , _annUpdated        :: !(Maybe DateTime')-    , _annLayerId        :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'annEncodedData'------ * 'annKind'------ * 'annData'------ * 'annSelfLink'------ * 'annAnnotationType'------ * 'annVolumeId'------ * 'annId'------ * 'annUpdated'------ * 'annLayerId'-annotationData-    :: AnnotationData-annotationData =-    AnnotationData'-    { _annEncodedData = Nothing-    , _annKind = "books#annotationdata"-    , _annData = Nothing-    , _annSelfLink = Nothing-    , _annAnnotationType = Nothing-    , _annVolumeId = Nothing-    , _annId = Nothing-    , _annUpdated = Nothing-    , _annLayerId = Nothing-    }---- | Base64 encoded data for this annotation data.-annEncodedData :: Lens' AnnotationData (Maybe ByteString)-annEncodedData-  = lens _annEncodedData-      (\ s a -> s{_annEncodedData = a})-      . mapping _Bytes---- | Resource Type-annKind :: Lens' AnnotationData Text-annKind = lens _annKind (\ s a -> s{_annKind = a})--annData :: Lens' AnnotationData (Maybe JSONValue)-annData = lens _annData (\ s a -> s{_annData = a})---- | URL for this resource. *-annSelfLink :: Lens' AnnotationData (Maybe Text)-annSelfLink-  = lens _annSelfLink (\ s a -> s{_annSelfLink = a})---- | The type of annotation this data is for.-annAnnotationType :: Lens' AnnotationData (Maybe Text)-annAnnotationType-  = lens _annAnnotationType-      (\ s a -> s{_annAnnotationType = a})---- | The volume id for this data. *-annVolumeId :: Lens' AnnotationData (Maybe Text)-annVolumeId-  = lens _annVolumeId (\ s a -> s{_annVolumeId = a})---- | Unique id for this annotation data.-annId :: Lens' AnnotationData (Maybe Text)-annId = lens _annId (\ s a -> s{_annId = a})---- | Timestamp for the last time this data was updated. (RFC 3339 UTC--- date-time format).-annUpdated :: Lens' AnnotationData (Maybe UTCTime)-annUpdated-  = lens _annUpdated (\ s a -> s{_annUpdated = a}) .-      mapping _DateTime---- | The Layer id for this data. *-annLayerId :: Lens' AnnotationData (Maybe Text)-annLayerId-  = lens _annLayerId (\ s a -> s{_annLayerId = a})--instance FromJSON AnnotationData where-        parseJSON-          = withObject "AnnotationData"-              (\ o ->-                 AnnotationData' <$>-                   (o .:? "encoded_data") <*>-                     (o .:? "kind" .!= "books#annotationdata")-                     <*> (o .:? "data")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "annotationType")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "id")-                     <*> (o .:? "updated")-                     <*> (o .:? "layerId"))--instance ToJSON AnnotationData where-        toJSON AnnotationData'{..}-          = object-              (catMaybes-                 [("encoded_data" .=) <$> _annEncodedData,-                  Just ("kind" .= _annKind), ("data" .=) <$> _annData,-                  ("selfLink" .=) <$> _annSelfLink,-                  ("annotationType" .=) <$> _annAnnotationType,-                  ("volumeId" .=) <$> _annVolumeId,-                  ("id" .=) <$> _annId, ("updated" .=) <$> _annUpdated,-                  ("layerId" .=) <$> _annLayerId])------- /See:/ 'volumeannotation' smart constructor.-data Volumeannotation = Volumeannotation'-    { _volSelectedText       :: !(Maybe Text)-    , _volAnnotationDataLink :: !(Maybe Text)-    , _volPageIds            :: !(Maybe [Text])-    , _volKind               :: !Text-    , _volData               :: !(Maybe Text)-    , _volSelfLink           :: !(Maybe Text)-    , _volAnnotationType     :: !(Maybe Text)-    , _volAnnotationDataId   :: !(Maybe Text)-    , _volContentRanges      :: !(Maybe VolumeannotationContentRanges)-    , _volVolumeId           :: !(Maybe Text)-    , _volId                 :: !(Maybe Text)-    , _volDeleted            :: !(Maybe Bool)-    , _volUpdated            :: !(Maybe DateTime')-    , _volLayerId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Volumeannotation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'volSelectedText'------ * 'volAnnotationDataLink'------ * 'volPageIds'------ * 'volKind'------ * 'volData'------ * 'volSelfLink'------ * 'volAnnotationType'------ * 'volAnnotationDataId'------ * 'volContentRanges'------ * 'volVolumeId'------ * 'volId'------ * 'volDeleted'------ * 'volUpdated'------ * 'volLayerId'-volumeannotation-    :: Volumeannotation-volumeannotation =-    Volumeannotation'-    { _volSelectedText = Nothing-    , _volAnnotationDataLink = Nothing-    , _volPageIds = Nothing-    , _volKind = "books#volumeannotation"-    , _volData = Nothing-    , _volSelfLink = Nothing-    , _volAnnotationType = Nothing-    , _volAnnotationDataId = Nothing-    , _volContentRanges = Nothing-    , _volVolumeId = Nothing-    , _volId = Nothing-    , _volDeleted = Nothing-    , _volUpdated = Nothing-    , _volLayerId = Nothing-    }---- | Excerpt from the volume.-volSelectedText :: Lens' Volumeannotation (Maybe Text)-volSelectedText-  = lens _volSelectedText-      (\ s a -> s{_volSelectedText = a})---- | Link to get data for this annotation.-volAnnotationDataLink :: Lens' Volumeannotation (Maybe Text)-volAnnotationDataLink-  = lens _volAnnotationDataLink-      (\ s a -> s{_volAnnotationDataLink = a})---- | Pages the annotation spans.-volPageIds :: Lens' Volumeannotation [Text]-volPageIds-  = lens _volPageIds (\ s a -> s{_volPageIds = a}) .-      _Default-      . _Coerce---- | Resource Type-volKind :: Lens' Volumeannotation Text-volKind = lens _volKind (\ s a -> s{_volKind = a})---- | Data for this annotation.-volData :: Lens' Volumeannotation (Maybe Text)-volData = lens _volData (\ s a -> s{_volData = a})---- | URL to this resource.-volSelfLink :: Lens' Volumeannotation (Maybe Text)-volSelfLink-  = lens _volSelfLink (\ s a -> s{_volSelfLink = a})---- | The type of annotation this is.-volAnnotationType :: Lens' Volumeannotation (Maybe Text)-volAnnotationType-  = lens _volAnnotationType-      (\ s a -> s{_volAnnotationType = a})---- | The annotation data id for this volume annotation.-volAnnotationDataId :: Lens' Volumeannotation (Maybe Text)-volAnnotationDataId-  = lens _volAnnotationDataId-      (\ s a -> s{_volAnnotationDataId = a})---- | The content ranges to identify the selected text.-volContentRanges :: Lens' Volumeannotation (Maybe VolumeannotationContentRanges)-volContentRanges-  = lens _volContentRanges-      (\ s a -> s{_volContentRanges = a})---- | The Volume this annotation is for.-volVolumeId :: Lens' Volumeannotation (Maybe Text)-volVolumeId-  = lens _volVolumeId (\ s a -> s{_volVolumeId = a})---- | Unique id of this volume annotation.-volId :: Lens' Volumeannotation (Maybe Text)-volId = lens _volId (\ s a -> s{_volId = a})---- | Indicates that this annotation is deleted.-volDeleted :: Lens' Volumeannotation (Maybe Bool)-volDeleted-  = lens _volDeleted (\ s a -> s{_volDeleted = a})---- | Timestamp for the last time this anntoation was updated. (RFC 3339 UTC--- date-time format).-volUpdated :: Lens' Volumeannotation (Maybe UTCTime)-volUpdated-  = lens _volUpdated (\ s a -> s{_volUpdated = a}) .-      mapping _DateTime---- | The Layer this annotation is for.-volLayerId :: Lens' Volumeannotation (Maybe Text)-volLayerId-  = lens _volLayerId (\ s a -> s{_volLayerId = a})--instance FromJSON Volumeannotation where-        parseJSON-          = withObject "Volumeannotation"-              (\ o ->-                 Volumeannotation' <$>-                   (o .:? "selectedText") <*>-                     (o .:? "annotationDataLink")-                     <*> (o .:? "pageIds" .!= mempty)-                     <*> (o .:? "kind" .!= "books#volumeannotation")-                     <*> (o .:? "data")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "annotationType")-                     <*> (o .:? "annotationDataId")-                     <*> (o .:? "contentRanges")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "id")-                     <*> (o .:? "deleted")-                     <*> (o .:? "updated")-                     <*> (o .:? "layerId"))--instance ToJSON Volumeannotation where-        toJSON Volumeannotation'{..}-          = object-              (catMaybes-                 [("selectedText" .=) <$> _volSelectedText,-                  ("annotationDataLink" .=) <$> _volAnnotationDataLink,-                  ("pageIds" .=) <$> _volPageIds,-                  Just ("kind" .= _volKind), ("data" .=) <$> _volData,-                  ("selfLink" .=) <$> _volSelfLink,-                  ("annotationType" .=) <$> _volAnnotationType,-                  ("annotationDataId" .=) <$> _volAnnotationDataId,-                  ("contentRanges" .=) <$> _volContentRanges,-                  ("volumeId" .=) <$> _volVolumeId,-                  ("id" .=) <$> _volId, ("deleted" .=) <$> _volDeleted,-                  ("updated" .=) <$> _volUpdated,-                  ("layerId" .=) <$> _volLayerId])------- /See:/ 'booksCloudLoadingResource' smart constructor.-data BooksCloudLoadingResource = BooksCloudLoadingResource'-    { _bclrProcessingState :: !(Maybe Text)-    , _bclrVolumeId        :: !(Maybe Text)-    , _bclrAuthor          :: !(Maybe Text)-    , _bclrTitle           :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BooksCloudLoadingResource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bclrProcessingState'------ * 'bclrVolumeId'------ * 'bclrAuthor'------ * 'bclrTitle'-booksCloudLoadingResource-    :: BooksCloudLoadingResource-booksCloudLoadingResource =-    BooksCloudLoadingResource'-    { _bclrProcessingState = Nothing-    , _bclrVolumeId = Nothing-    , _bclrAuthor = Nothing-    , _bclrTitle = Nothing-    }--bclrProcessingState :: Lens' BooksCloudLoadingResource (Maybe Text)-bclrProcessingState-  = lens _bclrProcessingState-      (\ s a -> s{_bclrProcessingState = a})--bclrVolumeId :: Lens' BooksCloudLoadingResource (Maybe Text)-bclrVolumeId-  = lens _bclrVolumeId (\ s a -> s{_bclrVolumeId = a})--bclrAuthor :: Lens' BooksCloudLoadingResource (Maybe Text)-bclrAuthor-  = lens _bclrAuthor (\ s a -> s{_bclrAuthor = a})--bclrTitle :: Lens' BooksCloudLoadingResource (Maybe Text)-bclrTitle-  = lens _bclrTitle (\ s a -> s{_bclrTitle = a})--instance FromJSON BooksCloudLoadingResource where-        parseJSON-          = withObject "BooksCloudLoadingResource"-              (\ o ->-                 BooksCloudLoadingResource' <$>-                   (o .:? "processingState") <*> (o .:? "volumeId") <*>-                     (o .:? "author")-                     <*> (o .:? "title"))--instance ToJSON BooksCloudLoadingResource where-        toJSON BooksCloudLoadingResource'{..}-          = object-              (catMaybes-                 [("processingState" .=) <$> _bclrProcessingState,-                  ("volumeId" .=) <$> _bclrVolumeId,-                  ("author" .=) <$> _bclrAuthor,-                  ("title" .=) <$> _bclrTitle])------- /See:/ 'volumeseriesInfoVolumeSeriesItemIssueItem' smart constructor.-data VolumeseriesInfoVolumeSeriesItemIssueItem = VolumeseriesInfoVolumeSeriesItemIssueItem'-    { _vivsiiiIssueOrderNumber   :: !(Maybe (Textual Int32))-    , _vivsiiiIssueDisplayNumber :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeseriesInfoVolumeSeriesItemIssueItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vivsiiiIssueOrderNumber'------ * 'vivsiiiIssueDisplayNumber'-volumeseriesInfoVolumeSeriesItemIssueItem-    :: VolumeseriesInfoVolumeSeriesItemIssueItem-volumeseriesInfoVolumeSeriesItemIssueItem =-    VolumeseriesInfoVolumeSeriesItemIssueItem'-    { _vivsiiiIssueOrderNumber = Nothing-    , _vivsiiiIssueDisplayNumber = Nothing-    }--vivsiiiIssueOrderNumber :: Lens' VolumeseriesInfoVolumeSeriesItemIssueItem (Maybe Int32)-vivsiiiIssueOrderNumber-  = lens _vivsiiiIssueOrderNumber-      (\ s a -> s{_vivsiiiIssueOrderNumber = a})-      . mapping _Coerce--vivsiiiIssueDisplayNumber :: Lens' VolumeseriesInfoVolumeSeriesItemIssueItem (Maybe Text)-vivsiiiIssueDisplayNumber-  = lens _vivsiiiIssueDisplayNumber-      (\ s a -> s{_vivsiiiIssueDisplayNumber = a})--instance FromJSON-         VolumeseriesInfoVolumeSeriesItemIssueItem where-        parseJSON-          = withObject-              "VolumeseriesInfoVolumeSeriesItemIssueItem"-              (\ o ->-                 VolumeseriesInfoVolumeSeriesItemIssueItem' <$>-                   (o .:? "issueOrderNumber") <*>-                     (o .:? "issueDisplayNumber"))--instance ToJSON-         VolumeseriesInfoVolumeSeriesItemIssueItem where-        toJSON VolumeseriesInfoVolumeSeriesItemIssueItem'{..}-          = object-              (catMaybes-                 [("issueOrderNumber" .=) <$>-                    _vivsiiiIssueOrderNumber,-                  ("issueDisplayNumber" .=) <$>-                    _vivsiiiIssueDisplayNumber])------- /See:/ 'annotation' smart constructor.-data Annotation = Annotation'-    { _aaSelectedText         :: !(Maybe Text)-    , _aaLayerSummary         :: !(Maybe AnnotationLayerSummary)-    , _aaHighlightStyle       :: !(Maybe Text)-    , _aaClientVersionRanges  :: !(Maybe AnnotationClientVersionRanges)-    , _aaPageIds              :: !(Maybe [Text])-    , _aaKind                 :: !Text-    , _aaData                 :: !(Maybe Text)-    , _aaCreated              :: !(Maybe DateTime')-    , _aaAfterSelectedText    :: !(Maybe Text)-    , _aaSelfLink             :: !(Maybe Text)-    , _aaCurrentVersionRanges :: !(Maybe AnnotationCurrentVersionRanges)-    , _aaVolumeId             :: !(Maybe Text)-    , _aaBeforeSelectedText   :: !(Maybe Text)-    , _aaId                   :: !(Maybe Text)-    , _aaDeleted              :: !(Maybe Bool)-    , _aaUpdated              :: !(Maybe DateTime')-    , _aaLayerId              :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Annotation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aaSelectedText'------ * 'aaLayerSummary'------ * 'aaHighlightStyle'------ * 'aaClientVersionRanges'------ * 'aaPageIds'------ * 'aaKind'------ * 'aaData'------ * 'aaCreated'------ * 'aaAfterSelectedText'------ * 'aaSelfLink'------ * 'aaCurrentVersionRanges'------ * 'aaVolumeId'------ * 'aaBeforeSelectedText'------ * 'aaId'------ * 'aaDeleted'------ * 'aaUpdated'------ * 'aaLayerId'-annotation-    :: Annotation-annotation =-    Annotation'-    { _aaSelectedText = Nothing-    , _aaLayerSummary = Nothing-    , _aaHighlightStyle = Nothing-    , _aaClientVersionRanges = Nothing-    , _aaPageIds = Nothing-    , _aaKind = "books#annotation"-    , _aaData = Nothing-    , _aaCreated = Nothing-    , _aaAfterSelectedText = Nothing-    , _aaSelfLink = Nothing-    , _aaCurrentVersionRanges = Nothing-    , _aaVolumeId = Nothing-    , _aaBeforeSelectedText = Nothing-    , _aaId = Nothing-    , _aaDeleted = Nothing-    , _aaUpdated = Nothing-    , _aaLayerId = Nothing-    }---- | Excerpt from the volume.-aaSelectedText :: Lens' Annotation (Maybe Text)-aaSelectedText-  = lens _aaSelectedText-      (\ s a -> s{_aaSelectedText = a})--aaLayerSummary :: Lens' Annotation (Maybe AnnotationLayerSummary)-aaLayerSummary-  = lens _aaLayerSummary-      (\ s a -> s{_aaLayerSummary = a})---- | The highlight style for this annotation.-aaHighlightStyle :: Lens' Annotation (Maybe Text)-aaHighlightStyle-  = lens _aaHighlightStyle-      (\ s a -> s{_aaHighlightStyle = a})---- | Selection ranges sent from the client.-aaClientVersionRanges :: Lens' Annotation (Maybe AnnotationClientVersionRanges)-aaClientVersionRanges-  = lens _aaClientVersionRanges-      (\ s a -> s{_aaClientVersionRanges = a})---- | Pages that this annotation spans.-aaPageIds :: Lens' Annotation [Text]-aaPageIds-  = lens _aaPageIds (\ s a -> s{_aaPageIds = a}) .-      _Default-      . _Coerce---- | Resource type.-aaKind :: Lens' Annotation Text-aaKind = lens _aaKind (\ s a -> s{_aaKind = a})---- | User-created data for this annotation.-aaData :: Lens' Annotation (Maybe Text)-aaData = lens _aaData (\ s a -> s{_aaData = a})---- | Timestamp for the created time of this annotation.-aaCreated :: Lens' Annotation (Maybe UTCTime)-aaCreated-  = lens _aaCreated (\ s a -> s{_aaCreated = a}) .-      mapping _DateTime---- | Anchor text after excerpt. For requests, if the user bookmarked a screen--- that has no flowing text on it, then this field should be empty.-aaAfterSelectedText :: Lens' Annotation (Maybe Text)-aaAfterSelectedText-  = lens _aaAfterSelectedText-      (\ s a -> s{_aaAfterSelectedText = a})---- | URL to this resource.-aaSelfLink :: Lens' Annotation (Maybe Text)-aaSelfLink-  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})---- | Selection ranges for the most recent content version.-aaCurrentVersionRanges :: Lens' Annotation (Maybe AnnotationCurrentVersionRanges)-aaCurrentVersionRanges-  = lens _aaCurrentVersionRanges-      (\ s a -> s{_aaCurrentVersionRanges = a})---- | The volume that this annotation belongs to.-aaVolumeId :: Lens' Annotation (Maybe Text)-aaVolumeId-  = lens _aaVolumeId (\ s a -> s{_aaVolumeId = a})---- | Anchor text before excerpt. For requests, if the user bookmarked a--- screen that has no flowing text on it, then this field should be empty.-aaBeforeSelectedText :: Lens' Annotation (Maybe Text)-aaBeforeSelectedText-  = lens _aaBeforeSelectedText-      (\ s a -> s{_aaBeforeSelectedText = a})---- | Id of this annotation, in the form of a GUID.-aaId :: Lens' Annotation (Maybe Text)-aaId = lens _aaId (\ s a -> s{_aaId = a})---- | Indicates that this annotation is deleted.-aaDeleted :: Lens' Annotation (Maybe Bool)-aaDeleted-  = lens _aaDeleted (\ s a -> s{_aaDeleted = a})---- | Timestamp for the last time this annotation was modified.-aaUpdated :: Lens' Annotation (Maybe UTCTime)-aaUpdated-  = lens _aaUpdated (\ s a -> s{_aaUpdated = a}) .-      mapping _DateTime---- | The layer this annotation is for.-aaLayerId :: Lens' Annotation (Maybe Text)-aaLayerId-  = lens _aaLayerId (\ s a -> s{_aaLayerId = a})--instance FromJSON Annotation where-        parseJSON-          = withObject "Annotation"-              (\ o ->-                 Annotation' <$>-                   (o .:? "selectedText") <*> (o .:? "layerSummary") <*>-                     (o .:? "highlightStyle")-                     <*> (o .:? "clientVersionRanges")-                     <*> (o .:? "pageIds" .!= mempty)-                     <*> (o .:? "kind" .!= "books#annotation")-                     <*> (o .:? "data")-                     <*> (o .:? "created")-                     <*> (o .:? "afterSelectedText")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "currentVersionRanges")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "beforeSelectedText")-                     <*> (o .:? "id")-                     <*> (o .:? "deleted")-                     <*> (o .:? "updated")-                     <*> (o .:? "layerId"))--instance ToJSON Annotation where-        toJSON Annotation'{..}-          = object-              (catMaybes-                 [("selectedText" .=) <$> _aaSelectedText,-                  ("layerSummary" .=) <$> _aaLayerSummary,-                  ("highlightStyle" .=) <$> _aaHighlightStyle,-                  ("clientVersionRanges" .=) <$>-                    _aaClientVersionRanges,-                  ("pageIds" .=) <$> _aaPageIds,-                  Just ("kind" .= _aaKind), ("data" .=) <$> _aaData,-                  ("created" .=) <$> _aaCreated,-                  ("afterSelectedText" .=) <$> _aaAfterSelectedText,-                  ("selfLink" .=) <$> _aaSelfLink,-                  ("currentVersionRanges" .=) <$>-                    _aaCurrentVersionRanges,-                  ("volumeId" .=) <$> _aaVolumeId,-                  ("beforeSelectedText" .=) <$> _aaBeforeSelectedText,-                  ("id" .=) <$> _aaId, ("deleted" .=) <$> _aaDeleted,-                  ("updated" .=) <$> _aaUpdated,-                  ("layerId" .=) <$> _aaLayerId])---- | Author of this review.------ /See:/ 'reviewAuthor' smart constructor.-newtype ReviewAuthor = ReviewAuthor'-    { _raDisplayName :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ReviewAuthor' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'raDisplayName'-reviewAuthor-    :: ReviewAuthor-reviewAuthor =-    ReviewAuthor'-    { _raDisplayName = Nothing-    }---- | Name of this person.-raDisplayName :: Lens' ReviewAuthor (Maybe Text)-raDisplayName-  = lens _raDisplayName-      (\ s a -> s{_raDisplayName = a})--instance FromJSON ReviewAuthor where-        parseJSON-          = withObject "ReviewAuthor"-              (\ o -> ReviewAuthor' <$> (o .:? "displayName"))--instance ToJSON ReviewAuthor where-        toJSON ReviewAuthor'{..}-          = object-              (catMaybes [("displayName" .=) <$> _raDisplayName])---- | The viewport for showing this location. This is a latitude, longitude--- rectangle.------ /See:/ 'geolayerDataGeoViewport' smart constructor.-data GeolayerDataGeoViewport = GeolayerDataGeoViewport'-    { _gdgvHi :: !(Maybe GeolayerDataGeoViewportHi)-    , _gdgvLo :: !(Maybe GeolayerDataGeoViewportLo)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataGeoViewport' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdgvHi'------ * 'gdgvLo'-geolayerDataGeoViewport-    :: GeolayerDataGeoViewport-geolayerDataGeoViewport =-    GeolayerDataGeoViewport'-    { _gdgvHi = Nothing-    , _gdgvLo = Nothing-    }--gdgvHi :: Lens' GeolayerDataGeoViewport (Maybe GeolayerDataGeoViewportHi)-gdgvHi = lens _gdgvHi (\ s a -> s{_gdgvHi = a})--gdgvLo :: Lens' GeolayerDataGeoViewport (Maybe GeolayerDataGeoViewportLo)-gdgvLo = lens _gdgvLo (\ s a -> s{_gdgvLo = a})--instance FromJSON GeolayerDataGeoViewport where-        parseJSON-          = withObject "GeolayerDataGeoViewport"-              (\ o ->-                 GeolayerDataGeoViewport' <$>-                   (o .:? "hi") <*> (o .:? "lo"))--instance ToJSON GeolayerDataGeoViewport where-        toJSON GeolayerDataGeoViewport'{..}-          = object-              (catMaybes-                 [("hi" .=) <$> _gdgvHi, ("lo" .=) <$> _gdgvLo])---- | User specific information related to this volume. (e.g. page this user--- last read or whether they purchased this book)------ /See:/ 'volumeUserInfo' smart constructor.-data VolumeUserInfo = VolumeUserInfo'-    { _vuiIsFamilySharingAllowed       :: !(Maybe Bool)-    , _vuiIsFamilySharedToUser         :: !(Maybe Bool)-    , _vuiCopy                         :: !(Maybe VolumeUserInfoCopy)-    , _vuiUserUploadedVolumeInfo       :: !(Maybe VolumeUserInfoUserUploadedVolumeInfo)-    , _vuiIsPurchased                  :: !(Maybe Bool)-    , _vuiEntitlementType              :: !(Maybe (Textual Int32))-    , _vuiAcquisitionType              :: !(Maybe (Textual Int32))-    , _vuiAcquiredTime                 :: !(Maybe DateTime')-    , _vuiRentalState                  :: !(Maybe Text)-    , _vuiIsPreOrdered                 :: !(Maybe Bool)-    , _vuiReview                       :: !(Maybe Review)-    , _vuiIsFamilySharedFromUser       :: !(Maybe Bool)-    , _vuiRentalPeriod                 :: !(Maybe VolumeUserInfoRentalPeriod)-    , _vuiUpdated                      :: !(Maybe DateTime')-    , _vuiIsUploaded                   :: !(Maybe Bool)-    , _vuiIsInMyBooks                  :: !(Maybe Bool)-    , _vuiReadingPosition              :: !(Maybe ReadingPosition)-    , _vuiFamilySharing                :: !(Maybe VolumeUserInfoFamilySharing)-    , _vuiIsFamilySharingDisabledByFop :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeUserInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vuiIsFamilySharingAllowed'------ * 'vuiIsFamilySharedToUser'------ * 'vuiCopy'------ * 'vuiUserUploadedVolumeInfo'------ * 'vuiIsPurchased'------ * 'vuiEntitlementType'------ * 'vuiAcquisitionType'------ * 'vuiAcquiredTime'------ * 'vuiRentalState'------ * 'vuiIsPreOrdered'------ * 'vuiReview'------ * 'vuiIsFamilySharedFromUser'------ * 'vuiRentalPeriod'------ * 'vuiUpdated'------ * 'vuiIsUploaded'------ * 'vuiIsInMyBooks'------ * 'vuiReadingPosition'------ * 'vuiFamilySharing'------ * 'vuiIsFamilySharingDisabledByFop'-volumeUserInfo-    :: VolumeUserInfo-volumeUserInfo =-    VolumeUserInfo'-    { _vuiIsFamilySharingAllowed = Nothing-    , _vuiIsFamilySharedToUser = Nothing-    , _vuiCopy = Nothing-    , _vuiUserUploadedVolumeInfo = Nothing-    , _vuiIsPurchased = Nothing-    , _vuiEntitlementType = Nothing-    , _vuiAcquisitionType = Nothing-    , _vuiAcquiredTime = Nothing-    , _vuiRentalState = Nothing-    , _vuiIsPreOrdered = Nothing-    , _vuiReview = Nothing-    , _vuiIsFamilySharedFromUser = Nothing-    , _vuiRentalPeriod = Nothing-    , _vuiUpdated = Nothing-    , _vuiIsUploaded = Nothing-    , _vuiIsInMyBooks = Nothing-    , _vuiReadingPosition = Nothing-    , _vuiFamilySharing = Nothing-    , _vuiIsFamilySharingDisabledByFop = Nothing-    }---- | Deprecated: Replaced by familySharing.-vuiIsFamilySharingAllowed :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsFamilySharingAllowed-  = lens _vuiIsFamilySharingAllowed-      (\ s a -> s{_vuiIsFamilySharingAllowed = a})---- | Whether or not the user received this volume through family sharing.-vuiIsFamilySharedToUser :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsFamilySharedToUser-  = lens _vuiIsFamilySharedToUser-      (\ s a -> s{_vuiIsFamilySharedToUser = a})---- | Copy\/Paste accounting information.-vuiCopy :: Lens' VolumeUserInfo (Maybe VolumeUserInfoCopy)-vuiCopy = lens _vuiCopy (\ s a -> s{_vuiCopy = a})--vuiUserUploadedVolumeInfo :: Lens' VolumeUserInfo (Maybe VolumeUserInfoUserUploadedVolumeInfo)-vuiUserUploadedVolumeInfo-  = lens _vuiUserUploadedVolumeInfo-      (\ s a -> s{_vuiUserUploadedVolumeInfo = a})---- | Whether or not this volume was purchased by the authenticated user--- making the request. (In LITE projection.)-vuiIsPurchased :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsPurchased-  = lens _vuiIsPurchased-      (\ s a -> s{_vuiIsPurchased = a})---- | Whether this volume is purchased, sample, pd download etc.-vuiEntitlementType :: Lens' VolumeUserInfo (Maybe Int32)-vuiEntitlementType-  = lens _vuiEntitlementType-      (\ s a -> s{_vuiEntitlementType = a})-      . mapping _Coerce---- | How this volume was acquired.-vuiAcquisitionType :: Lens' VolumeUserInfo (Maybe Int32)-vuiAcquisitionType-  = lens _vuiAcquisitionType-      (\ s a -> s{_vuiAcquisitionType = a})-      . mapping _Coerce---- | Timestamp when this volume was acquired by the user. (RFC 3339 UTC--- date-time format) Acquiring includes purchase, user upload, receiving--- family sharing, etc.-vuiAcquiredTime :: Lens' VolumeUserInfo (Maybe UTCTime)-vuiAcquiredTime-  = lens _vuiAcquiredTime-      (\ s a -> s{_vuiAcquiredTime = a})-      . mapping _DateTime---- | Whether this book is an active or an expired rental.-vuiRentalState :: Lens' VolumeUserInfo (Maybe Text)-vuiRentalState-  = lens _vuiRentalState-      (\ s a -> s{_vuiRentalState = a})---- | Whether or not this volume was pre-ordered by the authenticated user--- making the request. (In LITE projection.)-vuiIsPreOrdered :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsPreOrdered-  = lens _vuiIsPreOrdered-      (\ s a -> s{_vuiIsPreOrdered = a})---- | This user\'s review of this volume, if one exists.-vuiReview :: Lens' VolumeUserInfo (Maybe Review)-vuiReview-  = lens _vuiReview (\ s a -> s{_vuiReview = a})---- | Whether or not the user shared this volume with the family.-vuiIsFamilySharedFromUser :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsFamilySharedFromUser-  = lens _vuiIsFamilySharedFromUser-      (\ s a -> s{_vuiIsFamilySharedFromUser = a})---- | Period during this book is\/was a valid rental.-vuiRentalPeriod :: Lens' VolumeUserInfo (Maybe VolumeUserInfoRentalPeriod)-vuiRentalPeriod-  = lens _vuiRentalPeriod-      (\ s a -> s{_vuiRentalPeriod = a})---- | Timestamp when this volume was last modified by a user action, such as a--- reading position update, volume purchase or writing a review. (RFC 3339--- UTC date-time format).-vuiUpdated :: Lens' VolumeUserInfo (Maybe UTCTime)-vuiUpdated-  = lens _vuiUpdated (\ s a -> s{_vuiUpdated = a}) .-      mapping _DateTime---- | Whether or not this volume was user uploaded.-vuiIsUploaded :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsUploaded-  = lens _vuiIsUploaded-      (\ s a -> s{_vuiIsUploaded = a})---- | Whether or not this volume is currently in \"my books.\"-vuiIsInMyBooks :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsInMyBooks-  = lens _vuiIsInMyBooks-      (\ s a -> s{_vuiIsInMyBooks = a})---- | The user\'s current reading position in the volume, if one is available.--- (In LITE projection.)-vuiReadingPosition :: Lens' VolumeUserInfo (Maybe ReadingPosition)-vuiReadingPosition-  = lens _vuiReadingPosition-      (\ s a -> s{_vuiReadingPosition = a})---- | Information on the ability to share with the family.-vuiFamilySharing :: Lens' VolumeUserInfo (Maybe VolumeUserInfoFamilySharing)-vuiFamilySharing-  = lens _vuiFamilySharing-      (\ s a -> s{_vuiFamilySharing = a})---- | Deprecated: Replaced by familySharing.-vuiIsFamilySharingDisabledByFop :: Lens' VolumeUserInfo (Maybe Bool)-vuiIsFamilySharingDisabledByFop-  = lens _vuiIsFamilySharingDisabledByFop-      (\ s a -> s{_vuiIsFamilySharingDisabledByFop = a})--instance FromJSON VolumeUserInfo where-        parseJSON-          = withObject "VolumeUserInfo"-              (\ o ->-                 VolumeUserInfo' <$>-                   (o .:? "isFamilySharingAllowed") <*>-                     (o .:? "isFamilySharedToUser")-                     <*> (o .:? "copy")-                     <*> (o .:? "userUploadedVolumeInfo")-                     <*> (o .:? "isPurchased")-                     <*> (o .:? "entitlementType")-                     <*> (o .:? "acquisitionType")-                     <*> (o .:? "acquiredTime")-                     <*> (o .:? "rentalState")-                     <*> (o .:? "isPreordered")-                     <*> (o .:? "review")-                     <*> (o .:? "isFamilySharedFromUser")-                     <*> (o .:? "rentalPeriod")-                     <*> (o .:? "updated")-                     <*> (o .:? "isUploaded")-                     <*> (o .:? "isInMyBooks")-                     <*> (o .:? "readingPosition")-                     <*> (o .:? "familySharing")-                     <*> (o .:? "isFamilySharingDisabledByFop"))--instance ToJSON VolumeUserInfo where-        toJSON VolumeUserInfo'{..}-          = object-              (catMaybes-                 [("isFamilySharingAllowed" .=) <$>-                    _vuiIsFamilySharingAllowed,-                  ("isFamilySharedToUser" .=) <$>-                    _vuiIsFamilySharedToUser,-                  ("copy" .=) <$> _vuiCopy,-                  ("userUploadedVolumeInfo" .=) <$>-                    _vuiUserUploadedVolumeInfo,-                  ("isPurchased" .=) <$> _vuiIsPurchased,-                  ("entitlementType" .=) <$> _vuiEntitlementType,-                  ("acquisitionType" .=) <$> _vuiAcquisitionType,-                  ("acquiredTime" .=) <$> _vuiAcquiredTime,-                  ("rentalState" .=) <$> _vuiRentalState,-                  ("isPreordered" .=) <$> _vuiIsPreOrdered,-                  ("review" .=) <$> _vuiReview,-                  ("isFamilySharedFromUser" .=) <$>-                    _vuiIsFamilySharedFromUser,-                  ("rentalPeriod" .=) <$> _vuiRentalPeriod,-                  ("updated" .=) <$> _vuiUpdated,-                  ("isUploaded" .=) <$> _vuiIsUploaded,-                  ("isInMyBooks" .=) <$> _vuiIsInMyBooks,-                  ("readingPosition" .=) <$> _vuiReadingPosition,-                  ("familySharing" .=) <$> _vuiFamilySharing,-                  ("isFamilySharingDisabledByFop" .=) <$>-                    _vuiIsFamilySharingDisabledByFop])------- /See:/ 'layersummary' smart constructor.-data Layersummary = Layersummary'-    { _lAnnotationsDataLink      :: !(Maybe Text)-    , _lAnnotationsLink          :: !(Maybe Text)-    , _lKind                     :: !Text-    , _lDataCount                :: !(Maybe (Textual Int32))-    , _lContentVersion           :: !(Maybe Text)-    , _lVolumeAnnotationsVersion :: !(Maybe Text)-    , _lAnnotationCount          :: !(Maybe (Textual Int32))-    , _lAnnotationTypes          :: !(Maybe [Text])-    , _lSelfLink                 :: !(Maybe Text)-    , _lVolumeId                 :: !(Maybe Text)-    , _lId                       :: !(Maybe Text)-    , _lUpdated                  :: !(Maybe DateTime')-    , _lLayerId                  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Layersummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'lAnnotationsDataLink'------ * 'lAnnotationsLink'------ * 'lKind'------ * 'lDataCount'------ * 'lContentVersion'------ * 'lVolumeAnnotationsVersion'------ * 'lAnnotationCount'------ * 'lAnnotationTypes'------ * 'lSelfLink'------ * 'lVolumeId'------ * 'lId'------ * 'lUpdated'------ * 'lLayerId'-layersummary-    :: Layersummary-layersummary =-    Layersummary'-    { _lAnnotationsDataLink = Nothing-    , _lAnnotationsLink = Nothing-    , _lKind = "books#layersummary"-    , _lDataCount = Nothing-    , _lContentVersion = Nothing-    , _lVolumeAnnotationsVersion = Nothing-    , _lAnnotationCount = Nothing-    , _lAnnotationTypes = Nothing-    , _lSelfLink = Nothing-    , _lVolumeId = Nothing-    , _lId = Nothing-    , _lUpdated = Nothing-    , _lLayerId = Nothing-    }---- | Link to get data for this annotation.-lAnnotationsDataLink :: Lens' Layersummary (Maybe Text)-lAnnotationsDataLink-  = lens _lAnnotationsDataLink-      (\ s a -> s{_lAnnotationsDataLink = a})---- | The link to get the annotations for this layer.-lAnnotationsLink :: Lens' Layersummary (Maybe Text)-lAnnotationsLink-  = lens _lAnnotationsLink-      (\ s a -> s{_lAnnotationsLink = a})---- | Resource Type-lKind :: Lens' Layersummary Text-lKind = lens _lKind (\ s a -> s{_lKind = a})---- | The number of data items for this layer.-lDataCount :: Lens' Layersummary (Maybe Int32)-lDataCount-  = lens _lDataCount (\ s a -> s{_lDataCount = a}) .-      mapping _Coerce---- | The content version this resource is for.-lContentVersion :: Lens' Layersummary (Maybe Text)-lContentVersion-  = lens _lContentVersion-      (\ s a -> s{_lContentVersion = a})---- | The current version of this layer\'s volume annotations. Note that this--- version applies only to the data in the books.layers.volumeAnnotations.*--- responses. The actual annotation data is versioned separately.-lVolumeAnnotationsVersion :: Lens' Layersummary (Maybe Text)-lVolumeAnnotationsVersion-  = lens _lVolumeAnnotationsVersion-      (\ s a -> s{_lVolumeAnnotationsVersion = a})---- | The number of annotations for this layer.-lAnnotationCount :: Lens' Layersummary (Maybe Int32)-lAnnotationCount-  = lens _lAnnotationCount-      (\ s a -> s{_lAnnotationCount = a})-      . mapping _Coerce---- | The list of annotation types contained for this layer.-lAnnotationTypes :: Lens' Layersummary [Text]-lAnnotationTypes-  = lens _lAnnotationTypes-      (\ s a -> s{_lAnnotationTypes = a})-      . _Default-      . _Coerce---- | URL to this resource.-lSelfLink :: Lens' Layersummary (Maybe Text)-lSelfLink-  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})---- | The volume id this resource is for.-lVolumeId :: Lens' Layersummary (Maybe Text)-lVolumeId-  = lens _lVolumeId (\ s a -> s{_lVolumeId = a})---- | Unique id of this layer summary.-lId :: Lens' Layersummary (Maybe Text)-lId = lens _lId (\ s a -> s{_lId = a})---- | Timestamp for the last time an item in this layer was updated. (RFC 3339--- UTC date-time format).-lUpdated :: Lens' Layersummary (Maybe UTCTime)-lUpdated-  = lens _lUpdated (\ s a -> s{_lUpdated = a}) .-      mapping _DateTime---- | The layer id for this summary.-lLayerId :: Lens' Layersummary (Maybe Text)-lLayerId = lens _lLayerId (\ s a -> s{_lLayerId = a})--instance FromJSON Layersummary where-        parseJSON-          = withObject "Layersummary"-              (\ o ->-                 Layersummary' <$>-                   (o .:? "annotationsDataLink") <*>-                     (o .:? "annotationsLink")-                     <*> (o .:? "kind" .!= "books#layersummary")-                     <*> (o .:? "dataCount")-                     <*> (o .:? "contentVersion")-                     <*> (o .:? "volumeAnnotationsVersion")-                     <*> (o .:? "annotationCount")-                     <*> (o .:? "annotationTypes" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "id")-                     <*> (o .:? "updated")-                     <*> (o .:? "layerId"))--instance ToJSON Layersummary where-        toJSON Layersummary'{..}-          = object-              (catMaybes-                 [("annotationsDataLink" .=) <$>-                    _lAnnotationsDataLink,-                  ("annotationsLink" .=) <$> _lAnnotationsLink,-                  Just ("kind" .= _lKind),-                  ("dataCount" .=) <$> _lDataCount,-                  ("contentVersion" .=) <$> _lContentVersion,-                  ("volumeAnnotationsVersion" .=) <$>-                    _lVolumeAnnotationsVersion,-                  ("annotationCount" .=) <$> _lAnnotationCount,-                  ("annotationTypes" .=) <$> _lAnnotationTypes,-                  ("selfLink" .=) <$> _lSelfLink,-                  ("volumeId" .=) <$> _lVolumeId, ("id" .=) <$> _lId,-                  ("updated" .=) <$> _lUpdated,-                  ("layerId" .=) <$> _lLayerId])---- | The content ranges to identify the selected text.------ /See:/ 'volumeannotationContentRanges' smart constructor.-data VolumeannotationContentRanges = VolumeannotationContentRanges'-    { _vcrGbImageRange   :: !(Maybe BooksAnnotationsRange)-    , _vcrContentVersion :: !(Maybe Text)-    , _vcrGbTextRange    :: !(Maybe BooksAnnotationsRange)-    , _vcrCfiRange       :: !(Maybe BooksAnnotationsRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeannotationContentRanges' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vcrGbImageRange'------ * 'vcrContentVersion'------ * 'vcrGbTextRange'------ * 'vcrCfiRange'-volumeannotationContentRanges-    :: VolumeannotationContentRanges-volumeannotationContentRanges =-    VolumeannotationContentRanges'-    { _vcrGbImageRange = Nothing-    , _vcrContentVersion = Nothing-    , _vcrGbTextRange = Nothing-    , _vcrCfiRange = Nothing-    }---- | Range in GB image format for this annotation for version above.-vcrGbImageRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)-vcrGbImageRange-  = lens _vcrGbImageRange-      (\ s a -> s{_vcrGbImageRange = a})---- | Content version applicable to ranges below.-vcrContentVersion :: Lens' VolumeannotationContentRanges (Maybe Text)-vcrContentVersion-  = lens _vcrContentVersion-      (\ s a -> s{_vcrContentVersion = a})---- | Range in GB text format for this annotation for version above.-vcrGbTextRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)-vcrGbTextRange-  = lens _vcrGbTextRange-      (\ s a -> s{_vcrGbTextRange = a})---- | Range in CFI format for this annotation for version above.-vcrCfiRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)-vcrCfiRange-  = lens _vcrCfiRange (\ s a -> s{_vcrCfiRange = a})--instance FromJSON VolumeannotationContentRanges where-        parseJSON-          = withObject "VolumeannotationContentRanges"-              (\ o ->-                 VolumeannotationContentRanges' <$>-                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")-                     <*> (o .:? "gbTextRange")-                     <*> (o .:? "cfiRange"))--instance ToJSON VolumeannotationContentRanges where-        toJSON VolumeannotationContentRanges'{..}-          = object-              (catMaybes-                 [("gbImageRange" .=) <$> _vcrGbImageRange,-                  ("contentVersion" .=) <$> _vcrContentVersion,-                  ("gbTextRange" .=) <$> _vcrGbTextRange,-                  ("cfiRange" .=) <$> _vcrCfiRange])---- | Any information about a volume related to reading or obtaining that--- volume text. This information can depend on country (books may be public--- domain in one country but not in another, e.g.).------ /See:/ 'volumeAccessInfo' smart constructor.-data VolumeAccessInfo = VolumeAccessInfo'-    { _vaiWebReaderLink                    :: !(Maybe Text)-    , _vaiCountry                          :: !(Maybe Text)-    , _vaiDriveImportedContentLink         :: !(Maybe Text)-    , _vaiExplicitOfflineLicenseManagement :: !(Maybe Bool)-    , _vaiViewability                      :: !(Maybe Text)-    , _vaiQuoteSharingAllowed              :: !(Maybe Bool)-    , _vaiEpub                             :: !(Maybe VolumeAccessInfoEpub)-    , _vaiPdf                              :: !(Maybe VolumeAccessInfoPdf)-    , _vaiTextToSpeechPermission           :: !(Maybe Text)-    , _vaiEmbeddable                       :: !(Maybe Bool)-    , _vaiAccessViewStatus                 :: !(Maybe Text)-    , _vaiDownloadAccess                   :: !(Maybe DownloadAccessRestriction)-    , _vaiViewOrderURL                     :: !(Maybe Text)-    , _vaiPublicDomain                     :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeAccessInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vaiWebReaderLink'------ * 'vaiCountry'------ * 'vaiDriveImportedContentLink'------ * 'vaiExplicitOfflineLicenseManagement'------ * 'vaiViewability'------ * 'vaiQuoteSharingAllowed'------ * 'vaiEpub'------ * 'vaiPdf'------ * 'vaiTextToSpeechPermission'------ * 'vaiEmbeddable'------ * 'vaiAccessViewStatus'------ * 'vaiDownloadAccess'------ * 'vaiViewOrderURL'------ * 'vaiPublicDomain'-volumeAccessInfo-    :: VolumeAccessInfo-volumeAccessInfo =-    VolumeAccessInfo'-    { _vaiWebReaderLink = Nothing-    , _vaiCountry = Nothing-    , _vaiDriveImportedContentLink = Nothing-    , _vaiExplicitOfflineLicenseManagement = Nothing-    , _vaiViewability = Nothing-    , _vaiQuoteSharingAllowed = Nothing-    , _vaiEpub = Nothing-    , _vaiPdf = Nothing-    , _vaiTextToSpeechPermission = Nothing-    , _vaiEmbeddable = Nothing-    , _vaiAccessViewStatus = Nothing-    , _vaiDownloadAccess = Nothing-    , _vaiViewOrderURL = Nothing-    , _vaiPublicDomain = Nothing-    }---- | URL to read this volume on the Google Books site. Link will not allow--- users to read non-viewable volumes.-vaiWebReaderLink :: Lens' VolumeAccessInfo (Maybe Text)-vaiWebReaderLink-  = lens _vaiWebReaderLink-      (\ s a -> s{_vaiWebReaderLink = a})---- | The two-letter ISO_3166-1 country code for which this access information--- is valid. (In LITE projection.)-vaiCountry :: Lens' VolumeAccessInfo (Maybe Text)-vaiCountry-  = lens _vaiCountry (\ s a -> s{_vaiCountry = a})---- | URL to the Google Drive viewer if this volume is uploaded by the user by--- selecting the file from Google Drive.-vaiDriveImportedContentLink :: Lens' VolumeAccessInfo (Maybe Text)-vaiDriveImportedContentLink-  = lens _vaiDriveImportedContentLink-      (\ s a -> s{_vaiDriveImportedContentLink = a})---- | Whether this volume requires that the client explicitly request offline--- download license rather than have it done automatically when loading the--- content, if the client supports it.-vaiExplicitOfflineLicenseManagement :: Lens' VolumeAccessInfo (Maybe Bool)-vaiExplicitOfflineLicenseManagement-  = lens _vaiExplicitOfflineLicenseManagement-      (\ s a ->-         s{_vaiExplicitOfflineLicenseManagement = a})---- | The read access of a volume. Possible values are PARTIAL, ALL_PAGES,--- NO_PAGES or UNKNOWN. This value depends on the country listed above. A--- value of PARTIAL means that the publisher has allowed some portion of--- the volume to be viewed publicly, without purchase. This can apply to--- eBooks as well as non-eBooks. Public domain books will always have a--- value of ALL_PAGES.-vaiViewability :: Lens' VolumeAccessInfo (Maybe Text)-vaiViewability-  = lens _vaiViewability-      (\ s a -> s{_vaiViewability = a})---- | Whether quote sharing is allowed for this volume.-vaiQuoteSharingAllowed :: Lens' VolumeAccessInfo (Maybe Bool)-vaiQuoteSharingAllowed-  = lens _vaiQuoteSharingAllowed-      (\ s a -> s{_vaiQuoteSharingAllowed = a})---- | Information about epub content. (In LITE projection.)-vaiEpub :: Lens' VolumeAccessInfo (Maybe VolumeAccessInfoEpub)-vaiEpub = lens _vaiEpub (\ s a -> s{_vaiEpub = a})---- | Information about pdf content. (In LITE projection.)-vaiPdf :: Lens' VolumeAccessInfo (Maybe VolumeAccessInfoPdf)-vaiPdf = lens _vaiPdf (\ s a -> s{_vaiPdf = a})---- | Whether text-to-speech is permitted for this volume. Values can be--- ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.-vaiTextToSpeechPermission :: Lens' VolumeAccessInfo (Maybe Text)-vaiTextToSpeechPermission-  = lens _vaiTextToSpeechPermission-      (\ s a -> s{_vaiTextToSpeechPermission = a})---- | Whether this volume can be embedded in a viewport using the Embedded--- Viewer API.-vaiEmbeddable :: Lens' VolumeAccessInfo (Maybe Bool)-vaiEmbeddable-  = lens _vaiEmbeddable-      (\ s a -> s{_vaiEmbeddable = a})---- | Combines the access and viewability of this volume into a single status--- field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN,--- SAMPLE or NONE. (In LITE projection.)-vaiAccessViewStatus :: Lens' VolumeAccessInfo (Maybe Text)-vaiAccessViewStatus-  = lens _vaiAccessViewStatus-      (\ s a -> s{_vaiAccessViewStatus = a})---- | Information about a volume\'s download license access restrictions.-vaiDownloadAccess :: Lens' VolumeAccessInfo (Maybe DownloadAccessRestriction)-vaiDownloadAccess-  = lens _vaiDownloadAccess-      (\ s a -> s{_vaiDownloadAccess = a})---- | For ordered but not yet processed orders, we give a URL that can be used--- to go to the appropriate Google Wallet page.-vaiViewOrderURL :: Lens' VolumeAccessInfo (Maybe Text)-vaiViewOrderURL-  = lens _vaiViewOrderURL-      (\ s a -> s{_vaiViewOrderURL = a})---- | Whether or not this book is public domain in the country listed above.-vaiPublicDomain :: Lens' VolumeAccessInfo (Maybe Bool)-vaiPublicDomain-  = lens _vaiPublicDomain-      (\ s a -> s{_vaiPublicDomain = a})--instance FromJSON VolumeAccessInfo where-        parseJSON-          = withObject "VolumeAccessInfo"-              (\ o ->-                 VolumeAccessInfo' <$>-                   (o .:? "webReaderLink") <*> (o .:? "country") <*>-                     (o .:? "driveImportedContentLink")-                     <*> (o .:? "explicitOfflineLicenseManagement")-                     <*> (o .:? "viewability")-                     <*> (o .:? "quoteSharingAllowed")-                     <*> (o .:? "epub")-                     <*> (o .:? "pdf")-                     <*> (o .:? "textToSpeechPermission")-                     <*> (o .:? "embeddable")-                     <*> (o .:? "accessViewStatus")-                     <*> (o .:? "downloadAccess")-                     <*> (o .:? "viewOrderUrl")-                     <*> (o .:? "publicDomain"))--instance ToJSON VolumeAccessInfo where-        toJSON VolumeAccessInfo'{..}-          = object-              (catMaybes-                 [("webReaderLink" .=) <$> _vaiWebReaderLink,-                  ("country" .=) <$> _vaiCountry,-                  ("driveImportedContentLink" .=) <$>-                    _vaiDriveImportedContentLink,-                  ("explicitOfflineLicenseManagement" .=) <$>-                    _vaiExplicitOfflineLicenseManagement,-                  ("viewability" .=) <$> _vaiViewability,-                  ("quoteSharingAllowed" .=) <$>-                    _vaiQuoteSharingAllowed,-                  ("epub" .=) <$> _vaiEpub, ("pdf" .=) <$> _vaiPdf,-                  ("textToSpeechPermission" .=) <$>-                    _vaiTextToSpeechPermission,-                  ("embeddable" .=) <$> _vaiEmbeddable,-                  ("accessViewStatus" .=) <$> _vaiAccessViewStatus,-                  ("downloadAccess" .=) <$> _vaiDownloadAccess,-                  ("viewOrderUrl" .=) <$> _vaiViewOrderURL,-                  ("publicDomain" .=) <$> _vaiPublicDomain])---- | A top-level summary of the panelization info in this volume.------ /See:/ 'volumeVolumeInfoPanelizationSummary' smart constructor.-data VolumeVolumeInfoPanelizationSummary = VolumeVolumeInfoPanelizationSummary'-    { _vvipsEpubBubbleVersion    :: !(Maybe Text)-    , _vvipsContainsImageBubbles :: !(Maybe Bool)-    , _vvipsContainsEpubBubbles  :: !(Maybe Bool)-    , _vvipsImageBubbleVersion   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeVolumeInfoPanelizationSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vvipsEpubBubbleVersion'------ * 'vvipsContainsImageBubbles'------ * 'vvipsContainsEpubBubbles'------ * 'vvipsImageBubbleVersion'-volumeVolumeInfoPanelizationSummary-    :: VolumeVolumeInfoPanelizationSummary-volumeVolumeInfoPanelizationSummary =-    VolumeVolumeInfoPanelizationSummary'-    { _vvipsEpubBubbleVersion = Nothing-    , _vvipsContainsImageBubbles = Nothing-    , _vvipsContainsEpubBubbles = Nothing-    , _vvipsImageBubbleVersion = Nothing-    }--vvipsEpubBubbleVersion :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Text)-vvipsEpubBubbleVersion-  = lens _vvipsEpubBubbleVersion-      (\ s a -> s{_vvipsEpubBubbleVersion = a})--vvipsContainsImageBubbles :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Bool)-vvipsContainsImageBubbles-  = lens _vvipsContainsImageBubbles-      (\ s a -> s{_vvipsContainsImageBubbles = a})--vvipsContainsEpubBubbles :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Bool)-vvipsContainsEpubBubbles-  = lens _vvipsContainsEpubBubbles-      (\ s a -> s{_vvipsContainsEpubBubbles = a})--vvipsImageBubbleVersion :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Text)-vvipsImageBubbleVersion-  = lens _vvipsImageBubbleVersion-      (\ s a -> s{_vvipsImageBubbleVersion = a})--instance FromJSON VolumeVolumeInfoPanelizationSummary-         where-        parseJSON-          = withObject "VolumeVolumeInfoPanelizationSummary"-              (\ o ->-                 VolumeVolumeInfoPanelizationSummary' <$>-                   (o .:? "epubBubbleVersion") <*>-                     (o .:? "containsImageBubbles")-                     <*> (o .:? "containsEpubBubbles")-                     <*> (o .:? "imageBubbleVersion"))--instance ToJSON VolumeVolumeInfoPanelizationSummary-         where-        toJSON VolumeVolumeInfoPanelizationSummary'{..}-          = object-              (catMaybes-                 [("epubBubbleVersion" .=) <$>-                    _vvipsEpubBubbleVersion,-                  ("containsImageBubbles" .=) <$>-                    _vvipsContainsImageBubbles,-                  ("containsEpubBubbles" .=) <$>-                    _vvipsContainsEpubBubbles,-                  ("imageBubbleVersion" .=) <$>-                    _vvipsImageBubbleVersion])---- | A list of image links for all the sizes that are available. (In LITE--- projection.)------ /See:/ 'volumeVolumeInfoImageLinks' smart constructor.-data VolumeVolumeInfoImageLinks = VolumeVolumeInfoImageLinks'-    { _vviilThumbnail      :: !(Maybe Text)-    , _vviilSmall          :: !(Maybe Text)-    , _vviilExtraLarge     :: !(Maybe Text)-    , _vviilLarge          :: !(Maybe Text)-    , _vviilMedium         :: !(Maybe Text)-    , _vviilSmallThumbnail :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeVolumeInfoImageLinks' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vviilThumbnail'------ * 'vviilSmall'------ * 'vviilExtraLarge'------ * 'vviilLarge'------ * 'vviilMedium'------ * 'vviilSmallThumbnail'-volumeVolumeInfoImageLinks-    :: VolumeVolumeInfoImageLinks-volumeVolumeInfoImageLinks =-    VolumeVolumeInfoImageLinks'-    { _vviilThumbnail = Nothing-    , _vviilSmall = Nothing-    , _vviilExtraLarge = Nothing-    , _vviilLarge = Nothing-    , _vviilMedium = Nothing-    , _vviilSmallThumbnail = Nothing-    }---- | Image link for thumbnail size (width of ~128 pixels). (In LITE--- projection)-vviilThumbnail :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilThumbnail-  = lens _vviilThumbnail-      (\ s a -> s{_vviilThumbnail = a})---- | Image link for small size (width of ~300 pixels). (In LITE projection)-vviilSmall :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilSmall-  = lens _vviilSmall (\ s a -> s{_vviilSmall = a})---- | Image link for extra large size (width of ~1280 pixels). (In LITE--- projection)-vviilExtraLarge :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilExtraLarge-  = lens _vviilExtraLarge-      (\ s a -> s{_vviilExtraLarge = a})---- | Image link for large size (width of ~800 pixels). (In LITE projection)-vviilLarge :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilLarge-  = lens _vviilLarge (\ s a -> s{_vviilLarge = a})---- | Image link for medium size (width of ~575 pixels). (In LITE projection)-vviilMedium :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilMedium-  = lens _vviilMedium (\ s a -> s{_vviilMedium = a})---- | Image link for small thumbnail size (width of ~80 pixels). (In LITE--- projection)-vviilSmallThumbnail :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)-vviilSmallThumbnail-  = lens _vviilSmallThumbnail-      (\ s a -> s{_vviilSmallThumbnail = a})--instance FromJSON VolumeVolumeInfoImageLinks where-        parseJSON-          = withObject "VolumeVolumeInfoImageLinks"-              (\ o ->-                 VolumeVolumeInfoImageLinks' <$>-                   (o .:? "thumbnail") <*> (o .:? "small") <*>-                     (o .:? "extraLarge")-                     <*> (o .:? "large")-                     <*> (o .:? "medium")-                     <*> (o .:? "smallThumbnail"))--instance ToJSON VolumeVolumeInfoImageLinks where-        toJSON VolumeVolumeInfoImageLinks'{..}-          = object-              (catMaybes-                 [("thumbnail" .=) <$> _vviilThumbnail,-                  ("small" .=) <$> _vviilSmall,-                  ("extraLarge" .=) <$> _vviilExtraLarge,-                  ("large" .=) <$> _vviilLarge,-                  ("medium" .=) <$> _vviilMedium,-                  ("smallThumbnail" .=) <$> _vviilSmallThumbnail])------- /See:/ 'volumeUserInfoUserUploadedVolumeInfo' smart constructor.-newtype VolumeUserInfoUserUploadedVolumeInfo = VolumeUserInfoUserUploadedVolumeInfo'-    { _vuiuuviProcessingState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeUserInfoUserUploadedVolumeInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vuiuuviProcessingState'-volumeUserInfoUserUploadedVolumeInfo-    :: VolumeUserInfoUserUploadedVolumeInfo-volumeUserInfoUserUploadedVolumeInfo =-    VolumeUserInfoUserUploadedVolumeInfo'-    { _vuiuuviProcessingState = Nothing-    }--vuiuuviProcessingState :: Lens' VolumeUserInfoUserUploadedVolumeInfo (Maybe Text)-vuiuuviProcessingState-  = lens _vuiuuviProcessingState-      (\ s a -> s{_vuiuuviProcessingState = a})--instance FromJSON-         VolumeUserInfoUserUploadedVolumeInfo where-        parseJSON-          = withObject "VolumeUserInfoUserUploadedVolumeInfo"-              (\ o ->-                 VolumeUserInfoUserUploadedVolumeInfo' <$>-                   (o .:? "processingState"))--instance ToJSON VolumeUserInfoUserUploadedVolumeInfo-         where-        toJSON VolumeUserInfoUserUploadedVolumeInfo'{..}-          = object-              (catMaybes-                 [("processingState" .=) <$> _vuiuuviProcessingState])---- | Copy\/Paste accounting information.------ /See:/ 'volumeUserInfoCopy' smart constructor.-data VolumeUserInfoCopy = VolumeUserInfoCopy'-    { _vuicLimitType               :: !(Maybe Text)-    , _vuicAllowedCharacterCount   :: !(Maybe (Textual Int32))-    , _vuicUpdated                 :: !(Maybe DateTime')-    , _vuicRemainingCharacterCount :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeUserInfoCopy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vuicLimitType'------ * 'vuicAllowedCharacterCount'------ * 'vuicUpdated'------ * 'vuicRemainingCharacterCount'-volumeUserInfoCopy-    :: VolumeUserInfoCopy-volumeUserInfoCopy =-    VolumeUserInfoCopy'-    { _vuicLimitType = Nothing-    , _vuicAllowedCharacterCount = Nothing-    , _vuicUpdated = Nothing-    , _vuicRemainingCharacterCount = Nothing-    }--vuicLimitType :: Lens' VolumeUserInfoCopy (Maybe Text)-vuicLimitType-  = lens _vuicLimitType-      (\ s a -> s{_vuicLimitType = a})--vuicAllowedCharacterCount :: Lens' VolumeUserInfoCopy (Maybe Int32)-vuicAllowedCharacterCount-  = lens _vuicAllowedCharacterCount-      (\ s a -> s{_vuicAllowedCharacterCount = a})-      . mapping _Coerce--vuicUpdated :: Lens' VolumeUserInfoCopy (Maybe UTCTime)-vuicUpdated-  = lens _vuicUpdated (\ s a -> s{_vuicUpdated = a}) .-      mapping _DateTime--vuicRemainingCharacterCount :: Lens' VolumeUserInfoCopy (Maybe Int32)-vuicRemainingCharacterCount-  = lens _vuicRemainingCharacterCount-      (\ s a -> s{_vuicRemainingCharacterCount = a})-      . mapping _Coerce--instance FromJSON VolumeUserInfoCopy where-        parseJSON-          = withObject "VolumeUserInfoCopy"-              (\ o ->-                 VolumeUserInfoCopy' <$>-                   (o .:? "limitType") <*>-                     (o .:? "allowedCharacterCount")-                     <*> (o .:? "updated")-                     <*> (o .:? "remainingCharacterCount"))--instance ToJSON VolumeUserInfoCopy where-        toJSON VolumeUserInfoCopy'{..}-          = object-              (catMaybes-                 [("limitType" .=) <$> _vuicLimitType,-                  ("allowedCharacterCount" .=) <$>-                    _vuicAllowedCharacterCount,-                  ("updated" .=) <$> _vuicUpdated,-                  ("remainingCharacterCount" .=) <$>-                    _vuicRemainingCharacterCount])------- /See:/ 'booksVolumesRecommendedRateResponse' smart constructor.-newtype BooksVolumesRecommendedRateResponse = BooksVolumesRecommendedRateResponse'-    { _bvrrrConsistencyToken :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BooksVolumesRecommendedRateResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bvrrrConsistencyToken'-booksVolumesRecommendedRateResponse-    :: BooksVolumesRecommendedRateResponse-booksVolumesRecommendedRateResponse =-    BooksVolumesRecommendedRateResponse'-    { _bvrrrConsistencyToken = Nothing-    }--bvrrrConsistencyToken :: Lens' BooksVolumesRecommendedRateResponse (Maybe Text)-bvrrrConsistencyToken-  = lens _bvrrrConsistencyToken-      (\ s a -> s{_bvrrrConsistencyToken = a})--instance FromJSON BooksVolumesRecommendedRateResponse-         where-        parseJSON-          = withObject "BooksVolumesRecommendedRateResponse"-              (\ o ->-                 BooksVolumesRecommendedRateResponse' <$>-                   (o .:? "consistency_token"))--instance ToJSON BooksVolumesRecommendedRateResponse-         where-        toJSON BooksVolumesRecommendedRateResponse'{..}-          = object-              (catMaybes-                 [("consistency_token" .=) <$>-                    _bvrrrConsistencyToken])------- /See:/ 'userSettingsNotificationPriceDrop' smart constructor.-newtype UserSettingsNotificationPriceDrop = UserSettingsNotificationPriceDrop'-    { _usnpdOptedState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotificationPriceDrop' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnpdOptedState'-userSettingsNotificationPriceDrop-    :: UserSettingsNotificationPriceDrop-userSettingsNotificationPriceDrop =-    UserSettingsNotificationPriceDrop'-    { _usnpdOptedState = Nothing-    }--usnpdOptedState :: Lens' UserSettingsNotificationPriceDrop (Maybe Text)-usnpdOptedState-  = lens _usnpdOptedState-      (\ s a -> s{_usnpdOptedState = a})--instance FromJSON UserSettingsNotificationPriceDrop-         where-        parseJSON-          = withObject "UserSettingsNotificationPriceDrop"-              (\ o ->-                 UserSettingsNotificationPriceDrop' <$>-                   (o .:? "opted_state"))--instance ToJSON UserSettingsNotificationPriceDrop-         where-        toJSON UserSettingsNotificationPriceDrop'{..}-          = object-              (catMaybes [("opted_state" .=) <$> _usnpdOptedState])------- /See:/ 'volumeseriesInfo' smart constructor.-data VolumeseriesInfo = VolumeseriesInfo'-    { _viBookDisplayNumber    :: !(Maybe Text)-    , _viKind                 :: !Text-    , _viShortSeriesBookTitle :: !(Maybe Text)-    , _viVolumeSeries         :: !(Maybe [VolumeseriesInfoVolumeSeriesItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeseriesInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'viBookDisplayNumber'------ * 'viKind'------ * 'viShortSeriesBookTitle'------ * 'viVolumeSeries'-volumeseriesInfo-    :: VolumeseriesInfo-volumeseriesInfo =-    VolumeseriesInfo'-    { _viBookDisplayNumber = Nothing-    , _viKind = "books#volume_series_info"-    , _viShortSeriesBookTitle = Nothing-    , _viVolumeSeries = Nothing-    }---- | The display number string. This should be used only for display purposes--- and the actual sequence should be inferred from the below orderNumber.-viBookDisplayNumber :: Lens' VolumeseriesInfo (Maybe Text)-viBookDisplayNumber-  = lens _viBookDisplayNumber-      (\ s a -> s{_viBookDisplayNumber = a})---- | Resource type.-viKind :: Lens' VolumeseriesInfo Text-viKind = lens _viKind (\ s a -> s{_viKind = a})---- | Short book title in the context of the series.-viShortSeriesBookTitle :: Lens' VolumeseriesInfo (Maybe Text)-viShortSeriesBookTitle-  = lens _viShortSeriesBookTitle-      (\ s a -> s{_viShortSeriesBookTitle = a})--viVolumeSeries :: Lens' VolumeseriesInfo [VolumeseriesInfoVolumeSeriesItem]-viVolumeSeries-  = lens _viVolumeSeries-      (\ s a -> s{_viVolumeSeries = a})-      . _Default-      . _Coerce--instance FromJSON VolumeseriesInfo where-        parseJSON-          = withObject "VolumeseriesInfo"-              (\ o ->-                 VolumeseriesInfo' <$>-                   (o .:? "bookDisplayNumber") <*>-                     (o .:? "kind" .!= "books#volume_series_info")-                     <*> (o .:? "shortSeriesBookTitle")-                     <*> (o .:? "volumeSeries" .!= mempty))--instance ToJSON VolumeseriesInfo where-        toJSON VolumeseriesInfo'{..}-          = object-              (catMaybes-                 [("bookDisplayNumber" .=) <$> _viBookDisplayNumber,-                  Just ("kind" .= _viKind),-                  ("shortSeriesBookTitle" .=) <$>-                    _viShortSeriesBookTitle,-                  ("volumeSeries" .=) <$> _viVolumeSeries])------- /See:/ 'bookshelf' smart constructor.-data Bookshelf = Bookshelf'-    { _bAccess             :: !(Maybe Text)-    , _bVolumesLastUpdated :: !(Maybe DateTime')-    , _bKind               :: !Text-    , _bCreated            :: !(Maybe DateTime')-    , _bVolumeCount        :: !(Maybe (Textual Int32))-    , _bSelfLink           :: !(Maybe Text)-    , _bId                 :: !(Maybe (Textual Int32))-    , _bUpdated            :: !(Maybe DateTime')-    , _bTitle              :: !(Maybe Text)-    , _bDescription        :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Bookshelf' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bAccess'------ * 'bVolumesLastUpdated'------ * 'bKind'------ * 'bCreated'------ * 'bVolumeCount'------ * 'bSelfLink'------ * 'bId'------ * 'bUpdated'------ * 'bTitle'------ * 'bDescription'-bookshelf-    :: Bookshelf-bookshelf =-    Bookshelf'-    { _bAccess = Nothing-    , _bVolumesLastUpdated = Nothing-    , _bKind = "books#bookshelf"-    , _bCreated = Nothing-    , _bVolumeCount = Nothing-    , _bSelfLink = Nothing-    , _bId = Nothing-    , _bUpdated = Nothing-    , _bTitle = Nothing-    , _bDescription = Nothing-    }---- | Whether this bookshelf is PUBLIC or PRIVATE.-bAccess :: Lens' Bookshelf (Maybe Text)-bAccess = lens _bAccess (\ s a -> s{_bAccess = a})---- | Last time a volume was added or removed from this bookshelf (formatted--- UTC timestamp with millisecond resolution).-bVolumesLastUpdated :: Lens' Bookshelf (Maybe UTCTime)-bVolumesLastUpdated-  = lens _bVolumesLastUpdated-      (\ s a -> s{_bVolumesLastUpdated = a})-      . mapping _DateTime---- | Resource type for bookshelf metadata.-bKind :: Lens' Bookshelf Text-bKind = lens _bKind (\ s a -> s{_bKind = a})---- | Created time for this bookshelf (formatted UTC timestamp with--- millisecond resolution).-bCreated :: Lens' Bookshelf (Maybe UTCTime)-bCreated-  = lens _bCreated (\ s a -> s{_bCreated = a}) .-      mapping _DateTime---- | Number of volumes in this bookshelf.-bVolumeCount :: Lens' Bookshelf (Maybe Int32)-bVolumeCount-  = lens _bVolumeCount (\ s a -> s{_bVolumeCount = a})-      . mapping _Coerce---- | URL to this resource.-bSelfLink :: Lens' Bookshelf (Maybe Text)-bSelfLink-  = lens _bSelfLink (\ s a -> s{_bSelfLink = a})---- | Id of this bookshelf, only unique by user.-bId :: Lens' Bookshelf (Maybe Int32)-bId-  = lens _bId (\ s a -> s{_bId = a}) . mapping _Coerce---- | Last modified time of this bookshelf (formatted UTC timestamp with--- millisecond resolution).-bUpdated :: Lens' Bookshelf (Maybe UTCTime)-bUpdated-  = lens _bUpdated (\ s a -> s{_bUpdated = a}) .-      mapping _DateTime---- | Title of this bookshelf.-bTitle :: Lens' Bookshelf (Maybe Text)-bTitle = lens _bTitle (\ s a -> s{_bTitle = a})---- | Description of this bookshelf.-bDescription :: Lens' Bookshelf (Maybe Text)-bDescription-  = lens _bDescription (\ s a -> s{_bDescription = a})--instance FromJSON Bookshelf where-        parseJSON-          = withObject "Bookshelf"-              (\ o ->-                 Bookshelf' <$>-                   (o .:? "access") <*> (o .:? "volumesLastUpdated") <*>-                     (o .:? "kind" .!= "books#bookshelf")-                     <*> (o .:? "created")-                     <*> (o .:? "volumeCount")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id")-                     <*> (o .:? "updated")-                     <*> (o .:? "title")-                     <*> (o .:? "description"))--instance ToJSON Bookshelf where-        toJSON Bookshelf'{..}-          = object-              (catMaybes-                 [("access" .=) <$> _bAccess,-                  ("volumesLastUpdated" .=) <$> _bVolumesLastUpdated,-                  Just ("kind" .= _bKind),-                  ("created" .=) <$> _bCreated,-                  ("volumeCount" .=) <$> _bVolumeCount,-                  ("selfLink" .=) <$> _bSelfLink, ("id" .=) <$> _bId,-                  ("updated" .=) <$> _bUpdated,-                  ("title" .=) <$> _bTitle,-                  ("description" .=) <$> _bDescription])------- /See:/ 'notification' smart constructor.-data Notification = Notification'-    { _nDocType                        :: !(Maybe Text)-    , _nTargetURL                      :: !(Maybe Text)-    , _nShowNotificationSettingsAction :: !(Maybe Bool)-    , _nDocId                          :: !(Maybe Text)-    , _nKind                           :: !Text-    , _nBody                           :: !(Maybe Text)-    , _nCrmExperimentIds               :: !(Maybe [Textual Int64])-    , _nPcampaignId                    :: !(Maybe Text)-    , _nReason                         :: !(Maybe Text)-    , _nIsDocumentMature               :: !(Maybe Bool)-    , _nDontShowNotification           :: !(Maybe Bool)-    , _nNotificationType               :: !(Maybe Text)-    , _nNotificationGroup              :: !(Maybe Text)-    , _nIconURL                        :: !(Maybe Text)-    , _nTitle                          :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Notification' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'nDocType'------ * 'nTargetURL'------ * 'nShowNotificationSettingsAction'------ * 'nDocId'------ * 'nKind'------ * 'nBody'------ * 'nCrmExperimentIds'------ * 'nPcampaignId'------ * 'nReason'------ * 'nIsDocumentMature'------ * 'nDontShowNotification'------ * 'nNotificationType'------ * 'nNotificationGroup'------ * 'nIconURL'------ * 'nTitle'-notification-    :: Notification-notification =-    Notification'-    { _nDocType = Nothing-    , _nTargetURL = Nothing-    , _nShowNotificationSettingsAction = Nothing-    , _nDocId = Nothing-    , _nKind = "books#notification"-    , _nBody = Nothing-    , _nCrmExperimentIds = Nothing-    , _nPcampaignId = Nothing-    , _nReason = Nothing-    , _nIsDocumentMature = Nothing-    , _nDontShowNotification = Nothing-    , _nNotificationType = Nothing-    , _nNotificationGroup = Nothing-    , _nIconURL = Nothing-    , _nTitle = Nothing-    }--nDocType :: Lens' Notification (Maybe Text)-nDocType = lens _nDocType (\ s a -> s{_nDocType = a})--nTargetURL :: Lens' Notification (Maybe Text)-nTargetURL-  = lens _nTargetURL (\ s a -> s{_nTargetURL = a})--nShowNotificationSettingsAction :: Lens' Notification (Maybe Bool)-nShowNotificationSettingsAction-  = lens _nShowNotificationSettingsAction-      (\ s a -> s{_nShowNotificationSettingsAction = a})--nDocId :: Lens' Notification (Maybe Text)-nDocId = lens _nDocId (\ s a -> s{_nDocId = a})---- | Resource type.-nKind :: Lens' Notification Text-nKind = lens _nKind (\ s a -> s{_nKind = a})--nBody :: Lens' Notification (Maybe Text)-nBody = lens _nBody (\ s a -> s{_nBody = a})---- | The list of crm experiment ids.-nCrmExperimentIds :: Lens' Notification [Int64]-nCrmExperimentIds-  = lens _nCrmExperimentIds-      (\ s a -> s{_nCrmExperimentIds = a})-      . _Default-      . _Coerce--nPcampaignId :: Lens' Notification (Maybe Text)-nPcampaignId-  = lens _nPcampaignId (\ s a -> s{_nPcampaignId = a})--nReason :: Lens' Notification (Maybe Text)-nReason = lens _nReason (\ s a -> s{_nReason = a})--nIsDocumentMature :: Lens' Notification (Maybe Bool)-nIsDocumentMature-  = lens _nIsDocumentMature-      (\ s a -> s{_nIsDocumentMature = a})--nDontShowNotification :: Lens' Notification (Maybe Bool)-nDontShowNotification-  = lens _nDontShowNotification-      (\ s a -> s{_nDontShowNotification = a})--nNotificationType :: Lens' Notification (Maybe Text)-nNotificationType-  = lens _nNotificationType-      (\ s a -> s{_nNotificationType = a})--nNotificationGroup :: Lens' Notification (Maybe Text)-nNotificationGroup-  = lens _nNotificationGroup-      (\ s a -> s{_nNotificationGroup = a})--nIconURL :: Lens' Notification (Maybe Text)-nIconURL = lens _nIconURL (\ s a -> s{_nIconURL = a})--nTitle :: Lens' Notification (Maybe Text)-nTitle = lens _nTitle (\ s a -> s{_nTitle = a})--instance FromJSON Notification where-        parseJSON-          = withObject "Notification"-              (\ o ->-                 Notification' <$>-                   (o .:? "doc_type") <*> (o .:? "targetUrl") <*>-                     (o .:? "show_notification_settings_action")-                     <*> (o .:? "doc_id")-                     <*> (o .:? "kind" .!= "books#notification")-                     <*> (o .:? "body")-                     <*> (o .:? "crmExperimentIds" .!= mempty)-                     <*> (o .:? "pcampaign_id")-                     <*> (o .:? "reason")-                     <*> (o .:? "is_document_mature")-                     <*> (o .:? "dont_show_notification")-                     <*> (o .:? "notification_type")-                     <*> (o .:? "notificationGroup")-                     <*> (o .:? "iconUrl")-                     <*> (o .:? "title"))--instance ToJSON Notification where-        toJSON Notification'{..}-          = object-              (catMaybes-                 [("doc_type" .=) <$> _nDocType,-                  ("targetUrl" .=) <$> _nTargetURL,-                  ("show_notification_settings_action" .=) <$>-                    _nShowNotificationSettingsAction,-                  ("doc_id" .=) <$> _nDocId, Just ("kind" .= _nKind),-                  ("body" .=) <$> _nBody,-                  ("crmExperimentIds" .=) <$> _nCrmExperimentIds,-                  ("pcampaign_id" .=) <$> _nPcampaignId,-                  ("reason" .=) <$> _nReason,-                  ("is_document_mature" .=) <$> _nIsDocumentMature,-                  ("dont_show_notification" .=) <$>-                    _nDontShowNotification,-                  ("notification_type" .=) <$> _nNotificationType,-                  ("notificationGroup" .=) <$> _nNotificationGroup,-                  ("iconUrl" .=) <$> _nIconURL,-                  ("title" .=) <$> _nTitle])------- /See:/ 'annotationsSummaryLayersItem' smart constructor.-data AnnotationsSummaryLayersItem = AnnotationsSummaryLayersItem'-    { _asliLimitType               :: !(Maybe Text)-    , _asliAllowedCharacterCount   :: !(Maybe (Textual Int32))-    , _asliUpdated                 :: !(Maybe DateTime')-    , _asliLayerId                 :: !(Maybe Text)-    , _asliRemainingCharacterCount :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationsSummaryLayersItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'asliLimitType'------ * 'asliAllowedCharacterCount'------ * 'asliUpdated'------ * 'asliLayerId'------ * 'asliRemainingCharacterCount'-annotationsSummaryLayersItem-    :: AnnotationsSummaryLayersItem-annotationsSummaryLayersItem =-    AnnotationsSummaryLayersItem'-    { _asliLimitType = Nothing-    , _asliAllowedCharacterCount = Nothing-    , _asliUpdated = Nothing-    , _asliLayerId = Nothing-    , _asliRemainingCharacterCount = Nothing-    }--asliLimitType :: Lens' AnnotationsSummaryLayersItem (Maybe Text)-asliLimitType-  = lens _asliLimitType-      (\ s a -> s{_asliLimitType = a})--asliAllowedCharacterCount :: Lens' AnnotationsSummaryLayersItem (Maybe Int32)-asliAllowedCharacterCount-  = lens _asliAllowedCharacterCount-      (\ s a -> s{_asliAllowedCharacterCount = a})-      . mapping _Coerce--asliUpdated :: Lens' AnnotationsSummaryLayersItem (Maybe UTCTime)-asliUpdated-  = lens _asliUpdated (\ s a -> s{_asliUpdated = a}) .-      mapping _DateTime--asliLayerId :: Lens' AnnotationsSummaryLayersItem (Maybe Text)-asliLayerId-  = lens _asliLayerId (\ s a -> s{_asliLayerId = a})--asliRemainingCharacterCount :: Lens' AnnotationsSummaryLayersItem (Maybe Int32)-asliRemainingCharacterCount-  = lens _asliRemainingCharacterCount-      (\ s a -> s{_asliRemainingCharacterCount = a})-      . mapping _Coerce--instance FromJSON AnnotationsSummaryLayersItem where-        parseJSON-          = withObject "AnnotationsSummaryLayersItem"-              (\ o ->-                 AnnotationsSummaryLayersItem' <$>-                   (o .:? "limitType") <*>-                     (o .:? "allowedCharacterCount")-                     <*> (o .:? "updated")-                     <*> (o .:? "layerId")-                     <*> (o .:? "remainingCharacterCount"))--instance ToJSON AnnotationsSummaryLayersItem where-        toJSON AnnotationsSummaryLayersItem'{..}-          = object-              (catMaybes-                 [("limitType" .=) <$> _asliLimitType,-                  ("allowedCharacterCount" .=) <$>-                    _asliAllowedCharacterCount,-                  ("updated" .=) <$> _asliUpdated,-                  ("layerId" .=) <$> _asliLayerId,-                  ("remainingCharacterCount" .=) <$>-                    _asliRemainingCharacterCount])---- | The rental duration (for rental offers only).------ /See:/ 'volumeSaleInfoOffersItemRentalDuration' smart constructor.-data VolumeSaleInfoOffersItemRentalDuration = VolumeSaleInfoOffersItemRentalDuration'-    { _vsioirdCount :: !(Maybe (Textual Double))-    , _vsioirdUnit  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoOffersItemRentalDuration' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsioirdCount'------ * 'vsioirdUnit'-volumeSaleInfoOffersItemRentalDuration-    :: VolumeSaleInfoOffersItemRentalDuration-volumeSaleInfoOffersItemRentalDuration =-    VolumeSaleInfoOffersItemRentalDuration'-    { _vsioirdCount = Nothing-    , _vsioirdUnit = Nothing-    }--vsioirdCount :: Lens' VolumeSaleInfoOffersItemRentalDuration (Maybe Double)-vsioirdCount-  = lens _vsioirdCount (\ s a -> s{_vsioirdCount = a})-      . mapping _Coerce--vsioirdUnit :: Lens' VolumeSaleInfoOffersItemRentalDuration (Maybe Text)-vsioirdUnit-  = lens _vsioirdUnit (\ s a -> s{_vsioirdUnit = a})--instance FromJSON-         VolumeSaleInfoOffersItemRentalDuration where-        parseJSON-          = withObject "VolumeSaleInfoOffersItemRentalDuration"-              (\ o ->-                 VolumeSaleInfoOffersItemRentalDuration' <$>-                   (o .:? "count") <*> (o .:? "unit"))--instance ToJSON-         VolumeSaleInfoOffersItemRentalDuration where-        toJSON VolumeSaleInfoOffersItemRentalDuration'{..}-          = object-              (catMaybes-                 [("count" .=) <$> _vsioirdCount,-                  ("unit" .=) <$> _vsioirdUnit])------- /See:/ 'dictlayerDataDictWordsItemExamplesItem' smart constructor.-data DictlayerDataDictWordsItemExamplesItem = DictlayerDataDictWordsItemExamplesItem'-    { _dddwieiText   :: !(Maybe Text)-    , _dddwieiSource :: !(Maybe DictlayerDataDictWordsItemExamplesItemSource)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemExamplesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwieiText'------ * 'dddwieiSource'-dictlayerDataDictWordsItemExamplesItem-    :: DictlayerDataDictWordsItemExamplesItem-dictlayerDataDictWordsItemExamplesItem =-    DictlayerDataDictWordsItemExamplesItem'-    { _dddwieiText = Nothing-    , _dddwieiSource = Nothing-    }--dddwieiText :: Lens' DictlayerDataDictWordsItemExamplesItem (Maybe Text)-dddwieiText-  = lens _dddwieiText (\ s a -> s{_dddwieiText = a})--dddwieiSource :: Lens' DictlayerDataDictWordsItemExamplesItem (Maybe DictlayerDataDictWordsItemExamplesItemSource)-dddwieiSource-  = lens _dddwieiSource-      (\ s a -> s{_dddwieiSource = a})--instance FromJSON-         DictlayerDataDictWordsItemExamplesItem where-        parseJSON-          = withObject "DictlayerDataDictWordsItemExamplesItem"-              (\ o ->-                 DictlayerDataDictWordsItemExamplesItem' <$>-                   (o .:? "text") <*> (o .:? "source"))--instance ToJSON-         DictlayerDataDictWordsItemExamplesItem where-        toJSON DictlayerDataDictWordsItemExamplesItem'{..}-          = object-              (catMaybes-                 [("text" .=) <$> _dddwieiText,-                  ("source" .=) <$> _dddwieiSource])------- /See:/ 'offersItemsItem' smart constructor.-data OffersItemsItem = OffersItemsItem'-    { _oiiItems        :: !(Maybe [OffersItemsItemItemsItem])-    , _oiiArtURL       :: !(Maybe Text)-    , _oiiId           :: !(Maybe Text)-    , _oiiGServicesKey :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OffersItemsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oiiItems'------ * 'oiiArtURL'------ * 'oiiId'------ * 'oiiGServicesKey'-offersItemsItem-    :: OffersItemsItem-offersItemsItem =-    OffersItemsItem'-    { _oiiItems = Nothing-    , _oiiArtURL = Nothing-    , _oiiId = Nothing-    , _oiiGServicesKey = Nothing-    }--oiiItems :: Lens' OffersItemsItem [OffersItemsItemItemsItem]-oiiItems-  = lens _oiiItems (\ s a -> s{_oiiItems = a}) .-      _Default-      . _Coerce--oiiArtURL :: Lens' OffersItemsItem (Maybe Text)-oiiArtURL-  = lens _oiiArtURL (\ s a -> s{_oiiArtURL = a})--oiiId :: Lens' OffersItemsItem (Maybe Text)-oiiId = lens _oiiId (\ s a -> s{_oiiId = a})--oiiGServicesKey :: Lens' OffersItemsItem (Maybe Text)-oiiGServicesKey-  = lens _oiiGServicesKey-      (\ s a -> s{_oiiGServicesKey = a})--instance FromJSON OffersItemsItem where-        parseJSON-          = withObject "OffersItemsItem"-              (\ o ->-                 OffersItemsItem' <$>-                   (o .:? "items" .!= mempty) <*> (o .:? "artUrl") <*>-                     (o .:? "id")-                     <*> (o .:? "gservicesKey"))--instance ToJSON OffersItemsItem where-        toJSON OffersItemsItem'{..}-          = object-              (catMaybes-                 [("items" .=) <$> _oiiItems,-                  ("artUrl" .=) <$> _oiiArtURL, ("id" .=) <$> _oiiId,-                  ("gservicesKey" .=) <$> _oiiGServicesKey])------- /See:/ 'annotationLayerSummary' smart constructor.-data AnnotationLayerSummary = AnnotationLayerSummary'-    { _alsLimitType               :: !(Maybe Text)-    , _alsAllowedCharacterCount   :: !(Maybe (Textual Int32))-    , _alsRemainingCharacterCount :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationLayerSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'alsLimitType'------ * 'alsAllowedCharacterCount'------ * 'alsRemainingCharacterCount'-annotationLayerSummary-    :: AnnotationLayerSummary-annotationLayerSummary =-    AnnotationLayerSummary'-    { _alsLimitType = Nothing-    , _alsAllowedCharacterCount = Nothing-    , _alsRemainingCharacterCount = Nothing-    }---- | Type of limitation on this layer. \"limited\" or \"unlimited\" for the--- \"copy\" layer.-alsLimitType :: Lens' AnnotationLayerSummary (Maybe Text)-alsLimitType-  = lens _alsLimitType (\ s a -> s{_alsLimitType = a})---- | Maximum allowed characters on this layer, especially for the \"copy\"--- layer.-alsAllowedCharacterCount :: Lens' AnnotationLayerSummary (Maybe Int32)-alsAllowedCharacterCount-  = lens _alsAllowedCharacterCount-      (\ s a -> s{_alsAllowedCharacterCount = a})-      . mapping _Coerce---- | Remaining allowed characters on this layer, especially for the \"copy\"--- layer.-alsRemainingCharacterCount :: Lens' AnnotationLayerSummary (Maybe Int32)-alsRemainingCharacterCount-  = lens _alsRemainingCharacterCount-      (\ s a -> s{_alsRemainingCharacterCount = a})-      . mapping _Coerce--instance FromJSON AnnotationLayerSummary where-        parseJSON-          = withObject "AnnotationLayerSummary"-              (\ o ->-                 AnnotationLayerSummary' <$>-                   (o .:? "limitType") <*>-                     (o .:? "allowedCharacterCount")-                     <*> (o .:? "remainingCharacterCount"))--instance ToJSON AnnotationLayerSummary where-        toJSON AnnotationLayerSummary'{..}-          = object-              (catMaybes-                 [("limitType" .=) <$> _alsLimitType,-                  ("allowedCharacterCount" .=) <$>-                    _alsAllowedCharacterCount,-                  ("remainingCharacterCount" .=) <$>-                    _alsRemainingCharacterCount])---- | Search result information related to this volume.------ /See:/ 'volumeSearchInfo' smart constructor.-newtype VolumeSearchInfo = VolumeSearchInfo'-    { _vsiTextSnippet :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSearchInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsiTextSnippet'-volumeSearchInfo-    :: VolumeSearchInfo-volumeSearchInfo =-    VolumeSearchInfo'-    { _vsiTextSnippet = Nothing-    }---- | A text snippet containing the search query.-vsiTextSnippet :: Lens' VolumeSearchInfo (Maybe Text)-vsiTextSnippet-  = lens _vsiTextSnippet-      (\ s a -> s{_vsiTextSnippet = a})--instance FromJSON VolumeSearchInfo where-        parseJSON-          = withObject "VolumeSearchInfo"-              (\ o -> VolumeSearchInfo' <$> (o .:? "textSnippet"))--instance ToJSON VolumeSearchInfo where-        toJSON VolumeSearchInfo'{..}-          = object-              (catMaybes [("textSnippet" .=) <$> _vsiTextSnippet])------- /See:/ 'annotationsSummary' smart constructor.-data AnnotationsSummary = AnnotationsSummary'-    { _asKind   :: !Text-    , _asLayers :: !(Maybe [AnnotationsSummaryLayersItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationsSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'asKind'------ * 'asLayers'-annotationsSummary-    :: AnnotationsSummary-annotationsSummary =-    AnnotationsSummary'-    { _asKind = "books#annotationsSummary"-    , _asLayers = Nothing-    }--asKind :: Lens' AnnotationsSummary Text-asKind = lens _asKind (\ s a -> s{_asKind = a})--asLayers :: Lens' AnnotationsSummary [AnnotationsSummaryLayersItem]-asLayers-  = lens _asLayers (\ s a -> s{_asLayers = a}) .-      _Default-      . _Coerce--instance FromJSON AnnotationsSummary where-        parseJSON-          = withObject "AnnotationsSummary"-              (\ o ->-                 AnnotationsSummary' <$>-                   (o .:? "kind" .!= "books#annotationsSummary") <*>-                     (o .:? "layers" .!= mempty))--instance ToJSON AnnotationsSummary where-        toJSON AnnotationsSummary'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _asKind),-                  ("layers" .=) <$> _asLayers])------- /See:/ 'category' smart constructor.-data Category = Category'-    { _cKind  :: !Text-    , _cItems :: !(Maybe [CategoryItemsItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Category' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cKind'------ * 'cItems'-category-    :: Category-category =-    Category'-    { _cKind = "onboarding#category"-    , _cItems = Nothing-    }---- | Resource type.-cKind :: Lens' Category Text-cKind = lens _cKind (\ s a -> s{_cKind = a})---- | A list of onboarding categories.-cItems :: Lens' Category [CategoryItemsItem]-cItems-  = lens _cItems (\ s a -> s{_cItems = a}) . _Default .-      _Coerce--instance FromJSON Category where-        parseJSON-          = withObject "Category"-              (\ o ->-                 Category' <$>-                   (o .:? "kind" .!= "onboarding#category") <*>-                     (o .:? "items" .!= mempty))--instance ToJSON Category where-        toJSON Category'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _cKind), ("items" .=) <$> _cItems])------- /See:/ 'discoveryclustersClustersItemBanner_with_content_container' smart constructor.-data DiscoveryclustersClustersItemBanner_with_content_container = DiscoveryclustersClustersItemBanner_with_content_container'-    { _dcibFillColorArgb  :: !(Maybe Text)-    , _dcibMoreButtonURL  :: !(Maybe Text)-    , _dcibTextColorArgb  :: !(Maybe Text)-    , _dcibMoreButtonText :: !(Maybe Text)-    , _dcibImageURL       :: !(Maybe Text)-    , _dcibMaskColorArgb  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiscoveryclustersClustersItemBanner_with_content_container' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dcibFillColorArgb'------ * 'dcibMoreButtonURL'------ * 'dcibTextColorArgb'------ * 'dcibMoreButtonText'------ * 'dcibImageURL'------ * 'dcibMaskColorArgb'-discoveryclustersClustersItemBanner_with_content_container-    :: DiscoveryclustersClustersItemBanner_with_content_container-discoveryclustersClustersItemBanner_with_content_container =-    DiscoveryclustersClustersItemBanner_with_content_container'-    { _dcibFillColorArgb = Nothing-    , _dcibMoreButtonURL = Nothing-    , _dcibTextColorArgb = Nothing-    , _dcibMoreButtonText = Nothing-    , _dcibImageURL = Nothing-    , _dcibMaskColorArgb = Nothing-    }--dcibFillColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibFillColorArgb-  = lens _dcibFillColorArgb-      (\ s a -> s{_dcibFillColorArgb = a})--dcibMoreButtonURL :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibMoreButtonURL-  = lens _dcibMoreButtonURL-      (\ s a -> s{_dcibMoreButtonURL = a})--dcibTextColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibTextColorArgb-  = lens _dcibTextColorArgb-      (\ s a -> s{_dcibTextColorArgb = a})--dcibMoreButtonText :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibMoreButtonText-  = lens _dcibMoreButtonText-      (\ s a -> s{_dcibMoreButtonText = a})--dcibImageURL :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibImageURL-  = lens _dcibImageURL (\ s a -> s{_dcibImageURL = a})--dcibMaskColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)-dcibMaskColorArgb-  = lens _dcibMaskColorArgb-      (\ s a -> s{_dcibMaskColorArgb = a})--instance FromJSON-         DiscoveryclustersClustersItemBanner_with_content_container-         where-        parseJSON-          = withObject-              "DiscoveryclustersClustersItemBannerWithContentContainer"-              (\ o ->-                 DiscoveryclustersClustersItemBanner_with_content_container'-                   <$>-                   (o .:? "fillColorArgb") <*> (o .:? "moreButtonUrl")-                     <*> (o .:? "textColorArgb")-                     <*> (o .:? "moreButtonText")-                     <*> (o .:? "imageUrl")-                     <*> (o .:? "maskColorArgb"))--instance ToJSON-         DiscoveryclustersClustersItemBanner_with_content_container-         where-        toJSON-          DiscoveryclustersClustersItemBanner_with_content_container'{..}-          = object-              (catMaybes-                 [("fillColorArgb" .=) <$> _dcibFillColorArgb,-                  ("moreButtonUrl" .=) <$> _dcibMoreButtonURL,-                  ("textColorArgb" .=) <$> _dcibTextColorArgb,-                  ("moreButtonText" .=) <$> _dcibMoreButtonText,-                  ("imageUrl" .=) <$> _dcibImageURL,-                  ("maskColorArgb" .=) <$> _dcibMaskColorArgb])------- /See:/ 'volume' smart constructor.-data Volume = Volume'-    { _vvUserInfo        :: !(Maybe VolumeUserInfo)-    , _vvEtag            :: !(Maybe Text)-    , _vvAccessInfo      :: !(Maybe VolumeAccessInfo)-    , _vvKind            :: !Text-    , _vvSearchInfo      :: !(Maybe VolumeSearchInfo)-    , _vvSelfLink        :: !(Maybe Text)-    , _vvLayerInfo       :: !(Maybe VolumeLayerInfo)-    , _vvSaleInfo        :: !(Maybe VolumeSaleInfo)-    , _vvId              :: !(Maybe Text)-    , _vvRecommendedInfo :: !(Maybe VolumeRecommendedInfo)-    , _vvVolumeInfo      :: !(Maybe VolumeVolumeInfo)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Volume' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vvUserInfo'------ * 'vvEtag'------ * 'vvAccessInfo'------ * 'vvKind'------ * 'vvSearchInfo'------ * 'vvSelfLink'------ * 'vvLayerInfo'------ * 'vvSaleInfo'------ * 'vvId'------ * 'vvRecommendedInfo'------ * 'vvVolumeInfo'-volume-    :: Volume-volume =-    Volume'-    { _vvUserInfo = Nothing-    , _vvEtag = Nothing-    , _vvAccessInfo = Nothing-    , _vvKind = "books#volume"-    , _vvSearchInfo = Nothing-    , _vvSelfLink = Nothing-    , _vvLayerInfo = Nothing-    , _vvSaleInfo = Nothing-    , _vvId = Nothing-    , _vvRecommendedInfo = Nothing-    , _vvVolumeInfo = Nothing-    }---- | User specific information related to this volume. (e.g. page this user--- last read or whether they purchased this book)-vvUserInfo :: Lens' Volume (Maybe VolumeUserInfo)-vvUserInfo-  = lens _vvUserInfo (\ s a -> s{_vvUserInfo = a})---- | Opaque identifier for a specific version of a volume resource. (In LITE--- projection)-vvEtag :: Lens' Volume (Maybe Text)-vvEtag = lens _vvEtag (\ s a -> s{_vvEtag = a})---- | Any information about a volume related to reading or obtaining that--- volume text. This information can depend on country (books may be public--- domain in one country but not in another, e.g.).-vvAccessInfo :: Lens' Volume (Maybe VolumeAccessInfo)-vvAccessInfo-  = lens _vvAccessInfo (\ s a -> s{_vvAccessInfo = a})---- | Resource type for a volume. (In LITE projection.)-vvKind :: Lens' Volume Text-vvKind = lens _vvKind (\ s a -> s{_vvKind = a})---- | Search result information related to this volume.-vvSearchInfo :: Lens' Volume (Maybe VolumeSearchInfo)-vvSearchInfo-  = lens _vvSearchInfo (\ s a -> s{_vvSearchInfo = a})---- | URL to this resource. (In LITE projection.)-vvSelfLink :: Lens' Volume (Maybe Text)-vvSelfLink-  = lens _vvSelfLink (\ s a -> s{_vvSelfLink = a})---- | What layers exist in this volume and high level information about them.-vvLayerInfo :: Lens' Volume (Maybe VolumeLayerInfo)-vvLayerInfo-  = lens _vvLayerInfo (\ s a -> s{_vvLayerInfo = a})---- | Any information about a volume related to the eBookstore and\/or--- purchaseability. This information can depend on the country where the--- request originates from (i.e. books may not be for sale in certain--- countries).-vvSaleInfo :: Lens' Volume (Maybe VolumeSaleInfo)-vvSaleInfo-  = lens _vvSaleInfo (\ s a -> s{_vvSaleInfo = a})---- | Unique identifier for a volume. (In LITE projection.)-vvId :: Lens' Volume (Maybe Text)-vvId = lens _vvId (\ s a -> s{_vvId = a})---- | Recommendation related information for this volume.-vvRecommendedInfo :: Lens' Volume (Maybe VolumeRecommendedInfo)-vvRecommendedInfo-  = lens _vvRecommendedInfo-      (\ s a -> s{_vvRecommendedInfo = a})---- | General volume information.-vvVolumeInfo :: Lens' Volume (Maybe VolumeVolumeInfo)-vvVolumeInfo-  = lens _vvVolumeInfo (\ s a -> s{_vvVolumeInfo = a})--instance FromJSON Volume where-        parseJSON-          = withObject "Volume"-              (\ o ->-                 Volume' <$>-                   (o .:? "userInfo") <*> (o .:? "etag") <*>-                     (o .:? "accessInfo")-                     <*> (o .:? "kind" .!= "books#volume")-                     <*> (o .:? "searchInfo")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "layerInfo")-                     <*> (o .:? "saleInfo")-                     <*> (o .:? "id")-                     <*> (o .:? "recommendedInfo")-                     <*> (o .:? "volumeInfo"))--instance ToJSON Volume where-        toJSON Volume'{..}-          = object-              (catMaybes-                 [("userInfo" .=) <$> _vvUserInfo,-                  ("etag" .=) <$> _vvEtag,-                  ("accessInfo" .=) <$> _vvAccessInfo,-                  Just ("kind" .= _vvKind),-                  ("searchInfo" .=) <$> _vvSearchInfo,-                  ("selfLink" .=) <$> _vvSelfLink,-                  ("layerInfo" .=) <$> _vvLayerInfo,-                  ("saleInfo" .=) <$> _vvSaleInfo, ("id" .=) <$> _vvId,-                  ("recommendedInfo" .=) <$> _vvRecommendedInfo,-                  ("volumeInfo" .=) <$> _vvVolumeInfo])------- /See:/ 'geolayerDataGeoBoundaryItemItem' smart constructor.-data GeolayerDataGeoBoundaryItemItem = GeolayerDataGeoBoundaryItemItem'-    { _gdgbiiLatitude  :: !(Maybe (Textual Word32))-    , _gdgbiiLongitude :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataGeoBoundaryItemItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdgbiiLatitude'------ * 'gdgbiiLongitude'-geolayerDataGeoBoundaryItemItem-    :: GeolayerDataGeoBoundaryItemItem-geolayerDataGeoBoundaryItemItem =-    GeolayerDataGeoBoundaryItemItem'-    { _gdgbiiLatitude = Nothing-    , _gdgbiiLongitude = Nothing-    }--gdgbiiLatitude :: Lens' GeolayerDataGeoBoundaryItemItem (Maybe Word32)-gdgbiiLatitude-  = lens _gdgbiiLatitude-      (\ s a -> s{_gdgbiiLatitude = a})-      . mapping _Coerce--gdgbiiLongitude :: Lens' GeolayerDataGeoBoundaryItemItem (Maybe Word32)-gdgbiiLongitude-  = lens _gdgbiiLongitude-      (\ s a -> s{_gdgbiiLongitude = a})-      . mapping _Coerce--instance FromJSON GeolayerDataGeoBoundaryItemItem-         where-        parseJSON-          = withObject "GeolayerDataGeoBoundaryItemItem"-              (\ o ->-                 GeolayerDataGeoBoundaryItemItem' <$>-                   (o .:? "latitude") <*> (o .:? "longitude"))--instance ToJSON GeolayerDataGeoBoundaryItemItem where-        toJSON GeolayerDataGeoBoundaryItemItem'{..}-          = object-              (catMaybes-                 [("latitude" .=) <$> _gdgbiiLatitude,-                  ("longitude" .=) <$> _gdgbiiLongitude])------- /See:/ 'series' smart constructor.-data Series = Series'-    { _sKind   :: !Text-    , _sSeries :: !(Maybe [SeriesSeriesItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Series' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sKind'------ * 'sSeries'-series-    :: Series-series =-    Series'-    { _sKind = "books#series"-    , _sSeries = Nothing-    }---- | Resource type.-sKind :: Lens' Series Text-sKind = lens _sKind (\ s a -> s{_sKind = a})--sSeries :: Lens' Series [SeriesSeriesItem]-sSeries-  = lens _sSeries (\ s a -> s{_sSeries = a}) . _Default-      . _Coerce--instance FromJSON Series where-        parseJSON-          = withObject "Series"-              (\ o ->-                 Series' <$>-                   (o .:? "kind" .!= "books#series") <*>-                     (o .:? "series" .!= mempty))--instance ToJSON Series where-        toJSON Series'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _sKind),-                  ("series" .=) <$> _sSeries])------- /See:/ 'offersItemsItemItemsItem' smart constructor.-data OffersItemsItemItemsItem = OffersItemsItemItemsItem'-    { _oiiiiCanonicalVolumeLink :: !(Maybe Text)-    , _oiiiiCoverURL            :: !(Maybe Text)-    , _oiiiiVolumeId            :: !(Maybe Text)-    , _oiiiiAuthor              :: !(Maybe Text)-    , _oiiiiTitle               :: !(Maybe Text)-    , _oiiiiDescription         :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OffersItemsItemItemsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oiiiiCanonicalVolumeLink'------ * 'oiiiiCoverURL'------ * 'oiiiiVolumeId'------ * 'oiiiiAuthor'------ * 'oiiiiTitle'------ * 'oiiiiDescription'-offersItemsItemItemsItem-    :: OffersItemsItemItemsItem-offersItemsItemItemsItem =-    OffersItemsItemItemsItem'-    { _oiiiiCanonicalVolumeLink = Nothing-    , _oiiiiCoverURL = Nothing-    , _oiiiiVolumeId = Nothing-    , _oiiiiAuthor = Nothing-    , _oiiiiTitle = Nothing-    , _oiiiiDescription = Nothing-    }--oiiiiCanonicalVolumeLink :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiCanonicalVolumeLink-  = lens _oiiiiCanonicalVolumeLink-      (\ s a -> s{_oiiiiCanonicalVolumeLink = a})--oiiiiCoverURL :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiCoverURL-  = lens _oiiiiCoverURL-      (\ s a -> s{_oiiiiCoverURL = a})--oiiiiVolumeId :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiVolumeId-  = lens _oiiiiVolumeId-      (\ s a -> s{_oiiiiVolumeId = a})--oiiiiAuthor :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiAuthor-  = lens _oiiiiAuthor (\ s a -> s{_oiiiiAuthor = a})--oiiiiTitle :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiTitle-  = lens _oiiiiTitle (\ s a -> s{_oiiiiTitle = a})--oiiiiDescription :: Lens' OffersItemsItemItemsItem (Maybe Text)-oiiiiDescription-  = lens _oiiiiDescription-      (\ s a -> s{_oiiiiDescription = a})--instance FromJSON OffersItemsItemItemsItem where-        parseJSON-          = withObject "OffersItemsItemItemsItem"-              (\ o ->-                 OffersItemsItemItemsItem' <$>-                   (o .:? "canonicalVolumeLink") <*> (o .:? "coverUrl")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "author")-                     <*> (o .:? "title")-                     <*> (o .:? "description"))--instance ToJSON OffersItemsItemItemsItem where-        toJSON OffersItemsItemItemsItem'{..}-          = object-              (catMaybes-                 [("canonicalVolumeLink" .=) <$>-                    _oiiiiCanonicalVolumeLink,-                  ("coverUrl" .=) <$> _oiiiiCoverURL,-                  ("volumeId" .=) <$> _oiiiiVolumeId,-                  ("author" .=) <$> _oiiiiAuthor,-                  ("title" .=) <$> _oiiiiTitle,-                  ("description" .=) <$> _oiiiiDescription])------- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource' smart constructor.-data DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource = DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'-    { _dddwisidieisURL         :: !(Maybe Text)-    , _dddwisidieisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisidieisURL'------ * 'dddwisidieisAttribution'-dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource-    :: DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource-dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource =-    DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'-    { _dddwisidieisURL = Nothing-    , _dddwisidieisAttribution = Nothing-    }--dddwisidieisURL :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource (Maybe Text)-dddwisidieisURL-  = lens _dddwisidieisURL-      (\ s a -> s{_dddwisidieisURL = a})--dddwisidieisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource (Maybe Text)-dddwisidieisAttribution-  = lens _dddwisidieisAttribution-      (\ s a -> s{_dddwisidieisAttribution = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'-                   <$> (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwisidieisURL,-                  ("attribution" .=) <$> _dddwisidieisAttribution])------- /See:/ 'geolayerDataCommon' smart constructor.-data GeolayerDataCommon = GeolayerDataCommon'-    { _gdcSnippet         :: !(Maybe Text)-    , _gdcSnippetURL      :: !(Maybe Text)-    , _gdcLang            :: !(Maybe Text)-    , _gdcTitle           :: !(Maybe Text)-    , _gdcPreviewImageURL :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataCommon' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdcSnippet'------ * 'gdcSnippetURL'------ * 'gdcLang'------ * 'gdcTitle'------ * 'gdcPreviewImageURL'-geolayerDataCommon-    :: GeolayerDataCommon-geolayerDataCommon =-    GeolayerDataCommon'-    { _gdcSnippet = Nothing-    , _gdcSnippetURL = Nothing-    , _gdcLang = Nothing-    , _gdcTitle = Nothing-    , _gdcPreviewImageURL = Nothing-    }---- | The description for this location.-gdcSnippet :: Lens' GeolayerDataCommon (Maybe Text)-gdcSnippet-  = lens _gdcSnippet (\ s a -> s{_gdcSnippet = a})---- | The URL for information for this location. Ex: wikipedia link.-gdcSnippetURL :: Lens' GeolayerDataCommon (Maybe Text)-gdcSnippetURL-  = lens _gdcSnippetURL-      (\ s a -> s{_gdcSnippetURL = a})---- | The language of the information url and description.-gdcLang :: Lens' GeolayerDataCommon (Maybe Text)-gdcLang = lens _gdcLang (\ s a -> s{_gdcLang = a})---- | The display title and localized canonical name to use when searching for--- this entity on Google search.-gdcTitle :: Lens' GeolayerDataCommon (Maybe Text)-gdcTitle = lens _gdcTitle (\ s a -> s{_gdcTitle = a})---- | The URL for the preview image information.-gdcPreviewImageURL :: Lens' GeolayerDataCommon (Maybe Text)-gdcPreviewImageURL-  = lens _gdcPreviewImageURL-      (\ s a -> s{_gdcPreviewImageURL = a})--instance FromJSON GeolayerDataCommon where-        parseJSON-          = withObject "GeolayerDataCommon"-              (\ o ->-                 GeolayerDataCommon' <$>-                   (o .:? "snippet") <*> (o .:? "snippetUrl") <*>-                     (o .:? "lang")-                     <*> (o .:? "title")-                     <*> (o .:? "previewImageUrl"))--instance ToJSON GeolayerDataCommon where-        toJSON GeolayerDataCommon'{..}-          = object-              (catMaybes-                 [("snippet" .=) <$> _gdcSnippet,-                  ("snippetUrl" .=) <$> _gdcSnippetURL,-                  ("lang" .=) <$> _gdcLang, ("title" .=) <$> _gdcTitle,-                  ("previewImageUrl" .=) <$> _gdcPreviewImageURL])------- /See:/ 'geolayerDataGeo' smart constructor.-data GeolayerDataGeo = GeolayerDataGeo'-    { _gdgMapType     :: !(Maybe Text)-    , _gdgCachePolicy :: !(Maybe Text)-    , _gdgViewport    :: !(Maybe GeolayerDataGeoViewport)-    , _gdgBoundary    :: !(Maybe [[GeolayerDataGeoBoundaryItemItem]])-    , _gdgLatitude    :: !(Maybe (Textual Double))-    , _gdgZoom        :: !(Maybe (Textual Int32))-    , _gdgCountryCode :: !(Maybe Text)-    , _gdgLongitude   :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataGeo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdgMapType'------ * 'gdgCachePolicy'------ * 'gdgViewport'------ * 'gdgBoundary'------ * 'gdgLatitude'------ * 'gdgZoom'------ * 'gdgCountryCode'------ * 'gdgLongitude'-geolayerDataGeo-    :: GeolayerDataGeo-geolayerDataGeo =-    GeolayerDataGeo'-    { _gdgMapType = Nothing-    , _gdgCachePolicy = Nothing-    , _gdgViewport = Nothing-    , _gdgBoundary = Nothing-    , _gdgLatitude = Nothing-    , _gdgZoom = Nothing-    , _gdgCountryCode = Nothing-    , _gdgLongitude = Nothing-    }---- | The type of map that should be used for this location. EX: HYBRID,--- ROADMAP, SATELLITE, TERRAIN-gdgMapType :: Lens' GeolayerDataGeo (Maybe Text)-gdgMapType-  = lens _gdgMapType (\ s a -> s{_gdgMapType = a})---- | The cache policy active for this data. EX: UNRESTRICTED, RESTRICTED,--- NEVER-gdgCachePolicy :: Lens' GeolayerDataGeo (Maybe Text)-gdgCachePolicy-  = lens _gdgCachePolicy-      (\ s a -> s{_gdgCachePolicy = a})---- | The viewport for showing this location. This is a latitude, longitude--- rectangle.-gdgViewport :: Lens' GeolayerDataGeo (Maybe GeolayerDataGeoViewport)-gdgViewport-  = lens _gdgViewport (\ s a -> s{_gdgViewport = a})---- | The boundary of the location as a set of loops containing pairs of--- latitude, longitude coordinates.-gdgBoundary :: Lens' GeolayerDataGeo [[GeolayerDataGeoBoundaryItemItem]]-gdgBoundary-  = lens _gdgBoundary (\ s a -> s{_gdgBoundary = a}) .-      _Default-      . _Coerce---- | The latitude of the location.-gdgLatitude :: Lens' GeolayerDataGeo (Maybe Double)-gdgLatitude-  = lens _gdgLatitude (\ s a -> s{_gdgLatitude = a}) .-      mapping _Coerce---- | The Zoom level to use for the map. Zoom levels between 0 (the lowest--- zoom level, in which the entire world can be seen on one map) to 21+--- (down to individual buildings). See:--- https:\/\/developers.google.com\/maps\/documentation\/staticmaps\/#Zoomlevels-gdgZoom :: Lens' GeolayerDataGeo (Maybe Int32)-gdgZoom-  = lens _gdgZoom (\ s a -> s{_gdgZoom = a}) .-      mapping _Coerce---- | The country code of the location.-gdgCountryCode :: Lens' GeolayerDataGeo (Maybe Text)-gdgCountryCode-  = lens _gdgCountryCode-      (\ s a -> s{_gdgCountryCode = a})---- | The longitude of the location.-gdgLongitude :: Lens' GeolayerDataGeo (Maybe Double)-gdgLongitude-  = lens _gdgLongitude (\ s a -> s{_gdgLongitude = a})-      . mapping _Coerce--instance FromJSON GeolayerDataGeo where-        parseJSON-          = withObject "GeolayerDataGeo"-              (\ o ->-                 GeolayerDataGeo' <$>-                   (o .:? "mapType") <*> (o .:? "cachePolicy") <*>-                     (o .:? "viewport")-                     <*> (o .:? "boundary" .!= mempty)-                     <*> (o .:? "latitude")-                     <*> (o .:? "zoom")-                     <*> (o .:? "countryCode")-                     <*> (o .:? "longitude"))--instance ToJSON GeolayerDataGeo where-        toJSON GeolayerDataGeo'{..}-          = object-              (catMaybes-                 [("mapType" .=) <$> _gdgMapType,-                  ("cachePolicy" .=) <$> _gdgCachePolicy,-                  ("viewport" .=) <$> _gdgViewport,-                  ("boundary" .=) <$> _gdgBoundary,-                  ("latitude" .=) <$> _gdgLatitude,-                  ("zoom" .=) <$> _gdgZoom,-                  ("countryCode" .=) <$> _gdgCountryCode,-                  ("longitude" .=) <$> _gdgLongitude])------- /See:/ 'dictlayerDataDictWordsItem' smart constructor.-data DictlayerDataDictWordsItem = DictlayerDataDictWordsItem'-    { _dddwiSenses      :: !(Maybe [DictlayerDataDictWordsItemSensesItem])-    , _dddwiSource      :: !(Maybe DictlayerDataDictWordsItemSource)-    , _dddwiDerivatives :: !(Maybe [DictlayerDataDictWordsItemDerivativesItem])-    , _dddwiExamples    :: !(Maybe [DictlayerDataDictWordsItemExamplesItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwiSenses'------ * 'dddwiSource'------ * 'dddwiDerivatives'------ * 'dddwiExamples'-dictlayerDataDictWordsItem-    :: DictlayerDataDictWordsItem-dictlayerDataDictWordsItem =-    DictlayerDataDictWordsItem'-    { _dddwiSenses = Nothing-    , _dddwiSource = Nothing-    , _dddwiDerivatives = Nothing-    , _dddwiExamples = Nothing-    }--dddwiSenses :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemSensesItem]-dddwiSenses-  = lens _dddwiSenses (\ s a -> s{_dddwiSenses = a}) .-      _Default-      . _Coerce---- | The words with different meanings but not related words, e.g. \"go\"--- (game) and \"go\" (verb).-dddwiSource :: Lens' DictlayerDataDictWordsItem (Maybe DictlayerDataDictWordsItemSource)-dddwiSource-  = lens _dddwiSource (\ s a -> s{_dddwiSource = a})--dddwiDerivatives :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemDerivativesItem]-dddwiDerivatives-  = lens _dddwiDerivatives-      (\ s a -> s{_dddwiDerivatives = a})-      . _Default-      . _Coerce--dddwiExamples :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemExamplesItem]-dddwiExamples-  = lens _dddwiExamples-      (\ s a -> s{_dddwiExamples = a})-      . _Default-      . _Coerce--instance FromJSON DictlayerDataDictWordsItem where-        parseJSON-          = withObject "DictlayerDataDictWordsItem"-              (\ o ->-                 DictlayerDataDictWordsItem' <$>-                   (o .:? "senses" .!= mempty) <*> (o .:? "source") <*>-                     (o .:? "derivatives" .!= mempty)-                     <*> (o .:? "examples" .!= mempty))--instance ToJSON DictlayerDataDictWordsItem where-        toJSON DictlayerDataDictWordsItem'{..}-          = object-              (catMaybes-                 [("senses" .=) <$> _dddwiSenses,-                  ("source" .=) <$> _dddwiSource,-                  ("derivatives" .=) <$> _dddwiDerivatives,-                  ("examples" .=) <$> _dddwiExamples])------- /See:/ 'categoryItemsItem' smart constructor.-data CategoryItemsItem = CategoryItemsItem'-    { _ciiName       :: !(Maybe Text)-    , _ciiCategoryId :: !(Maybe Text)-    , _ciiBadgeURL   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'CategoryItemsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ciiName'------ * 'ciiCategoryId'------ * 'ciiBadgeURL'-categoryItemsItem-    :: CategoryItemsItem-categoryItemsItem =-    CategoryItemsItem'-    { _ciiName = Nothing-    , _ciiCategoryId = Nothing-    , _ciiBadgeURL = Nothing-    }--ciiName :: Lens' CategoryItemsItem (Maybe Text)-ciiName = lens _ciiName (\ s a -> s{_ciiName = a})--ciiCategoryId :: Lens' CategoryItemsItem (Maybe Text)-ciiCategoryId-  = lens _ciiCategoryId-      (\ s a -> s{_ciiCategoryId = a})--ciiBadgeURL :: Lens' CategoryItemsItem (Maybe Text)-ciiBadgeURL-  = lens _ciiBadgeURL (\ s a -> s{_ciiBadgeURL = a})--instance FromJSON CategoryItemsItem where-        parseJSON-          = withObject "CategoryItemsItem"-              (\ o ->-                 CategoryItemsItem' <$>-                   (o .:? "name") <*> (o .:? "categoryId") <*>-                     (o .:? "badgeUrl"))--instance ToJSON CategoryItemsItem where-        toJSON CategoryItemsItem'{..}-          = object-              (catMaybes-                 [("name" .=) <$> _ciiName,-                  ("categoryId" .=) <$> _ciiCategoryId,-                  ("badgeUrl" .=) <$> _ciiBadgeURL])------- /See:/ 'dictlayerDataDictWordsItemDerivativesItemSource' smart constructor.-data DictlayerDataDictWordsItemDerivativesItemSource = DictlayerDataDictWordsItemDerivativesItemSource'-    { _dddwidisURL         :: !(Maybe Text)-    , _dddwidisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemDerivativesItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwidisURL'------ * 'dddwidisAttribution'-dictlayerDataDictWordsItemDerivativesItemSource-    :: DictlayerDataDictWordsItemDerivativesItemSource-dictlayerDataDictWordsItemDerivativesItemSource =-    DictlayerDataDictWordsItemDerivativesItemSource'-    { _dddwidisURL = Nothing-    , _dddwidisAttribution = Nothing-    }--dddwidisURL :: Lens' DictlayerDataDictWordsItemDerivativesItemSource (Maybe Text)-dddwidisURL-  = lens _dddwidisURL (\ s a -> s{_dddwidisURL = a})--dddwidisAttribution :: Lens' DictlayerDataDictWordsItemDerivativesItemSource (Maybe Text)-dddwidisAttribution-  = lens _dddwidisAttribution-      (\ s a -> s{_dddwidisAttribution = a})--instance FromJSON-         DictlayerDataDictWordsItemDerivativesItemSource where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemDerivativesItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemDerivativesItemSource' <$>-                   (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON-         DictlayerDataDictWordsItemDerivativesItemSource where-        toJSON-          DictlayerDataDictWordsItemDerivativesItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwidisURL,-                  ("attribution" .=) <$> _dddwidisAttribution])------- /See:/ 'geolayerData' smart constructor.-data GeolayerData = GeolayerData'-    { _gdKind   :: !Text-    , _gdGeo    :: !(Maybe GeolayerDataGeo)-    , _gdCommon :: !(Maybe GeolayerDataCommon)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdKind'------ * 'gdGeo'------ * 'gdCommon'-geolayerData-    :: GeolayerData-geolayerData =-    GeolayerData'-    { _gdKind = "books#geolayerdata"-    , _gdGeo = Nothing-    , _gdCommon = Nothing-    }--gdKind :: Lens' GeolayerData Text-gdKind = lens _gdKind (\ s a -> s{_gdKind = a})--gdGeo :: Lens' GeolayerData (Maybe GeolayerDataGeo)-gdGeo = lens _gdGeo (\ s a -> s{_gdGeo = a})--gdCommon :: Lens' GeolayerData (Maybe GeolayerDataCommon)-gdCommon = lens _gdCommon (\ s a -> s{_gdCommon = a})--instance FromJSON GeolayerData where-        parseJSON-          = withObject "GeolayerData"-              (\ o ->-                 GeolayerData' <$>-                   (o .:? "kind" .!= "books#geolayerdata") <*>-                     (o .:? "geo")-                     <*> (o .:? "common"))--instance ToJSON GeolayerData where-        toJSON GeolayerData'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _gdKind), ("geo" .=) <$> _gdGeo,-                  ("common" .=) <$> _gdCommon])---- | The words with different meanings but not related words, e.g. \"go\"--- (game) and \"go\" (verb).------ /See:/ 'dictlayerDataDictWordsItemSource' smart constructor.-data DictlayerDataDictWordsItemSource = DictlayerDataDictWordsItemSource'-    { _dddwisURL         :: !(Maybe Text)-    , _dddwisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisURL'------ * 'dddwisAttribution'-dictlayerDataDictWordsItemSource-    :: DictlayerDataDictWordsItemSource-dictlayerDataDictWordsItemSource =-    DictlayerDataDictWordsItemSource'-    { _dddwisURL = Nothing-    , _dddwisAttribution = Nothing-    }--dddwisURL :: Lens' DictlayerDataDictWordsItemSource (Maybe Text)-dddwisURL-  = lens _dddwisURL (\ s a -> s{_dddwisURL = a})--dddwisAttribution :: Lens' DictlayerDataDictWordsItemSource (Maybe Text)-dddwisAttribution-  = lens _dddwisAttribution-      (\ s a -> s{_dddwisAttribution = a})--instance FromJSON DictlayerDataDictWordsItemSource-         where-        parseJSON-          = withObject "DictlayerDataDictWordsItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemSource' <$>-                   (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON DictlayerDataDictWordsItemSource-         where-        toJSON DictlayerDataDictWordsItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwisURL,-                  ("attribution" .=) <$> _dddwisAttribution])------- /See:/ 'dictlayerDataDictWordsItemDerivativesItem' smart constructor.-data DictlayerDataDictWordsItemDerivativesItem = DictlayerDataDictWordsItemDerivativesItem'-    { _dddwidiText   :: !(Maybe Text)-    , _dddwidiSource :: !(Maybe DictlayerDataDictWordsItemDerivativesItemSource)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemDerivativesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwidiText'------ * 'dddwidiSource'-dictlayerDataDictWordsItemDerivativesItem-    :: DictlayerDataDictWordsItemDerivativesItem-dictlayerDataDictWordsItemDerivativesItem =-    DictlayerDataDictWordsItemDerivativesItem'-    { _dddwidiText = Nothing-    , _dddwidiSource = Nothing-    }--dddwidiText :: Lens' DictlayerDataDictWordsItemDerivativesItem (Maybe Text)-dddwidiText-  = lens _dddwidiText (\ s a -> s{_dddwidiText = a})--dddwidiSource :: Lens' DictlayerDataDictWordsItemDerivativesItem (Maybe DictlayerDataDictWordsItemDerivativesItemSource)-dddwidiSource-  = lens _dddwidiSource-      (\ s a -> s{_dddwidiSource = a})--instance FromJSON-         DictlayerDataDictWordsItemDerivativesItem where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemDerivativesItem"-              (\ o ->-                 DictlayerDataDictWordsItemDerivativesItem' <$>-                   (o .:? "text") <*> (o .:? "source"))--instance ToJSON-         DictlayerDataDictWordsItemDerivativesItem where-        toJSON DictlayerDataDictWordsItemDerivativesItem'{..}-          = object-              (catMaybes-                 [("text" .=) <$> _dddwidiText,-                  ("source" .=) <$> _dddwidiSource])------- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem' smart constructor.-data DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem = DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'-    { _dddwisidieiText   :: !(Maybe Text)-    , _dddwisidieiSource :: !(Maybe DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisidieiText'------ * 'dddwisidieiSource'-dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem-    :: DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem-dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem =-    DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'-    { _dddwisidieiText = Nothing-    , _dddwisidieiSource = Nothing-    }--dddwisidieiText :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem (Maybe Text)-dddwisidieiText-  = lens _dddwisidieiText-      (\ s a -> s{_dddwisidieiText = a})--dddwisidieiSource :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem (Maybe DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource)-dddwisidieiSource-  = lens _dddwisidieiSource-      (\ s a -> s{_dddwisidieiSource = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'-                   <$> (o .:? "text") <*> (o .:? "source"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'{..}-          = object-              (catMaybes-                 [("text" .=) <$> _dddwisidieiText,-                  ("source" .=) <$> _dddwisidieiSource])------- /See:/ 'userSettingsNotificationRewardExpirations' smart constructor.-newtype UserSettingsNotificationRewardExpirations = UserSettingsNotificationRewardExpirations'-    { _usnreOptedState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotificationRewardExpirations' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnreOptedState'-userSettingsNotificationRewardExpirations-    :: UserSettingsNotificationRewardExpirations-userSettingsNotificationRewardExpirations =-    UserSettingsNotificationRewardExpirations'-    { _usnreOptedState = Nothing-    }--usnreOptedState :: Lens' UserSettingsNotificationRewardExpirations (Maybe Text)-usnreOptedState-  = lens _usnreOptedState-      (\ s a -> s{_usnreOptedState = a})--instance FromJSON-         UserSettingsNotificationRewardExpirations where-        parseJSON-          = withObject-              "UserSettingsNotificationRewardExpirations"-              (\ o ->-                 UserSettingsNotificationRewardExpirations' <$>-                   (o .:? "opted_state"))--instance ToJSON-         UserSettingsNotificationRewardExpirations where-        toJSON UserSettingsNotificationRewardExpirations'{..}-          = object-              (catMaybes [("opted_state" .=) <$> _usnreOptedState])------- /See:/ 'dictlayerData' smart constructor.-data DictlayerData = DictlayerData'-    { _ddKind   :: !Text-    , _ddDict   :: !(Maybe DictlayerDataDict)-    , _ddCommon :: !(Maybe DictlayerDataCommon)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerData' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddKind'------ * 'ddDict'------ * 'ddCommon'-dictlayerData-    :: DictlayerData-dictlayerData =-    DictlayerData'-    { _ddKind = "books#dictlayerdata"-    , _ddDict = Nothing-    , _ddCommon = Nothing-    }--ddKind :: Lens' DictlayerData Text-ddKind = lens _ddKind (\ s a -> s{_ddKind = a})--ddDict :: Lens' DictlayerData (Maybe DictlayerDataDict)-ddDict = lens _ddDict (\ s a -> s{_ddDict = a})--ddCommon :: Lens' DictlayerData (Maybe DictlayerDataCommon)-ddCommon = lens _ddCommon (\ s a -> s{_ddCommon = a})--instance FromJSON DictlayerData where-        parseJSON-          = withObject "DictlayerData"-              (\ o ->-                 DictlayerData' <$>-                   (o .:? "kind" .!= "books#dictlayerdata") <*>-                     (o .:? "dict")-                     <*> (o .:? "common"))--instance ToJSON DictlayerData where-        toJSON DictlayerData'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _ddKind), ("dict" .=) <$> _ddDict,-                  ("common" .=) <$> _ddCommon])------- /See:/ 'dictlayerDataDictWordsItemSensesItemSynonymsItemSource' smart constructor.-data DictlayerDataDictWordsItemSensesItemSynonymsItemSource = DictlayerDataDictWordsItemSensesItemSynonymsItemSource'-    { _dddwisisisURL         :: !(Maybe Text)-    , _dddwisisisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSynonymsItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisisisURL'------ * 'dddwisisisAttribution'-dictlayerDataDictWordsItemSensesItemSynonymsItemSource-    :: DictlayerDataDictWordsItemSensesItemSynonymsItemSource-dictlayerDataDictWordsItemSensesItemSynonymsItemSource =-    DictlayerDataDictWordsItemSensesItemSynonymsItemSource'-    { _dddwisisisURL = Nothing-    , _dddwisisisAttribution = Nothing-    }--dddwisisisURL :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItemSource (Maybe Text)-dddwisisisURL-  = lens _dddwisisisURL-      (\ s a -> s{_dddwisisisURL = a})--dddwisisisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItemSource (Maybe Text)-dddwisisisAttribution-  = lens _dddwisisisAttribution-      (\ s a -> s{_dddwisisisAttribution = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemSynonymsItemSource-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemSynonymsItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemSynonymsItemSource'-                   <$> (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemSynonymsItemSource-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemSynonymsItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwisisisURL,-                  ("attribution" .=) <$> _dddwisisisAttribution])------- /See:/ 'seriesmembership' smart constructor.-data Seriesmembership = Seriesmembership'-    { _serNextPageToken :: !(Maybe Text)-    , _serKind          :: !Text-    , _serMember        :: !(Maybe [Volume])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Seriesmembership' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'serNextPageToken'------ * 'serKind'------ * 'serMember'-seriesmembership-    :: Seriesmembership-seriesmembership =-    Seriesmembership'-    { _serNextPageToken = Nothing-    , _serKind = "books#series#membership"-    , _serMember = Nothing-    }--serNextPageToken :: Lens' Seriesmembership (Maybe Text)-serNextPageToken-  = lens _serNextPageToken-      (\ s a -> s{_serNextPageToken = a})---- | Resorce type.-serKind :: Lens' Seriesmembership Text-serKind = lens _serKind (\ s a -> s{_serKind = a})--serMember :: Lens' Seriesmembership [Volume]-serMember-  = lens _serMember (\ s a -> s{_serMember = a}) .-      _Default-      . _Coerce--instance FromJSON Seriesmembership where-        parseJSON-          = withObject "Seriesmembership"-              (\ o ->-                 Seriesmembership' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "books#series#membership")-                     <*> (o .:? "member" .!= mempty))--instance ToJSON Seriesmembership where-        toJSON Seriesmembership'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _serNextPageToken,-                  Just ("kind" .= _serKind),-                  ("member" .=) <$> _serMember])------- /See:/ 'userSettingsNotification' smart constructor.-data UserSettingsNotification = UserSettingsNotification'-    { _usnRewardExpirations :: !(Maybe UserSettingsNotificationRewardExpirations)-    , _usnPriceDrop         :: !(Maybe UserSettingsNotificationPriceDrop)-    , _usnMatchMyInterests  :: !(Maybe UserSettingsNotificationMatchMyInterests)-    , _usnMoreFromAuthors   :: !(Maybe UserSettingsNotificationMoreFromAuthors)-    , _usnMoreFromSeries    :: !(Maybe UserSettingsNotificationMoreFromSeries)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotification' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnRewardExpirations'------ * 'usnPriceDrop'------ * 'usnMatchMyInterests'------ * 'usnMoreFromAuthors'------ * 'usnMoreFromSeries'-userSettingsNotification-    :: UserSettingsNotification-userSettingsNotification =-    UserSettingsNotification'-    { _usnRewardExpirations = Nothing-    , _usnPriceDrop = Nothing-    , _usnMatchMyInterests = Nothing-    , _usnMoreFromAuthors = Nothing-    , _usnMoreFromSeries = Nothing-    }--usnRewardExpirations :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationRewardExpirations)-usnRewardExpirations-  = lens _usnRewardExpirations-      (\ s a -> s{_usnRewardExpirations = a})--usnPriceDrop :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationPriceDrop)-usnPriceDrop-  = lens _usnPriceDrop (\ s a -> s{_usnPriceDrop = a})--usnMatchMyInterests :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMatchMyInterests)-usnMatchMyInterests-  = lens _usnMatchMyInterests-      (\ s a -> s{_usnMatchMyInterests = a})--usnMoreFromAuthors :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMoreFromAuthors)-usnMoreFromAuthors-  = lens _usnMoreFromAuthors-      (\ s a -> s{_usnMoreFromAuthors = a})--usnMoreFromSeries :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMoreFromSeries)-usnMoreFromSeries-  = lens _usnMoreFromSeries-      (\ s a -> s{_usnMoreFromSeries = a})--instance FromJSON UserSettingsNotification where-        parseJSON-          = withObject "UserSettingsNotification"-              (\ o ->-                 UserSettingsNotification' <$>-                   (o .:? "rewardExpirations") <*> (o .:? "priceDrop")-                     <*> (o .:? "matchMyInterests")-                     <*> (o .:? "moreFromAuthors")-                     <*> (o .:? "moreFromSeries"))--instance ToJSON UserSettingsNotification where-        toJSON UserSettingsNotification'{..}-          = object-              (catMaybes-                 [("rewardExpirations" .=) <$> _usnRewardExpirations,-                  ("priceDrop" .=) <$> _usnPriceDrop,-                  ("matchMyInterests" .=) <$> _usnMatchMyInterests,-                  ("moreFromAuthors" .=) <$> _usnMoreFromAuthors,-                  ("moreFromSeries" .=) <$> _usnMoreFromSeries])------- /See:/ 'dictlayerDataDictWordsItemSensesItemSynonymsItem' smart constructor.-data DictlayerDataDictWordsItemSensesItemSynonymsItem = DictlayerDataDictWordsItemSensesItemSynonymsItem'-    { _dddwisisiText   :: !(Maybe Text)-    , _dddwisisiSource :: !(Maybe DictlayerDataDictWordsItemSensesItemSynonymsItemSource)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSynonymsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisisiText'------ * 'dddwisisiSource'-dictlayerDataDictWordsItemSensesItemSynonymsItem-    :: DictlayerDataDictWordsItemSensesItemSynonymsItem-dictlayerDataDictWordsItemSensesItemSynonymsItem =-    DictlayerDataDictWordsItemSensesItemSynonymsItem'-    { _dddwisisiText = Nothing-    , _dddwisisiSource = Nothing-    }--dddwisisiText :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItem (Maybe Text)-dddwisisiText-  = lens _dddwisisiText-      (\ s a -> s{_dddwisisiText = a})--dddwisisiSource :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItem (Maybe DictlayerDataDictWordsItemSensesItemSynonymsItemSource)-dddwisisiSource-  = lens _dddwisisiSource-      (\ s a -> s{_dddwisisiSource = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemSynonymsItem-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemSynonymsItem"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemSynonymsItem' <$>-                   (o .:? "text") <*> (o .:? "source"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemSynonymsItem-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemSynonymsItem'{..}-          = object-              (catMaybes-                 [("text" .=) <$> _dddwisisiText,-                  ("source" .=) <$> _dddwisisiSource])------- /See:/ 'geolayerDataGeoViewportLo' smart constructor.-data GeolayerDataGeoViewportLo = GeolayerDataGeoViewportLo'-    { _gdgvlLatitude  :: !(Maybe (Textual Double))-    , _gdgvlLongitude :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataGeoViewportLo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdgvlLatitude'------ * 'gdgvlLongitude'-geolayerDataGeoViewportLo-    :: GeolayerDataGeoViewportLo-geolayerDataGeoViewportLo =-    GeolayerDataGeoViewportLo'-    { _gdgvlLatitude = Nothing-    , _gdgvlLongitude = Nothing-    }--gdgvlLatitude :: Lens' GeolayerDataGeoViewportLo (Maybe Double)-gdgvlLatitude-  = lens _gdgvlLatitude-      (\ s a -> s{_gdgvlLatitude = a})-      . mapping _Coerce--gdgvlLongitude :: Lens' GeolayerDataGeoViewportLo (Maybe Double)-gdgvlLongitude-  = lens _gdgvlLongitude-      (\ s a -> s{_gdgvlLongitude = a})-      . mapping _Coerce--instance FromJSON GeolayerDataGeoViewportLo where-        parseJSON-          = withObject "GeolayerDataGeoViewportLo"-              (\ o ->-                 GeolayerDataGeoViewportLo' <$>-                   (o .:? "latitude") <*> (o .:? "longitude"))--instance ToJSON GeolayerDataGeoViewportLo where-        toJSON GeolayerDataGeoViewportLo'{..}-          = object-              (catMaybes-                 [("latitude" .=) <$> _gdgvlLatitude,-                  ("longitude" .=) <$> _gdgvlLongitude])---- | Offer list (=undiscounted) price in Micros.------ /See:/ 'volumeSaleInfoOffersItemListPrice' smart constructor.-data VolumeSaleInfoOffersItemListPrice = VolumeSaleInfoOffersItemListPrice'-    { _vsioilpCurrencyCode   :: !(Maybe Text)-    , _vsioilpAmountInMicros :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoOffersItemListPrice' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsioilpCurrencyCode'------ * 'vsioilpAmountInMicros'-volumeSaleInfoOffersItemListPrice-    :: VolumeSaleInfoOffersItemListPrice-volumeSaleInfoOffersItemListPrice =-    VolumeSaleInfoOffersItemListPrice'-    { _vsioilpCurrencyCode = Nothing-    , _vsioilpAmountInMicros = Nothing-    }--vsioilpCurrencyCode :: Lens' VolumeSaleInfoOffersItemListPrice (Maybe Text)-vsioilpCurrencyCode-  = lens _vsioilpCurrencyCode-      (\ s a -> s{_vsioilpCurrencyCode = a})--vsioilpAmountInMicros :: Lens' VolumeSaleInfoOffersItemListPrice (Maybe Double)-vsioilpAmountInMicros-  = lens _vsioilpAmountInMicros-      (\ s a -> s{_vsioilpAmountInMicros = a})-      . mapping _Coerce--instance FromJSON VolumeSaleInfoOffersItemListPrice-         where-        parseJSON-          = withObject "VolumeSaleInfoOffersItemListPrice"-              (\ o ->-                 VolumeSaleInfoOffersItemListPrice' <$>-                   (o .:? "currencyCode") <*> (o .:? "amountInMicros"))--instance ToJSON VolumeSaleInfoOffersItemListPrice-         where-        toJSON VolumeSaleInfoOffersItemListPrice'{..}-          = object-              (catMaybes-                 [("currencyCode" .=) <$> _vsioilpCurrencyCode,-                  ("amountInMicros" .=) <$> _vsioilpAmountInMicros])------- /See:/ 'downloadAccessRestriction' smart constructor.-data DownloadAccessRestriction = DownloadAccessRestriction'-    { _darJustAcquired       :: !(Maybe Bool)-    , _darSignature          :: !(Maybe Text)-    , _darKind               :: !Text-    , _darMaxDownloadDevices :: !(Maybe (Textual Int32))-    , _darDownloadsAcquired  :: !(Maybe (Textual Int32))-    , _darReasonCode         :: !(Maybe Text)-    , _darVolumeId           :: !(Maybe Text)-    , _darRestricted         :: !(Maybe Bool)-    , _darSource             :: !(Maybe Text)-    , _darDeviceAllowed      :: !(Maybe Bool)-    , _darMessage            :: !(Maybe Text)-    , _darNonce              :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DownloadAccessRestriction' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'darJustAcquired'------ * 'darSignature'------ * 'darKind'------ * 'darMaxDownloadDevices'------ * 'darDownloadsAcquired'------ * 'darReasonCode'------ * 'darVolumeId'------ * 'darRestricted'------ * 'darSource'------ * 'darDeviceAllowed'------ * 'darMessage'------ * 'darNonce'-downloadAccessRestriction-    :: DownloadAccessRestriction-downloadAccessRestriction =-    DownloadAccessRestriction'-    { _darJustAcquired = Nothing-    , _darSignature = Nothing-    , _darKind = "books#downloadAccessRestriction"-    , _darMaxDownloadDevices = Nothing-    , _darDownloadsAcquired = Nothing-    , _darReasonCode = Nothing-    , _darVolumeId = Nothing-    , _darRestricted = Nothing-    , _darSource = Nothing-    , _darDeviceAllowed = Nothing-    , _darMessage = Nothing-    , _darNonce = Nothing-    }---- | If deviceAllowed, whether access was just acquired with this request.-darJustAcquired :: Lens' DownloadAccessRestriction (Maybe Bool)-darJustAcquired-  = lens _darJustAcquired-      (\ s a -> s{_darJustAcquired = a})---- | Response signature.-darSignature :: Lens' DownloadAccessRestriction (Maybe Text)-darSignature-  = lens _darSignature (\ s a -> s{_darSignature = a})---- | Resource type.-darKind :: Lens' DownloadAccessRestriction Text-darKind = lens _darKind (\ s a -> s{_darKind = a})---- | If restricted, the maximum number of content download licenses for this--- volume.-darMaxDownloadDevices :: Lens' DownloadAccessRestriction (Maybe Int32)-darMaxDownloadDevices-  = lens _darMaxDownloadDevices-      (\ s a -> s{_darMaxDownloadDevices = a})-      . mapping _Coerce---- | If restricted, the number of content download licenses already acquired--- (including the requesting client, if licensed).-darDownloadsAcquired :: Lens' DownloadAccessRestriction (Maybe Int32)-darDownloadsAcquired-  = lens _darDownloadsAcquired-      (\ s a -> s{_darDownloadsAcquired = a})-      . mapping _Coerce---- | Error\/warning reason code. Additional codes may be added in the future.--- 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200--- WARNING_USED_LAST_ACCESS-darReasonCode :: Lens' DownloadAccessRestriction (Maybe Text)-darReasonCode-  = lens _darReasonCode-      (\ s a -> s{_darReasonCode = a})---- | Identifies the volume for which this entry applies.-darVolumeId :: Lens' DownloadAccessRestriction (Maybe Text)-darVolumeId-  = lens _darVolumeId (\ s a -> s{_darVolumeId = a})---- | Whether this volume has any download access restrictions.-darRestricted :: Lens' DownloadAccessRestriction (Maybe Bool)-darRestricted-  = lens _darRestricted-      (\ s a -> s{_darRestricted = a})---- | Client app identifier for verification. Download access and--- client-validation only.-darSource :: Lens' DownloadAccessRestriction (Maybe Text)-darSource-  = lens _darSource (\ s a -> s{_darSource = a})---- | If restricted, whether access is granted for this (user, device,--- volume).-darDeviceAllowed :: Lens' DownloadAccessRestriction (Maybe Bool)-darDeviceAllowed-  = lens _darDeviceAllowed-      (\ s a -> s{_darDeviceAllowed = a})---- | Error\/warning message.-darMessage :: Lens' DownloadAccessRestriction (Maybe Text)-darMessage-  = lens _darMessage (\ s a -> s{_darMessage = a})---- | Client nonce for verification. Download access and client-validation--- only.-darNonce :: Lens' DownloadAccessRestriction (Maybe Text)-darNonce = lens _darNonce (\ s a -> s{_darNonce = a})--instance FromJSON DownloadAccessRestriction where-        parseJSON-          = withObject "DownloadAccessRestriction"-              (\ o ->-                 DownloadAccessRestriction' <$>-                   (o .:? "justAcquired") <*> (o .:? "signature") <*>-                     (o .:? "kind" .!= "books#downloadAccessRestriction")-                     <*> (o .:? "maxDownloadDevices")-                     <*> (o .:? "downloadsAcquired")-                     <*> (o .:? "reasonCode")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "restricted")-                     <*> (o .:? "source")-                     <*> (o .:? "deviceAllowed")-                     <*> (o .:? "message")-                     <*> (o .:? "nonce"))--instance ToJSON DownloadAccessRestriction where-        toJSON DownloadAccessRestriction'{..}-          = object-              (catMaybes-                 [("justAcquired" .=) <$> _darJustAcquired,-                  ("signature" .=) <$> _darSignature,-                  Just ("kind" .= _darKind),-                  ("maxDownloadDevices" .=) <$> _darMaxDownloadDevices,-                  ("downloadsAcquired" .=) <$> _darDownloadsAcquired,-                  ("reasonCode" .=) <$> _darReasonCode,-                  ("volumeId" .=) <$> _darVolumeId,-                  ("restricted" .=) <$> _darRestricted,-                  ("source" .=) <$> _darSource,-                  ("deviceAllowed" .=) <$> _darDeviceAllowed,-                  ("message" .=) <$> _darMessage,-                  ("nonce" .=) <$> _darNonce])------- /See:/ 'dictlayerDataCommon' smart constructor.-newtype DictlayerDataCommon = DictlayerDataCommon'-    { _ddcTitle :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataCommon' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ddcTitle'-dictlayerDataCommon-    :: DictlayerDataCommon-dictlayerDataCommon =-    DictlayerDataCommon'-    { _ddcTitle = Nothing-    }---- | The display title and localized canonical name to use when searching for--- this entity on Google search.-ddcTitle :: Lens' DictlayerDataCommon (Maybe Text)-ddcTitle = lens _ddcTitle (\ s a -> s{_ddcTitle = a})--instance FromJSON DictlayerDataCommon where-        parseJSON-          = withObject "DictlayerDataCommon"-              (\ o -> DictlayerDataCommon' <$> (o .:? "title"))--instance ToJSON DictlayerDataCommon where-        toJSON DictlayerDataCommon'{..}-          = object (catMaybes [("title" .=) <$> _ddcTitle])------- /See:/ 'discoveryclustersClustersItem' smart constructor.-data DiscoveryclustersClustersItem = DiscoveryclustersClustersItem'-    { _dciBannerWithContentContainer :: !(Maybe DiscoveryclustersClustersItemBanner_with_content_container)-    , _dciUid                        :: !(Maybe Text)-    , _dciTotalVolumes               :: !(Maybe (Textual Int32))-    , _dciSubTitle                   :: !(Maybe Text)-    , _dciTitle                      :: !(Maybe Text)-    , _dciVolumes                    :: !(Maybe [Volume])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiscoveryclustersClustersItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dciBannerWithContentContainer'------ * 'dciUid'------ * 'dciTotalVolumes'------ * 'dciSubTitle'------ * 'dciTitle'------ * 'dciVolumes'-discoveryclustersClustersItem-    :: DiscoveryclustersClustersItem-discoveryclustersClustersItem =-    DiscoveryclustersClustersItem'-    { _dciBannerWithContentContainer = Nothing-    , _dciUid = Nothing-    , _dciTotalVolumes = Nothing-    , _dciSubTitle = Nothing-    , _dciTitle = Nothing-    , _dciVolumes = Nothing-    }--dciBannerWithContentContainer :: Lens' DiscoveryclustersClustersItem (Maybe DiscoveryclustersClustersItemBanner_with_content_container)-dciBannerWithContentContainer-  = lens _dciBannerWithContentContainer-      (\ s a -> s{_dciBannerWithContentContainer = a})--dciUid :: Lens' DiscoveryclustersClustersItem (Maybe Text)-dciUid = lens _dciUid (\ s a -> s{_dciUid = a})--dciTotalVolumes :: Lens' DiscoveryclustersClustersItem (Maybe Int32)-dciTotalVolumes-  = lens _dciTotalVolumes-      (\ s a -> s{_dciTotalVolumes = a})-      . mapping _Coerce--dciSubTitle :: Lens' DiscoveryclustersClustersItem (Maybe Text)-dciSubTitle-  = lens _dciSubTitle (\ s a -> s{_dciSubTitle = a})--dciTitle :: Lens' DiscoveryclustersClustersItem (Maybe Text)-dciTitle = lens _dciTitle (\ s a -> s{_dciTitle = a})--dciVolumes :: Lens' DiscoveryclustersClustersItem [Volume]-dciVolumes-  = lens _dciVolumes (\ s a -> s{_dciVolumes = a}) .-      _Default-      . _Coerce--instance FromJSON DiscoveryclustersClustersItem where-        parseJSON-          = withObject "DiscoveryclustersClustersItem"-              (\ o ->-                 DiscoveryclustersClustersItem' <$>-                   (o .:? "banner_with_content_container") <*>-                     (o .:? "uid")-                     <*> (o .:? "totalVolumes")-                     <*> (o .:? "subTitle")-                     <*> (o .:? "title")-                     <*> (o .:? "volumes" .!= mempty))--instance ToJSON DiscoveryclustersClustersItem where-        toJSON DiscoveryclustersClustersItem'{..}-          = object-              (catMaybes-                 [("banner_with_content_container" .=) <$>-                    _dciBannerWithContentContainer,-                  ("uid" .=) <$> _dciUid,-                  ("totalVolumes" .=) <$> _dciTotalVolumes,-                  ("subTitle" .=) <$> _dciSubTitle,-                  ("title" .=) <$> _dciTitle,-                  ("volumes" .=) <$> _dciVolumes])---- | The actual selling price of the book. This is the same as the suggested--- retail or list price unless there are offers or discounts on this--- volume. (In LITE projection.)------ /See:/ 'volumeSaleInfoRetailPrice' smart constructor.-data VolumeSaleInfoRetailPrice = VolumeSaleInfoRetailPrice'-    { _vsirpAmount       :: !(Maybe (Textual Double))-    , _vsirpCurrencyCode :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoRetailPrice' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsirpAmount'------ * 'vsirpCurrencyCode'-volumeSaleInfoRetailPrice-    :: VolumeSaleInfoRetailPrice-volumeSaleInfoRetailPrice =-    VolumeSaleInfoRetailPrice'-    { _vsirpAmount = Nothing-    , _vsirpCurrencyCode = Nothing-    }---- | Amount in the currency listed below. (In LITE projection.)-vsirpAmount :: Lens' VolumeSaleInfoRetailPrice (Maybe Double)-vsirpAmount-  = lens _vsirpAmount (\ s a -> s{_vsirpAmount = a}) .-      mapping _Coerce---- | An ISO 4217, three-letter currency code. (In LITE projection.)-vsirpCurrencyCode :: Lens' VolumeSaleInfoRetailPrice (Maybe Text)-vsirpCurrencyCode-  = lens _vsirpCurrencyCode-      (\ s a -> s{_vsirpCurrencyCode = a})--instance FromJSON VolumeSaleInfoRetailPrice where-        parseJSON-          = withObject "VolumeSaleInfoRetailPrice"-              (\ o ->-                 VolumeSaleInfoRetailPrice' <$>-                   (o .:? "amount") <*> (o .:? "currencyCode"))--instance ToJSON VolumeSaleInfoRetailPrice where-        toJSON VolumeSaleInfoRetailPrice'{..}-          = object-              (catMaybes-                 [("amount" .=) <$> _vsirpAmount,-                  ("currencyCode" .=) <$> _vsirpCurrencyCode])---- | Suggested retail price. (In LITE projection.)------ /See:/ 'volumeSaleInfoListPrice' smart constructor.-data VolumeSaleInfoListPrice = VolumeSaleInfoListPrice'-    { _vsilpAmount       :: !(Maybe (Textual Double))-    , _vsilpCurrencyCode :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoListPrice' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsilpAmount'------ * 'vsilpCurrencyCode'-volumeSaleInfoListPrice-    :: VolumeSaleInfoListPrice-volumeSaleInfoListPrice =-    VolumeSaleInfoListPrice'-    { _vsilpAmount = Nothing-    , _vsilpCurrencyCode = Nothing-    }---- | Amount in the currency listed below. (In LITE projection.)-vsilpAmount :: Lens' VolumeSaleInfoListPrice (Maybe Double)-vsilpAmount-  = lens _vsilpAmount (\ s a -> s{_vsilpAmount = a}) .-      mapping _Coerce---- | An ISO 4217, three-letter currency code. (In LITE projection.)-vsilpCurrencyCode :: Lens' VolumeSaleInfoListPrice (Maybe Text)-vsilpCurrencyCode-  = lens _vsilpCurrencyCode-      (\ s a -> s{_vsilpCurrencyCode = a})--instance FromJSON VolumeSaleInfoListPrice where-        parseJSON-          = withObject "VolumeSaleInfoListPrice"-              (\ o ->-                 VolumeSaleInfoListPrice' <$>-                   (o .:? "amount") <*> (o .:? "currencyCode"))--instance ToJSON VolumeSaleInfoListPrice where-        toJSON VolumeSaleInfoListPrice'{..}-          = object-              (catMaybes-                 [("amount" .=) <$> _vsilpAmount,-                  ("currencyCode" .=) <$> _vsilpCurrencyCode])------- /See:/ 'dictlayerDataDictWordsItemSensesItemConjugationsItem' smart constructor.-data DictlayerDataDictWordsItemSensesItemConjugationsItem = DictlayerDataDictWordsItemSensesItemConjugationsItem'-    { _dddwisiciValue :: !(Maybe Text)-    , _dddwisiciType  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemConjugationsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisiciValue'------ * 'dddwisiciType'-dictlayerDataDictWordsItemSensesItemConjugationsItem-    :: DictlayerDataDictWordsItemSensesItemConjugationsItem-dictlayerDataDictWordsItemSensesItemConjugationsItem =-    DictlayerDataDictWordsItemSensesItemConjugationsItem'-    { _dddwisiciValue = Nothing-    , _dddwisiciType = Nothing-    }--dddwisiciValue :: Lens' DictlayerDataDictWordsItemSensesItemConjugationsItem (Maybe Text)-dddwisiciValue-  = lens _dddwisiciValue-      (\ s a -> s{_dddwisiciValue = a})--dddwisiciType :: Lens' DictlayerDataDictWordsItemSensesItemConjugationsItem (Maybe Text)-dddwisiciType-  = lens _dddwisiciType-      (\ s a -> s{_dddwisiciType = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemConjugationsItem-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemConjugationsItem"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemConjugationsItem'-                   <$> (o .:? "value") <*> (o .:? "type"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemConjugationsItem-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemConjugationsItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _dddwisiciValue,-                  ("type" .=) <$> _dddwisiciType])---- | Family membership info of the user that made the request.------ /See:/ 'familyInfoMembership' smart constructor.-data FamilyInfoMembership = FamilyInfoMembership'-    { _fimAllowedMaturityRating :: !(Maybe Text)-    , _fimAcquirePermission     :: !(Maybe Text)-    , _fimRole                  :: !(Maybe Text)-    , _fimAgeGroup              :: !(Maybe Text)-    , _fimIsInFamily            :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FamilyInfoMembership' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fimAllowedMaturityRating'------ * 'fimAcquirePermission'------ * 'fimRole'------ * 'fimAgeGroup'------ * 'fimIsInFamily'-familyInfoMembership-    :: FamilyInfoMembership-familyInfoMembership =-    FamilyInfoMembership'-    { _fimAllowedMaturityRating = Nothing-    , _fimAcquirePermission = Nothing-    , _fimRole = Nothing-    , _fimAgeGroup = Nothing-    , _fimIsInFamily = Nothing-    }---- | The maximum allowed maturity rating for the user.-fimAllowedMaturityRating :: Lens' FamilyInfoMembership (Maybe Text)-fimAllowedMaturityRating-  = lens _fimAllowedMaturityRating-      (\ s a -> s{_fimAllowedMaturityRating = a})---- | Restrictions on user buying and acquiring content.-fimAcquirePermission :: Lens' FamilyInfoMembership (Maybe Text)-fimAcquirePermission-  = lens _fimAcquirePermission-      (\ s a -> s{_fimAcquirePermission = a})---- | The role of the user in the family.-fimRole :: Lens' FamilyInfoMembership (Maybe Text)-fimRole = lens _fimRole (\ s a -> s{_fimRole = a})---- | The age group of the user.-fimAgeGroup :: Lens' FamilyInfoMembership (Maybe Text)-fimAgeGroup-  = lens _fimAgeGroup (\ s a -> s{_fimAgeGroup = a})--fimIsInFamily :: Lens' FamilyInfoMembership (Maybe Bool)-fimIsInFamily-  = lens _fimIsInFamily-      (\ s a -> s{_fimIsInFamily = a})--instance FromJSON FamilyInfoMembership where-        parseJSON-          = withObject "FamilyInfoMembership"-              (\ o ->-                 FamilyInfoMembership' <$>-                   (o .:? "allowedMaturityRating") <*>-                     (o .:? "acquirePermission")-                     <*> (o .:? "role")-                     <*> (o .:? "ageGroup")-                     <*> (o .:? "isInFamily"))--instance ToJSON FamilyInfoMembership where-        toJSON FamilyInfoMembership'{..}-          = object-              (catMaybes-                 [("allowedMaturityRating" .=) <$>-                    _fimAllowedMaturityRating,-                  ("acquirePermission" .=) <$> _fimAcquirePermission,-                  ("role" .=) <$> _fimRole,-                  ("ageGroup" .=) <$> _fimAgeGroup,-                  ("isInFamily" .=) <$> _fimIsInFamily])------- /See:/ 'volume2' smart constructor.-data Volume2 = Volume2'-    { _voloNextPageToken :: !(Maybe Text)-    , _voloKind          :: !Text-    , _voloItems         :: !(Maybe [Volume])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Volume2' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'voloNextPageToken'------ * 'voloKind'------ * 'voloItems'-volume2-    :: Volume2-volume2 =-    Volume2'-    { _voloNextPageToken = Nothing-    , _voloKind = "onboarding#volume"-    , _voloItems = Nothing-    }--voloNextPageToken :: Lens' Volume2 (Maybe Text)-voloNextPageToken-  = lens _voloNextPageToken-      (\ s a -> s{_voloNextPageToken = a})---- | Resource type.-voloKind :: Lens' Volume2 Text-voloKind = lens _voloKind (\ s a -> s{_voloKind = a})---- | A list of volumes.-voloItems :: Lens' Volume2 [Volume]-voloItems-  = lens _voloItems (\ s a -> s{_voloItems = a}) .-      _Default-      . _Coerce--instance FromJSON Volume2 where-        parseJSON-          = withObject "Volume2"-              (\ o ->-                 Volume2' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "onboarding#volume")-                     <*> (o .:? "items" .!= mempty))--instance ToJSON Volume2 where-        toJSON Volume2'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _voloNextPageToken,-                  Just ("kind" .= _voloKind),-                  ("items" .=) <$> _voloItems])------- /See:/ 'review' smart constructor.-data Review = Review'-    { _rRating      :: !(Maybe Text)-    , _rKind        :: !Text-    , _rContent     :: !(Maybe Text)-    , _rDate        :: !(Maybe Text)-    , _rVolumeId    :: !(Maybe Text)-    , _rAuthor      :: !(Maybe ReviewAuthor)-    , _rSource      :: !(Maybe ReviewSource)-    , _rFullTextURL :: !(Maybe Text)-    , _rTitle       :: !(Maybe Text)-    , _rType        :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Review' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rRating'------ * 'rKind'------ * 'rContent'------ * 'rDate'------ * 'rVolumeId'------ * 'rAuthor'------ * 'rSource'------ * 'rFullTextURL'------ * 'rTitle'------ * 'rType'-review-    :: Review-review =-    Review'-    { _rRating = Nothing-    , _rKind = "books#review"-    , _rContent = Nothing-    , _rDate = Nothing-    , _rVolumeId = Nothing-    , _rAuthor = Nothing-    , _rSource = Nothing-    , _rFullTextURL = Nothing-    , _rTitle = Nothing-    , _rType = Nothing-    }---- | Star rating for this review. Possible values are ONE, TWO, THREE, FOUR,--- FIVE or NOT_RATED.-rRating :: Lens' Review (Maybe Text)-rRating = lens _rRating (\ s a -> s{_rRating = a})---- | Resource type for a review.-rKind :: Lens' Review Text-rKind = lens _rKind (\ s a -> s{_rKind = a})---- | Review text.-rContent :: Lens' Review (Maybe Text)-rContent = lens _rContent (\ s a -> s{_rContent = a})---- | Date of this review.-rDate :: Lens' Review (Maybe Text)-rDate = lens _rDate (\ s a -> s{_rDate = a})---- | Volume that this review is for.-rVolumeId :: Lens' Review (Maybe Text)-rVolumeId-  = lens _rVolumeId (\ s a -> s{_rVolumeId = a})---- | Author of this review.-rAuthor :: Lens' Review (Maybe ReviewAuthor)-rAuthor = lens _rAuthor (\ s a -> s{_rAuthor = a})---- | Information regarding the source of this review, when the review is not--- from a Google Books user.-rSource :: Lens' Review (Maybe ReviewSource)-rSource = lens _rSource (\ s a -> s{_rSource = a})---- | URL for the full review text, for reviews gathered from the web.-rFullTextURL :: Lens' Review (Maybe Text)-rFullTextURL-  = lens _rFullTextURL (\ s a -> s{_rFullTextURL = a})---- | Title for this review.-rTitle :: Lens' Review (Maybe Text)-rTitle = lens _rTitle (\ s a -> s{_rTitle = a})---- | Source type for this review. Possible values are EDITORIAL, WEB_USER or--- GOOGLE_USER.-rType :: Lens' Review (Maybe Text)-rType = lens _rType (\ s a -> s{_rType = a})--instance FromJSON Review where-        parseJSON-          = withObject "Review"-              (\ o ->-                 Review' <$>-                   (o .:? "rating") <*>-                     (o .:? "kind" .!= "books#review")-                     <*> (o .:? "content")-                     <*> (o .:? "date")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "author")-                     <*> (o .:? "source")-                     <*> (o .:? "fullTextUrl")-                     <*> (o .:? "title")-                     <*> (o .:? "type"))--instance ToJSON Review where-        toJSON Review'{..}-          = object-              (catMaybes-                 [("rating" .=) <$> _rRating, Just ("kind" .= _rKind),-                  ("content" .=) <$> _rContent, ("date" .=) <$> _rDate,-                  ("volumeId" .=) <$> _rVolumeId,-                  ("author" .=) <$> _rAuthor,-                  ("source" .=) <$> _rSource,-                  ("fullTextUrl" .=) <$> _rFullTextURL,-                  ("title" .=) <$> _rTitle, ("type" .=) <$> _rType])---- | Period during this book is\/was a valid rental.------ /See:/ 'volumeUserInfoRentalPeriod' smart constructor.-data VolumeUserInfoRentalPeriod = VolumeUserInfoRentalPeriod'-    { _vuirpEndUtcSec   :: !(Maybe (Textual Int64))-    , _vuirpStartUtcSec :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeUserInfoRentalPeriod' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vuirpEndUtcSec'------ * 'vuirpStartUtcSec'-volumeUserInfoRentalPeriod-    :: VolumeUserInfoRentalPeriod-volumeUserInfoRentalPeriod =-    VolumeUserInfoRentalPeriod'-    { _vuirpEndUtcSec = Nothing-    , _vuirpStartUtcSec = Nothing-    }--vuirpEndUtcSec :: Lens' VolumeUserInfoRentalPeriod (Maybe Int64)-vuirpEndUtcSec-  = lens _vuirpEndUtcSec-      (\ s a -> s{_vuirpEndUtcSec = a})-      . mapping _Coerce--vuirpStartUtcSec :: Lens' VolumeUserInfoRentalPeriod (Maybe Int64)-vuirpStartUtcSec-  = lens _vuirpStartUtcSec-      (\ s a -> s{_vuirpStartUtcSec = a})-      . mapping _Coerce--instance FromJSON VolumeUserInfoRentalPeriod where-        parseJSON-          = withObject "VolumeUserInfoRentalPeriod"-              (\ o ->-                 VolumeUserInfoRentalPeriod' <$>-                   (o .:? "endUtcSec") <*> (o .:? "startUtcSec"))--instance ToJSON VolumeUserInfoRentalPeriod where-        toJSON VolumeUserInfoRentalPeriod'{..}-          = object-              (catMaybes-                 [("endUtcSec" .=) <$> _vuirpEndUtcSec,-                  ("startUtcSec" .=) <$> _vuirpStartUtcSec])---- | Any information about a volume related to the eBookstore and\/or--- purchaseability. This information can depend on the country where the--- request originates from (i.e. books may not be for sale in certain--- countries).------ /See:/ 'volumeSaleInfo' smart constructor.-data VolumeSaleInfo = VolumeSaleInfo'-    { _vsiCountry     :: !(Maybe Text)-    , _vsiOnSaleDate  :: !(Maybe DateTime')-    , _vsiListPrice   :: !(Maybe VolumeSaleInfoListPrice)-    , _vsiRetailPrice :: !(Maybe VolumeSaleInfoRetailPrice)-    , _vsiOffers      :: !(Maybe [VolumeSaleInfoOffersItem])-    , _vsiBuyLink     :: !(Maybe Text)-    , _vsiIsEbook     :: !(Maybe Bool)-    , _vsiSaleability :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsiCountry'------ * 'vsiOnSaleDate'------ * 'vsiListPrice'------ * 'vsiRetailPrice'------ * 'vsiOffers'------ * 'vsiBuyLink'------ * 'vsiIsEbook'------ * 'vsiSaleability'-volumeSaleInfo-    :: VolumeSaleInfo-volumeSaleInfo =-    VolumeSaleInfo'-    { _vsiCountry = Nothing-    , _vsiOnSaleDate = Nothing-    , _vsiListPrice = Nothing-    , _vsiRetailPrice = Nothing-    , _vsiOffers = Nothing-    , _vsiBuyLink = Nothing-    , _vsiIsEbook = Nothing-    , _vsiSaleability = Nothing-    }---- | The two-letter ISO_3166-1 country code for which this sale information--- is valid. (In LITE projection.)-vsiCountry :: Lens' VolumeSaleInfo (Maybe Text)-vsiCountry-  = lens _vsiCountry (\ s a -> s{_vsiCountry = a})---- | The date on which this book is available for sale.-vsiOnSaleDate :: Lens' VolumeSaleInfo (Maybe UTCTime)-vsiOnSaleDate-  = lens _vsiOnSaleDate-      (\ s a -> s{_vsiOnSaleDate = a})-      . mapping _DateTime---- | Suggested retail price. (In LITE projection.)-vsiListPrice :: Lens' VolumeSaleInfo (Maybe VolumeSaleInfoListPrice)-vsiListPrice-  = lens _vsiListPrice (\ s a -> s{_vsiListPrice = a})---- | The actual selling price of the book. This is the same as the suggested--- retail or list price unless there are offers or discounts on this--- volume. (In LITE projection.)-vsiRetailPrice :: Lens' VolumeSaleInfo (Maybe VolumeSaleInfoRetailPrice)-vsiRetailPrice-  = lens _vsiRetailPrice-      (\ s a -> s{_vsiRetailPrice = a})---- | Offers available for this volume (sales and rentals).-vsiOffers :: Lens' VolumeSaleInfo [VolumeSaleInfoOffersItem]-vsiOffers-  = lens _vsiOffers (\ s a -> s{_vsiOffers = a}) .-      _Default-      . _Coerce---- | URL to purchase this volume on the Google Books site. (In LITE--- projection)-vsiBuyLink :: Lens' VolumeSaleInfo (Maybe Text)-vsiBuyLink-  = lens _vsiBuyLink (\ s a -> s{_vsiBuyLink = a})---- | Whether or not this volume is an eBook (can be added to the My eBooks--- shelf).-vsiIsEbook :: Lens' VolumeSaleInfo (Maybe Bool)-vsiIsEbook-  = lens _vsiIsEbook (\ s a -> s{_vsiIsEbook = a})---- | Whether or not this book is available for sale or offered for free in--- the Google eBookstore for the country listed above. Possible values are--- FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or--- FOR_PREORDER.-vsiSaleability :: Lens' VolumeSaleInfo (Maybe Text)-vsiSaleability-  = lens _vsiSaleability-      (\ s a -> s{_vsiSaleability = a})--instance FromJSON VolumeSaleInfo where-        parseJSON-          = withObject "VolumeSaleInfo"-              (\ o ->-                 VolumeSaleInfo' <$>-                   (o .:? "country") <*> (o .:? "onSaleDate") <*>-                     (o .:? "listPrice")-                     <*> (o .:? "retailPrice")-                     <*> (o .:? "offers" .!= mempty)-                     <*> (o .:? "buyLink")-                     <*> (o .:? "isEbook")-                     <*> (o .:? "saleability"))--instance ToJSON VolumeSaleInfo where-        toJSON VolumeSaleInfo'{..}-          = object-              (catMaybes-                 [("country" .=) <$> _vsiCountry,-                  ("onSaleDate" .=) <$> _vsiOnSaleDate,-                  ("listPrice" .=) <$> _vsiListPrice,-                  ("retailPrice" .=) <$> _vsiRetailPrice,-                  ("offers" .=) <$> _vsiOffers,-                  ("buyLink" .=) <$> _vsiBuyLink,-                  ("isEbook" .=) <$> _vsiIsEbook,-                  ("saleability" .=) <$> _vsiSaleability])------- /See:/ 'seriesSeriesItem' smart constructor.-data SeriesSeriesItem = SeriesSeriesItem'-    { _ssiSeriesId       :: !(Maybe Text)-    , _ssiImageURL       :: !(Maybe Text)-    , _ssiBannerImageURL :: !(Maybe Text)-    , _ssiTitle          :: !(Maybe Text)-    , _ssiSeriesType     :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SeriesSeriesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ssiSeriesId'------ * 'ssiImageURL'------ * 'ssiBannerImageURL'------ * 'ssiTitle'------ * 'ssiSeriesType'-seriesSeriesItem-    :: SeriesSeriesItem-seriesSeriesItem =-    SeriesSeriesItem'-    { _ssiSeriesId = Nothing-    , _ssiImageURL = Nothing-    , _ssiBannerImageURL = Nothing-    , _ssiTitle = Nothing-    , _ssiSeriesType = Nothing-    }--ssiSeriesId :: Lens' SeriesSeriesItem (Maybe Text)-ssiSeriesId-  = lens _ssiSeriesId (\ s a -> s{_ssiSeriesId = a})--ssiImageURL :: Lens' SeriesSeriesItem (Maybe Text)-ssiImageURL-  = lens _ssiImageURL (\ s a -> s{_ssiImageURL = a})--ssiBannerImageURL :: Lens' SeriesSeriesItem (Maybe Text)-ssiBannerImageURL-  = lens _ssiBannerImageURL-      (\ s a -> s{_ssiBannerImageURL = a})--ssiTitle :: Lens' SeriesSeriesItem (Maybe Text)-ssiTitle = lens _ssiTitle (\ s a -> s{_ssiTitle = a})--ssiSeriesType :: Lens' SeriesSeriesItem (Maybe Text)-ssiSeriesType-  = lens _ssiSeriesType-      (\ s a -> s{_ssiSeriesType = a})--instance FromJSON SeriesSeriesItem where-        parseJSON-          = withObject "SeriesSeriesItem"-              (\ o ->-                 SeriesSeriesItem' <$>-                   (o .:? "seriesId") <*> (o .:? "imageUrl") <*>-                     (o .:? "bannerImageUrl")-                     <*> (o .:? "title")-                     <*> (o .:? "seriesType"))--instance ToJSON SeriesSeriesItem where-        toJSON SeriesSeriesItem'{..}-          = object-              (catMaybes-                 [("seriesId" .=) <$> _ssiSeriesId,-                  ("imageUrl" .=) <$> _ssiImageURL,-                  ("bannerImageUrl" .=) <$> _ssiBannerImageURL,-                  ("title" .=) <$> _ssiTitle,-                  ("seriesType" .=) <$> _ssiSeriesType])------- /See:/ 'metadata' smart constructor.-data Metadata = Metadata'-    { _mKind  :: !Text-    , _mItems :: !(Maybe [MetadataItemsItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Metadata' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mKind'------ * 'mItems'-metadata-    :: Metadata-metadata =-    Metadata'-    { _mKind = "dictionary#metadata"-    , _mItems = Nothing-    }---- | Resource type.-mKind :: Lens' Metadata Text-mKind = lens _mKind (\ s a -> s{_mKind = a})---- | A list of offline dictionary metadata.-mItems :: Lens' Metadata [MetadataItemsItem]-mItems-  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .-      _Coerce--instance FromJSON Metadata where-        parseJSON-          = withObject "Metadata"-              (\ o ->-                 Metadata' <$>-                   (o .:? "kind" .!= "dictionary#metadata") <*>-                     (o .:? "items" .!= mempty))--instance ToJSON Metadata where-        toJSON Metadata'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _mKind), ("items" .=) <$> _mItems])---- | What layers exist in this volume and high level information about them.------ /See:/ 'volumeLayerInfo' smart constructor.-newtype VolumeLayerInfo = VolumeLayerInfo'-    { _vliLayers :: Maybe [VolumeLayerInfoLayersItem]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeLayerInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vliLayers'-volumeLayerInfo-    :: VolumeLayerInfo-volumeLayerInfo =-    VolumeLayerInfo'-    { _vliLayers = Nothing-    }---- | A layer should appear here if and only if the layer exists for this--- book.-vliLayers :: Lens' VolumeLayerInfo [VolumeLayerInfoLayersItem]-vliLayers-  = lens _vliLayers (\ s a -> s{_vliLayers = a}) .-      _Default-      . _Coerce--instance FromJSON VolumeLayerInfo where-        parseJSON-          = withObject "VolumeLayerInfo"-              (\ o ->-                 VolumeLayerInfo' <$> (o .:? "layers" .!= mempty))--instance ToJSON VolumeLayerInfo where-        toJSON VolumeLayerInfo'{..}-          = object (catMaybes [("layers" .=) <$> _vliLayers])---- | Physical dimensions of this volume.------ /See:/ 'volumeVolumeInfoDimensions' smart constructor.-data VolumeVolumeInfoDimensions = VolumeVolumeInfoDimensions'-    { _vvidHeight    :: !(Maybe Text)-    , _vvidWidth     :: !(Maybe Text)-    , _vvidThickness :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeVolumeInfoDimensions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vvidHeight'------ * 'vvidWidth'------ * 'vvidThickness'-volumeVolumeInfoDimensions-    :: VolumeVolumeInfoDimensions-volumeVolumeInfoDimensions =-    VolumeVolumeInfoDimensions'-    { _vvidHeight = Nothing-    , _vvidWidth = Nothing-    , _vvidThickness = Nothing-    }---- | Height or length of this volume (in cm).-vvidHeight :: Lens' VolumeVolumeInfoDimensions (Maybe Text)-vvidHeight-  = lens _vvidHeight (\ s a -> s{_vvidHeight = a})---- | Width of this volume (in cm).-vvidWidth :: Lens' VolumeVolumeInfoDimensions (Maybe Text)-vvidWidth-  = lens _vvidWidth (\ s a -> s{_vvidWidth = a})---- | Thickness of this volume (in cm).-vvidThickness :: Lens' VolumeVolumeInfoDimensions (Maybe Text)-vvidThickness-  = lens _vvidThickness-      (\ s a -> s{_vvidThickness = a})--instance FromJSON VolumeVolumeInfoDimensions where-        parseJSON-          = withObject "VolumeVolumeInfoDimensions"-              (\ o ->-                 VolumeVolumeInfoDimensions' <$>-                   (o .:? "height") <*> (o .:? "width") <*>-                     (o .:? "thickness"))--instance ToJSON VolumeVolumeInfoDimensions where-        toJSON VolumeVolumeInfoDimensions'{..}-          = object-              (catMaybes-                 [("height" .=) <$> _vvidHeight,-                  ("width" .=) <$> _vvidWidth,-                  ("thickness" .=) <$> _vvidThickness])------- /See:/ 'requestAccess' smart constructor.-data RequestAccess = RequestAccess'-    { _raConcurrentAccess :: !(Maybe ConcurrentAccessRestriction)-    , _raKind             :: !Text-    , _raDownloadAccess   :: !(Maybe DownloadAccessRestriction)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RequestAccess' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'raConcurrentAccess'------ * 'raKind'------ * 'raDownloadAccess'-requestAccess-    :: RequestAccess-requestAccess =-    RequestAccess'-    { _raConcurrentAccess = Nothing-    , _raKind = "books#requestAccess"-    , _raDownloadAccess = Nothing-    }---- | A concurrent access response.-raConcurrentAccess :: Lens' RequestAccess (Maybe ConcurrentAccessRestriction)-raConcurrentAccess-  = lens _raConcurrentAccess-      (\ s a -> s{_raConcurrentAccess = a})---- | Resource type.-raKind :: Lens' RequestAccess Text-raKind = lens _raKind (\ s a -> s{_raKind = a})---- | A download access response.-raDownloadAccess :: Lens' RequestAccess (Maybe DownloadAccessRestriction)-raDownloadAccess-  = lens _raDownloadAccess-      (\ s a -> s{_raDownloadAccess = a})--instance FromJSON RequestAccess where-        parseJSON-          = withObject "RequestAccess"-              (\ o ->-                 RequestAccess' <$>-                   (o .:? "concurrentAccess") <*>-                     (o .:? "kind" .!= "books#requestAccess")-                     <*> (o .:? "downloadAccess"))--instance ToJSON RequestAccess where-        toJSON RequestAccess'{..}-          = object-              (catMaybes-                 [("concurrentAccess" .=) <$> _raConcurrentAccess,-                  Just ("kind" .= _raKind),-                  ("downloadAccess" .=) <$> _raDownloadAccess])------- /See:/ 'familyInfo' smart constructor.-data FamilyInfo = FamilyInfo'-    { _fiMembership :: !(Maybe FamilyInfoMembership)-    , _fiKind       :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FamilyInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fiMembership'------ * 'fiKind'-familyInfo-    :: FamilyInfo-familyInfo =-    FamilyInfo'-    { _fiMembership = Nothing-    , _fiKind = "books#familyInfo"-    }---- | Family membership info of the user that made the request.-fiMembership :: Lens' FamilyInfo (Maybe FamilyInfoMembership)-fiMembership-  = lens _fiMembership (\ s a -> s{_fiMembership = a})---- | Resource type.-fiKind :: Lens' FamilyInfo Text-fiKind = lens _fiKind (\ s a -> s{_fiKind = a})--instance FromJSON FamilyInfo where-        parseJSON-          = withObject "FamilyInfo"-              (\ o ->-                 FamilyInfo' <$>-                   (o .:? "membership") <*>-                     (o .:? "kind" .!= "books#familyInfo"))--instance ToJSON FamilyInfo where-        toJSON FamilyInfo'{..}-          = object-              (catMaybes-                 [("membership" .=) <$> _fiMembership,-                  Just ("kind" .= _fiKind)])---- | Selection ranges sent from the client.------ /See:/ 'annotationClientVersionRanges' smart constructor.-data AnnotationClientVersionRanges = AnnotationClientVersionRanges'-    { _acvrGbImageRange   :: !(Maybe BooksAnnotationsRange)-    , _acvrContentVersion :: !(Maybe Text)-    , _acvrImageCfiRange  :: !(Maybe BooksAnnotationsRange)-    , _acvrGbTextRange    :: !(Maybe BooksAnnotationsRange)-    , _acvrCfiRange       :: !(Maybe BooksAnnotationsRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationClientVersionRanges' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'acvrGbImageRange'------ * 'acvrContentVersion'------ * 'acvrImageCfiRange'------ * 'acvrGbTextRange'------ * 'acvrCfiRange'-annotationClientVersionRanges-    :: AnnotationClientVersionRanges-annotationClientVersionRanges =-    AnnotationClientVersionRanges'-    { _acvrGbImageRange = Nothing-    , _acvrContentVersion = Nothing-    , _acvrImageCfiRange = Nothing-    , _acvrGbTextRange = Nothing-    , _acvrCfiRange = Nothing-    }---- | Range in GB image format for this annotation sent by client.-acvrGbImageRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)-acvrGbImageRange-  = lens _acvrGbImageRange-      (\ s a -> s{_acvrGbImageRange = a})---- | Content version the client sent in.-acvrContentVersion :: Lens' AnnotationClientVersionRanges (Maybe Text)-acvrContentVersion-  = lens _acvrContentVersion-      (\ s a -> s{_acvrContentVersion = a})---- | Range in image CFI format for this annotation sent by client.-acvrImageCfiRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)-acvrImageCfiRange-  = lens _acvrImageCfiRange-      (\ s a -> s{_acvrImageCfiRange = a})---- | Range in GB text format for this annotation sent by client.-acvrGbTextRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)-acvrGbTextRange-  = lens _acvrGbTextRange-      (\ s a -> s{_acvrGbTextRange = a})---- | Range in CFI format for this annotation sent by client.-acvrCfiRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)-acvrCfiRange-  = lens _acvrCfiRange (\ s a -> s{_acvrCfiRange = a})--instance FromJSON AnnotationClientVersionRanges where-        parseJSON-          = withObject "AnnotationClientVersionRanges"-              (\ o ->-                 AnnotationClientVersionRanges' <$>-                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")-                     <*> (o .:? "imageCfiRange")-                     <*> (o .:? "gbTextRange")-                     <*> (o .:? "cfiRange"))--instance ToJSON AnnotationClientVersionRanges where-        toJSON AnnotationClientVersionRanges'{..}-          = object-              (catMaybes-                 [("gbImageRange" .=) <$> _acvrGbImageRange,-                  ("contentVersion" .=) <$> _acvrContentVersion,-                  ("imageCfiRange" .=) <$> _acvrImageCfiRange,-                  ("gbTextRange" .=) <$> _acvrGbTextRange,-                  ("cfiRange" .=) <$> _acvrCfiRange])------- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItem' smart constructor.-data DictlayerDataDictWordsItemSensesItemDefinitionsItem = DictlayerDataDictWordsItemSensesItemDefinitionsItem'-    { _dddwisidiDefinition :: !(Maybe Text)-    , _dddwisidiExamples   :: !(Maybe [DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisidiDefinition'------ * 'dddwisidiExamples'-dictlayerDataDictWordsItemSensesItemDefinitionsItem-    :: DictlayerDataDictWordsItemSensesItemDefinitionsItem-dictlayerDataDictWordsItemSensesItemDefinitionsItem =-    DictlayerDataDictWordsItemSensesItemDefinitionsItem'-    { _dddwisidiDefinition = Nothing-    , _dddwisidiExamples = Nothing-    }--dddwisidiDefinition :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItem (Maybe Text)-dddwisidiDefinition-  = lens _dddwisidiDefinition-      (\ s a -> s{_dddwisidiDefinition = a})--dddwisidiExamples :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItem [DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem]-dddwisidiExamples-  = lens _dddwisidiExamples-      (\ s a -> s{_dddwisidiExamples = a})-      . _Default-      . _Coerce--instance FromJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItem-         where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemDefinitionsItem"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemDefinitionsItem'-                   <$>-                   (o .:? "definition") <*>-                     (o .:? "examples" .!= mempty))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemDefinitionsItem-         where-        toJSON-          DictlayerDataDictWordsItemSensesItemDefinitionsItem'{..}-          = object-              (catMaybes-                 [("definition" .=) <$> _dddwisidiDefinition,-                  ("examples" .=) <$> _dddwisidiExamples])------- /See:/ 'volumeLayerInfoLayersItem' smart constructor.-data VolumeLayerInfoLayersItem = VolumeLayerInfoLayersItem'-    { _vliliVolumeAnnotationsVersion :: !(Maybe Text)-    , _vliliLayerId                  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeLayerInfoLayersItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vliliVolumeAnnotationsVersion'------ * 'vliliLayerId'-volumeLayerInfoLayersItem-    :: VolumeLayerInfoLayersItem-volumeLayerInfoLayersItem =-    VolumeLayerInfoLayersItem'-    { _vliliVolumeAnnotationsVersion = Nothing-    , _vliliLayerId = Nothing-    }---- | The current version of this layer\'s volume annotations. Note that this--- version applies only to the data in the books.layers.volumeAnnotations.*--- responses. The actual annotation data is versioned separately.-vliliVolumeAnnotationsVersion :: Lens' VolumeLayerInfoLayersItem (Maybe Text)-vliliVolumeAnnotationsVersion-  = lens _vliliVolumeAnnotationsVersion-      (\ s a -> s{_vliliVolumeAnnotationsVersion = a})---- | The layer id of this layer (e.g. \"geo\").-vliliLayerId :: Lens' VolumeLayerInfoLayersItem (Maybe Text)-vliliLayerId-  = lens _vliliLayerId (\ s a -> s{_vliliLayerId = a})--instance FromJSON VolumeLayerInfoLayersItem where-        parseJSON-          = withObject "VolumeLayerInfoLayersItem"-              (\ o ->-                 VolumeLayerInfoLayersItem' <$>-                   (o .:? "volumeAnnotationsVersion") <*>-                     (o .:? "layerId"))--instance ToJSON VolumeLayerInfoLayersItem where-        toJSON VolumeLayerInfoLayersItem'{..}-          = object-              (catMaybes-                 [("volumeAnnotationsVersion" .=) <$>-                    _vliliVolumeAnnotationsVersion,-                  ("layerId" .=) <$> _vliliLayerId])---- | Selection ranges for the most recent content version.------ /See:/ 'annotationCurrentVersionRanges' smart constructor.-data AnnotationCurrentVersionRanges = AnnotationCurrentVersionRanges'-    { _aGbImageRange   :: !(Maybe BooksAnnotationsRange)-    , _aContentVersion :: !(Maybe Text)-    , _aImageCfiRange  :: !(Maybe BooksAnnotationsRange)-    , _aGbTextRange    :: !(Maybe BooksAnnotationsRange)-    , _aCfiRange       :: !(Maybe BooksAnnotationsRange)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AnnotationCurrentVersionRanges' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aGbImageRange'------ * 'aContentVersion'------ * 'aImageCfiRange'------ * 'aGbTextRange'------ * 'aCfiRange'-annotationCurrentVersionRanges-    :: AnnotationCurrentVersionRanges-annotationCurrentVersionRanges =-    AnnotationCurrentVersionRanges'-    { _aGbImageRange = Nothing-    , _aContentVersion = Nothing-    , _aImageCfiRange = Nothing-    , _aGbTextRange = Nothing-    , _aCfiRange = Nothing-    }---- | Range in GB image format for this annotation for version above.-aGbImageRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)-aGbImageRange-  = lens _aGbImageRange-      (\ s a -> s{_aGbImageRange = a})---- | Content version applicable to ranges below.-aContentVersion :: Lens' AnnotationCurrentVersionRanges (Maybe Text)-aContentVersion-  = lens _aContentVersion-      (\ s a -> s{_aContentVersion = a})---- | Range in image CFI format for this annotation for version above.-aImageCfiRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)-aImageCfiRange-  = lens _aImageCfiRange-      (\ s a -> s{_aImageCfiRange = a})---- | Range in GB text format for this annotation for version above.-aGbTextRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)-aGbTextRange-  = lens _aGbTextRange (\ s a -> s{_aGbTextRange = a})---- | Range in CFI format for this annotation for version above.-aCfiRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)-aCfiRange-  = lens _aCfiRange (\ s a -> s{_aCfiRange = a})--instance FromJSON AnnotationCurrentVersionRanges-         where-        parseJSON-          = withObject "AnnotationCurrentVersionRanges"-              (\ o ->-                 AnnotationCurrentVersionRanges' <$>-                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")-                     <*> (o .:? "imageCfiRange")-                     <*> (o .:? "gbTextRange")-                     <*> (o .:? "cfiRange"))--instance ToJSON AnnotationCurrentVersionRanges where-        toJSON AnnotationCurrentVersionRanges'{..}-          = object-              (catMaybes-                 [("gbImageRange" .=) <$> _aGbImageRange,-                  ("contentVersion" .=) <$> _aContentVersion,-                  ("imageCfiRange" .=) <$> _aImageCfiRange,-                  ("gbTextRange" .=) <$> _aGbTextRange,-                  ("cfiRange" .=) <$> _aCfiRange])---- | Information about pdf content. (In LITE projection.)------ /See:/ 'volumeAccessInfoPdf' smart constructor.-data VolumeAccessInfoPdf = VolumeAccessInfoPdf'-    { _vaipAcsTokenLink :: !(Maybe Text)-    , _vaipIsAvailable  :: !(Maybe Bool)-    , _vaipDownloadLink :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeAccessInfoPdf' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vaipAcsTokenLink'------ * 'vaipIsAvailable'------ * 'vaipDownloadLink'-volumeAccessInfoPdf-    :: VolumeAccessInfoPdf-volumeAccessInfoPdf =-    VolumeAccessInfoPdf'-    { _vaipAcsTokenLink = Nothing-    , _vaipIsAvailable = Nothing-    , _vaipDownloadLink = Nothing-    }---- | URL to retrieve ACS token for pdf download. (In LITE projection.)-vaipAcsTokenLink :: Lens' VolumeAccessInfoPdf (Maybe Text)-vaipAcsTokenLink-  = lens _vaipAcsTokenLink-      (\ s a -> s{_vaipAcsTokenLink = a})---- | Is a scanned image pdf available either as public domain or for--- purchase. (In LITE projection.)-vaipIsAvailable :: Lens' VolumeAccessInfoPdf (Maybe Bool)-vaipIsAvailable-  = lens _vaipIsAvailable-      (\ s a -> s{_vaipIsAvailable = a})---- | URL to download pdf. (In LITE projection.)-vaipDownloadLink :: Lens' VolumeAccessInfoPdf (Maybe Text)-vaipDownloadLink-  = lens _vaipDownloadLink-      (\ s a -> s{_vaipDownloadLink = a})--instance FromJSON VolumeAccessInfoPdf where-        parseJSON-          = withObject "VolumeAccessInfoPdf"-              (\ o ->-                 VolumeAccessInfoPdf' <$>-                   (o .:? "acsTokenLink") <*> (o .:? "isAvailable") <*>-                     (o .:? "downloadLink"))--instance ToJSON VolumeAccessInfoPdf where-        toJSON VolumeAccessInfoPdf'{..}-          = object-              (catMaybes-                 [("acsTokenLink" .=) <$> _vaipAcsTokenLink,-                  ("isAvailable" .=) <$> _vaipIsAvailable,-                  ("downloadLink" .=) <$> _vaipDownloadLink])------- /See:/ 'dictlayerDataDictWordsItemExamplesItemSource' smart constructor.-data DictlayerDataDictWordsItemExamplesItemSource = DictlayerDataDictWordsItemExamplesItemSource'-    { _dddwieisURL         :: !(Maybe Text)-    , _dddwieisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemExamplesItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwieisURL'------ * 'dddwieisAttribution'-dictlayerDataDictWordsItemExamplesItemSource-    :: DictlayerDataDictWordsItemExamplesItemSource-dictlayerDataDictWordsItemExamplesItemSource =-    DictlayerDataDictWordsItemExamplesItemSource'-    { _dddwieisURL = Nothing-    , _dddwieisAttribution = Nothing-    }--dddwieisURL :: Lens' DictlayerDataDictWordsItemExamplesItemSource (Maybe Text)-dddwieisURL-  = lens _dddwieisURL (\ s a -> s{_dddwieisURL = a})--dddwieisAttribution :: Lens' DictlayerDataDictWordsItemExamplesItemSource (Maybe Text)-dddwieisAttribution-  = lens _dddwieisAttribution-      (\ s a -> s{_dddwieisAttribution = a})--instance FromJSON-         DictlayerDataDictWordsItemExamplesItemSource where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemExamplesItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemExamplesItemSource' <$>-                   (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON-         DictlayerDataDictWordsItemExamplesItemSource where-        toJSON-          DictlayerDataDictWordsItemExamplesItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwieisURL,-                  ("attribution" .=) <$> _dddwieisAttribution])---- | Information about epub content. (In LITE projection.)------ /See:/ 'volumeAccessInfoEpub' smart constructor.-data VolumeAccessInfoEpub = VolumeAccessInfoEpub'-    { _vaieAcsTokenLink :: !(Maybe Text)-    , _vaieIsAvailable  :: !(Maybe Bool)-    , _vaieDownloadLink :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeAccessInfoEpub' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vaieAcsTokenLink'------ * 'vaieIsAvailable'------ * 'vaieDownloadLink'-volumeAccessInfoEpub-    :: VolumeAccessInfoEpub-volumeAccessInfoEpub =-    VolumeAccessInfoEpub'-    { _vaieAcsTokenLink = Nothing-    , _vaieIsAvailable = Nothing-    , _vaieDownloadLink = Nothing-    }---- | URL to retrieve ACS token for epub download. (In LITE projection.)-vaieAcsTokenLink :: Lens' VolumeAccessInfoEpub (Maybe Text)-vaieAcsTokenLink-  = lens _vaieAcsTokenLink-      (\ s a -> s{_vaieAcsTokenLink = a})---- | Is a flowing text epub available either as public domain or for--- purchase. (In LITE projection.)-vaieIsAvailable :: Lens' VolumeAccessInfoEpub (Maybe Bool)-vaieIsAvailable-  = lens _vaieIsAvailable-      (\ s a -> s{_vaieIsAvailable = a})---- | URL to download epub. (In LITE projection.)-vaieDownloadLink :: Lens' VolumeAccessInfoEpub (Maybe Text)-vaieDownloadLink-  = lens _vaieDownloadLink-      (\ s a -> s{_vaieDownloadLink = a})--instance FromJSON VolumeAccessInfoEpub where-        parseJSON-          = withObject "VolumeAccessInfoEpub"-              (\ o ->-                 VolumeAccessInfoEpub' <$>-                   (o .:? "acsTokenLink") <*> (o .:? "isAvailable") <*>-                     (o .:? "downloadLink"))--instance ToJSON VolumeAccessInfoEpub where-        toJSON VolumeAccessInfoEpub'{..}-          = object-              (catMaybes-                 [("acsTokenLink" .=) <$> _vaieAcsTokenLink,-                  ("isAvailable" .=) <$> _vaieIsAvailable,-                  ("downloadLink" .=) <$> _vaieDownloadLink])------- /See:/ 'readingPosition' smart constructor.-data ReadingPosition = ReadingPosition'-    { _rpEpubCfiPosition :: !(Maybe Text)-    , _rpKind            :: !Text-    , _rpGbImagePosition :: !(Maybe Text)-    , _rpPdfPosition     :: !(Maybe Text)-    , _rpVolumeId        :: !(Maybe Text)-    , _rpUpdated         :: !(Maybe DateTime')-    , _rpGbTextPosition  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ReadingPosition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rpEpubCfiPosition'------ * 'rpKind'------ * 'rpGbImagePosition'------ * 'rpPdfPosition'------ * 'rpVolumeId'------ * 'rpUpdated'------ * 'rpGbTextPosition'-readingPosition-    :: ReadingPosition-readingPosition =-    ReadingPosition'-    { _rpEpubCfiPosition = Nothing-    , _rpKind = "books#readingPosition"-    , _rpGbImagePosition = Nothing-    , _rpPdfPosition = Nothing-    , _rpVolumeId = Nothing-    , _rpUpdated = Nothing-    , _rpGbTextPosition = Nothing-    }---- | Position in an EPUB as a CFI.-rpEpubCfiPosition :: Lens' ReadingPosition (Maybe Text)-rpEpubCfiPosition-  = lens _rpEpubCfiPosition-      (\ s a -> s{_rpEpubCfiPosition = a})---- | Resource type for a reading position.-rpKind :: Lens' ReadingPosition Text-rpKind = lens _rpKind (\ s a -> s{_rpKind = a})---- | Position in a volume for image-based content.-rpGbImagePosition :: Lens' ReadingPosition (Maybe Text)-rpGbImagePosition-  = lens _rpGbImagePosition-      (\ s a -> s{_rpGbImagePosition = a})---- | Position in a PDF file.-rpPdfPosition :: Lens' ReadingPosition (Maybe Text)-rpPdfPosition-  = lens _rpPdfPosition-      (\ s a -> s{_rpPdfPosition = a})---- | Volume id associated with this reading position.-rpVolumeId :: Lens' ReadingPosition (Maybe Text)-rpVolumeId-  = lens _rpVolumeId (\ s a -> s{_rpVolumeId = a})---- | Timestamp when this reading position was last updated (formatted UTC--- timestamp with millisecond resolution).-rpUpdated :: Lens' ReadingPosition (Maybe UTCTime)-rpUpdated-  = lens _rpUpdated (\ s a -> s{_rpUpdated = a}) .-      mapping _DateTime---- | Position in a volume for text-based content.-rpGbTextPosition :: Lens' ReadingPosition (Maybe Text)-rpGbTextPosition-  = lens _rpGbTextPosition-      (\ s a -> s{_rpGbTextPosition = a})--instance FromJSON ReadingPosition where-        parseJSON-          = withObject "ReadingPosition"-              (\ o ->-                 ReadingPosition' <$>-                   (o .:? "epubCfiPosition") <*>-                     (o .:? "kind" .!= "books#readingPosition")-                     <*> (o .:? "gbImagePosition")-                     <*> (o .:? "pdfPosition")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "updated")-                     <*> (o .:? "gbTextPosition"))--instance ToJSON ReadingPosition where-        toJSON ReadingPosition'{..}-          = object-              (catMaybes-                 [("epubCfiPosition" .=) <$> _rpEpubCfiPosition,-                  Just ("kind" .= _rpKind),-                  ("gbImagePosition" .=) <$> _rpGbImagePosition,-                  ("pdfPosition" .=) <$> _rpPdfPosition,-                  ("volumeId" .=) <$> _rpVolumeId,-                  ("updated" .=) <$> _rpUpdated,-                  ("gbTextPosition" .=) <$> _rpGbTextPosition])------- /See:/ 'volumeSaleInfoOffersItem' smart constructor.-data VolumeSaleInfoOffersItem = VolumeSaleInfoOffersItem'-    { _vsioiFinskyOfferType :: !(Maybe (Textual Int32))-    , _vsioiRentalDuration  :: !(Maybe VolumeSaleInfoOffersItemRentalDuration)-    , _vsioiListPrice       :: !(Maybe VolumeSaleInfoOffersItemListPrice)-    , _vsioiRetailPrice     :: !(Maybe VolumeSaleInfoOffersItemRetailPrice)-    , _vsioiGiftable        :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoOffersItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsioiFinskyOfferType'------ * 'vsioiRentalDuration'------ * 'vsioiListPrice'------ * 'vsioiRetailPrice'------ * 'vsioiGiftable'-volumeSaleInfoOffersItem-    :: VolumeSaleInfoOffersItem-volumeSaleInfoOffersItem =-    VolumeSaleInfoOffersItem'-    { _vsioiFinskyOfferType = Nothing-    , _vsioiRentalDuration = Nothing-    , _vsioiListPrice = Nothing-    , _vsioiRetailPrice = Nothing-    , _vsioiGiftable = Nothing-    }---- | The finsky offer type (e.g., PURCHASE=0 RENTAL=3)-vsioiFinskyOfferType :: Lens' VolumeSaleInfoOffersItem (Maybe Int32)-vsioiFinskyOfferType-  = lens _vsioiFinskyOfferType-      (\ s a -> s{_vsioiFinskyOfferType = a})-      . mapping _Coerce---- | The rental duration (for rental offers only).-vsioiRentalDuration :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemRentalDuration)-vsioiRentalDuration-  = lens _vsioiRentalDuration-      (\ s a -> s{_vsioiRentalDuration = a})---- | Offer list (=undiscounted) price in Micros.-vsioiListPrice :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemListPrice)-vsioiListPrice-  = lens _vsioiListPrice-      (\ s a -> s{_vsioiListPrice = a})---- | Offer retail (=discounted) price in Micros-vsioiRetailPrice :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemRetailPrice)-vsioiRetailPrice-  = lens _vsioiRetailPrice-      (\ s a -> s{_vsioiRetailPrice = a})---- | Indicates whether the offer is giftable.-vsioiGiftable :: Lens' VolumeSaleInfoOffersItem (Maybe Bool)-vsioiGiftable-  = lens _vsioiGiftable-      (\ s a -> s{_vsioiGiftable = a})--instance FromJSON VolumeSaleInfoOffersItem where-        parseJSON-          = withObject "VolumeSaleInfoOffersItem"-              (\ o ->-                 VolumeSaleInfoOffersItem' <$>-                   (o .:? "finskyOfferType") <*>-                     (o .:? "rentalDuration")-                     <*> (o .:? "listPrice")-                     <*> (o .:? "retailPrice")-                     <*> (o .:? "giftable"))--instance ToJSON VolumeSaleInfoOffersItem where-        toJSON VolumeSaleInfoOffersItem'{..}-          = object-              (catMaybes-                 [("finskyOfferType" .=) <$> _vsioiFinskyOfferType,-                  ("rentalDuration" .=) <$> _vsioiRentalDuration,-                  ("listPrice" .=) <$> _vsioiListPrice,-                  ("retailPrice" .=) <$> _vsioiRetailPrice,-                  ("giftable" .=) <$> _vsioiGiftable])------- /See:/ 'dictlayerDataDict' smart constructor.-data DictlayerDataDict = DictlayerDataDict'-    { _dddSource :: !(Maybe DictlayerDataDictSource)-    , _dddWords  :: !(Maybe [DictlayerDataDictWordsItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDict' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddSource'------ * 'dddWords'-dictlayerDataDict-    :: DictlayerDataDict-dictlayerDataDict =-    DictlayerDataDict'-    { _dddSource = Nothing-    , _dddWords = Nothing-    }---- | The source, url and attribution for this dictionary data.-dddSource :: Lens' DictlayerDataDict (Maybe DictlayerDataDictSource)-dddSource-  = lens _dddSource (\ s a -> s{_dddSource = a})--dddWords :: Lens' DictlayerDataDict [DictlayerDataDictWordsItem]-dddWords-  = lens _dddWords (\ s a -> s{_dddWords = a}) .-      _Default-      . _Coerce--instance FromJSON DictlayerDataDict where-        parseJSON-          = withObject "DictlayerDataDict"-              (\ o ->-                 DictlayerDataDict' <$>-                   (o .:? "source") <*> (o .:? "words" .!= mempty))--instance ToJSON DictlayerDataDict where-        toJSON DictlayerDataDict'{..}-          = object-              (catMaybes-                 [("source" .=) <$> _dddSource,-                  ("words" .=) <$> _dddWords])------- /See:/ 'dictlayerDataDictWordsItemSensesItem' smart constructor.-data DictlayerDataDictWordsItemSensesItem = DictlayerDataDictWordsItemSensesItem'-    { _dddwisiPronunciationURL :: !(Maybe Text)-    , _dddwisiConjugations     :: !(Maybe [DictlayerDataDictWordsItemSensesItemConjugationsItem])-    , _dddwisiPronunciation    :: !(Maybe Text)-    , _dddwisiSynonyms         :: !(Maybe [DictlayerDataDictWordsItemSensesItemSynonymsItem])-    , _dddwisiSource           :: !(Maybe DictlayerDataDictWordsItemSensesItemSource)-    , _dddwisiPartOfSpeech     :: !(Maybe Text)-    , _dddwisiDefinitions      :: !(Maybe [DictlayerDataDictWordsItemSensesItemDefinitionsItem])-    , _dddwisiSyllabification  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisiPronunciationURL'------ * 'dddwisiConjugations'------ * 'dddwisiPronunciation'------ * 'dddwisiSynonyms'------ * 'dddwisiSource'------ * 'dddwisiPartOfSpeech'------ * 'dddwisiDefinitions'------ * 'dddwisiSyllabification'-dictlayerDataDictWordsItemSensesItem-    :: DictlayerDataDictWordsItemSensesItem-dictlayerDataDictWordsItemSensesItem =-    DictlayerDataDictWordsItemSensesItem'-    { _dddwisiPronunciationURL = Nothing-    , _dddwisiConjugations = Nothing-    , _dddwisiPronunciation = Nothing-    , _dddwisiSynonyms = Nothing-    , _dddwisiSource = Nothing-    , _dddwisiPartOfSpeech = Nothing-    , _dddwisiDefinitions = Nothing-    , _dddwisiSyllabification = Nothing-    }--dddwisiPronunciationURL :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)-dddwisiPronunciationURL-  = lens _dddwisiPronunciationURL-      (\ s a -> s{_dddwisiPronunciationURL = a})--dddwisiConjugations :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemConjugationsItem]-dddwisiConjugations-  = lens _dddwisiConjugations-      (\ s a -> s{_dddwisiConjugations = a})-      . _Default-      . _Coerce--dddwisiPronunciation :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)-dddwisiPronunciation-  = lens _dddwisiPronunciation-      (\ s a -> s{_dddwisiPronunciation = a})--dddwisiSynonyms :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemSynonymsItem]-dddwisiSynonyms-  = lens _dddwisiSynonyms-      (\ s a -> s{_dddwisiSynonyms = a})-      . _Default-      . _Coerce--dddwisiSource :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe DictlayerDataDictWordsItemSensesItemSource)-dddwisiSource-  = lens _dddwisiSource-      (\ s a -> s{_dddwisiSource = a})--dddwisiPartOfSpeech :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)-dddwisiPartOfSpeech-  = lens _dddwisiPartOfSpeech-      (\ s a -> s{_dddwisiPartOfSpeech = a})--dddwisiDefinitions :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemDefinitionsItem]-dddwisiDefinitions-  = lens _dddwisiDefinitions-      (\ s a -> s{_dddwisiDefinitions = a})-      . _Default-      . _Coerce--dddwisiSyllabification :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)-dddwisiSyllabification-  = lens _dddwisiSyllabification-      (\ s a -> s{_dddwisiSyllabification = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItem where-        parseJSON-          = withObject "DictlayerDataDictWordsItemSensesItem"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItem' <$>-                   (o .:? "pronunciationUrl") <*>-                     (o .:? "conjugations" .!= mempty)-                     <*> (o .:? "pronunciation")-                     <*> (o .:? "synonyms" .!= mempty)-                     <*> (o .:? "source")-                     <*> (o .:? "partOfSpeech")-                     <*> (o .:? "definitions" .!= mempty)-                     <*> (o .:? "syllabification"))--instance ToJSON DictlayerDataDictWordsItemSensesItem-         where-        toJSON DictlayerDataDictWordsItemSensesItem'{..}-          = object-              (catMaybes-                 [("pronunciationUrl" .=) <$>-                    _dddwisiPronunciationURL,-                  ("conjugations" .=) <$> _dddwisiConjugations,-                  ("pronunciation" .=) <$> _dddwisiPronunciation,-                  ("synonyms" .=) <$> _dddwisiSynonyms,-                  ("source" .=) <$> _dddwisiSource,-                  ("partOfSpeech" .=) <$> _dddwisiPartOfSpeech,-                  ("definitions" .=) <$> _dddwisiDefinitions,-                  ("syllabification" .=) <$> _dddwisiSyllabification])---- | Recommendation related information for this volume.------ /See:/ 'volumeRecommendedInfo' smart constructor.-newtype VolumeRecommendedInfo = VolumeRecommendedInfo'-    { _vriExplanation :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeRecommendedInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vriExplanation'-volumeRecommendedInfo-    :: VolumeRecommendedInfo-volumeRecommendedInfo =-    VolumeRecommendedInfo'-    { _vriExplanation = Nothing-    }---- | A text explaining why this volume is recommended.-vriExplanation :: Lens' VolumeRecommendedInfo (Maybe Text)-vriExplanation-  = lens _vriExplanation-      (\ s a -> s{_vriExplanation = a})--instance FromJSON VolumeRecommendedInfo where-        parseJSON-          = withObject "VolumeRecommendedInfo"-              (\ o ->-                 VolumeRecommendedInfo' <$> (o .:? "explanation"))--instance ToJSON VolumeRecommendedInfo where-        toJSON VolumeRecommendedInfo'{..}-          = object-              (catMaybes [("explanation" .=) <$> _vriExplanation])------- /See:/ 'offers' smart constructor.-data Offers = Offers'-    { _oKind  :: !Text-    , _oItems :: !(Maybe [OffersItemsItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Offers' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oKind'------ * 'oItems'-offers-    :: Offers-offers =-    Offers'-    { _oKind = "promooffer#offers"-    , _oItems = Nothing-    }---- | Resource type.-oKind :: Lens' Offers Text-oKind = lens _oKind (\ s a -> s{_oKind = a})---- | A list of offers.-oItems :: Lens' Offers [OffersItemsItem]-oItems-  = lens _oItems (\ s a -> s{_oItems = a}) . _Default .-      _Coerce--instance FromJSON Offers where-        parseJSON-          = withObject "Offers"-              (\ o ->-                 Offers' <$>-                   (o .:? "kind" .!= "promooffer#offers") <*>-                     (o .:? "items" .!= mempty))--instance ToJSON Offers where-        toJSON Offers'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _oKind), ("items" .=) <$> _oItems])------- /See:/ 'discoveryclusters' smart constructor.-data Discoveryclusters = Discoveryclusters'-    { _dKind          :: !Text-    , _dTotalClusters :: !(Maybe (Textual Int32))-    , _dClusters      :: !(Maybe [DiscoveryclustersClustersItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Discoveryclusters' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dKind'------ * 'dTotalClusters'------ * 'dClusters'-discoveryclusters-    :: Discoveryclusters-discoveryclusters =-    Discoveryclusters'-    { _dKind = "books#discovery#clusters"-    , _dTotalClusters = Nothing-    , _dClusters = Nothing-    }---- | Resorce type.-dKind :: Lens' Discoveryclusters Text-dKind = lens _dKind (\ s a -> s{_dKind = a})--dTotalClusters :: Lens' Discoveryclusters (Maybe Int32)-dTotalClusters-  = lens _dTotalClusters-      (\ s a -> s{_dTotalClusters = a})-      . mapping _Coerce--dClusters :: Lens' Discoveryclusters [DiscoveryclustersClustersItem]-dClusters-  = lens _dClusters (\ s a -> s{_dClusters = a}) .-      _Default-      . _Coerce--instance FromJSON Discoveryclusters where-        parseJSON-          = withObject "Discoveryclusters"-              (\ o ->-                 Discoveryclusters' <$>-                   (o .:? "kind" .!= "books#discovery#clusters") <*>-                     (o .:? "totalClusters")-                     <*> (o .:? "clusters" .!= mempty))--instance ToJSON Discoveryclusters where-        toJSON Discoveryclusters'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _dKind),-                  ("totalClusters" .=) <$> _dTotalClusters,-                  ("clusters" .=) <$> _dClusters])------- /See:/ 'volumeseriesInfoVolumeSeriesItem' smart constructor.-data VolumeseriesInfoVolumeSeriesItem = VolumeseriesInfoVolumeSeriesItem'-    { _vivsiSeriesId       :: !(Maybe Text)-    , _vivsiSeriesBookType :: !(Maybe Text)-    , _vivsiOrderNumber    :: !(Maybe (Textual Int32))-    , _vivsiIssue          :: !(Maybe [VolumeseriesInfoVolumeSeriesItemIssueItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeseriesInfoVolumeSeriesItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vivsiSeriesId'------ * 'vivsiSeriesBookType'------ * 'vivsiOrderNumber'------ * 'vivsiIssue'-volumeseriesInfoVolumeSeriesItem-    :: VolumeseriesInfoVolumeSeriesItem-volumeseriesInfoVolumeSeriesItem =-    VolumeseriesInfoVolumeSeriesItem'-    { _vivsiSeriesId = Nothing-    , _vivsiSeriesBookType = Nothing-    , _vivsiOrderNumber = Nothing-    , _vivsiIssue = Nothing-    }---- | The series id.-vivsiSeriesId :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Text)-vivsiSeriesId-  = lens _vivsiSeriesId-      (\ s a -> s{_vivsiSeriesId = a})---- | The book type in the context of series. Examples - Single Issue,--- Collection Edition, etc.-vivsiSeriesBookType :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Text)-vivsiSeriesBookType-  = lens _vivsiSeriesBookType-      (\ s a -> s{_vivsiSeriesBookType = a})---- | The book order number in the series.-vivsiOrderNumber :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Int32)-vivsiOrderNumber-  = lens _vivsiOrderNumber-      (\ s a -> s{_vivsiOrderNumber = a})-      . mapping _Coerce---- | List of issues. Applicable only for Collection Edition and Omnibus.-vivsiIssue :: Lens' VolumeseriesInfoVolumeSeriesItem [VolumeseriesInfoVolumeSeriesItemIssueItem]-vivsiIssue-  = lens _vivsiIssue (\ s a -> s{_vivsiIssue = a}) .-      _Default-      . _Coerce--instance FromJSON VolumeseriesInfoVolumeSeriesItem-         where-        parseJSON-          = withObject "VolumeseriesInfoVolumeSeriesItem"-              (\ o ->-                 VolumeseriesInfoVolumeSeriesItem' <$>-                   (o .:? "seriesId") <*> (o .:? "seriesBookType") <*>-                     (o .:? "orderNumber")-                     <*> (o .:? "issue" .!= mempty))--instance ToJSON VolumeseriesInfoVolumeSeriesItem-         where-        toJSON VolumeseriesInfoVolumeSeriesItem'{..}-          = object-              (catMaybes-                 [("seriesId" .=) <$> _vivsiSeriesId,-                  ("seriesBookType" .=) <$> _vivsiSeriesBookType,-                  ("orderNumber" .=) <$> _vivsiOrderNumber,-                  ("issue" .=) <$> _vivsiIssue])---- | User settings in sub-objects, each for different purposes.------ /See:/ 'userSettingsNotesExport' smart constructor.-data UserSettingsNotesExport = UserSettingsNotesExport'-    { _usneFolderName :: !(Maybe Text)-    , _usneIsEnabled  :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotesExport' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usneFolderName'------ * 'usneIsEnabled'-userSettingsNotesExport-    :: UserSettingsNotesExport-userSettingsNotesExport =-    UserSettingsNotesExport'-    { _usneFolderName = Nothing-    , _usneIsEnabled = Nothing-    }--usneFolderName :: Lens' UserSettingsNotesExport (Maybe Text)-usneFolderName-  = lens _usneFolderName-      (\ s a -> s{_usneFolderName = a})--usneIsEnabled :: Lens' UserSettingsNotesExport (Maybe Bool)-usneIsEnabled-  = lens _usneIsEnabled-      (\ s a -> s{_usneIsEnabled = a})--instance FromJSON UserSettingsNotesExport where-        parseJSON-          = withObject "UserSettingsNotesExport"-              (\ o ->-                 UserSettingsNotesExport' <$>-                   (o .:? "folderName") <*> (o .:? "isEnabled"))--instance ToJSON UserSettingsNotesExport where-        toJSON UserSettingsNotesExport'{..}-          = object-              (catMaybes-                 [("folderName" .=) <$> _usneFolderName,-                  ("isEnabled" .=) <$> _usneIsEnabled])------- /See:/ 'concurrentAccessRestriction' smart constructor.-data ConcurrentAccessRestriction = ConcurrentAccessRestriction'-    { _carMaxConcurrentDevices :: !(Maybe (Textual Int32))-    , _carSignature            :: !(Maybe Text)-    , _carTimeWindowSeconds    :: !(Maybe (Textual Int32))-    , _carKind                 :: !Text-    , _carReasonCode           :: !(Maybe Text)-    , _carVolumeId             :: !(Maybe Text)-    , _carRestricted           :: !(Maybe Bool)-    , _carSource               :: !(Maybe Text)-    , _carDeviceAllowed        :: !(Maybe Bool)-    , _carMessage              :: !(Maybe Text)-    , _carNonce                :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ConcurrentAccessRestriction' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'carMaxConcurrentDevices'------ * 'carSignature'------ * 'carTimeWindowSeconds'------ * 'carKind'------ * 'carReasonCode'------ * 'carVolumeId'------ * 'carRestricted'------ * 'carSource'------ * 'carDeviceAllowed'------ * 'carMessage'------ * 'carNonce'-concurrentAccessRestriction-    :: ConcurrentAccessRestriction-concurrentAccessRestriction =-    ConcurrentAccessRestriction'-    { _carMaxConcurrentDevices = Nothing-    , _carSignature = Nothing-    , _carTimeWindowSeconds = Nothing-    , _carKind = "books#concurrentAccessRestriction"-    , _carReasonCode = Nothing-    , _carVolumeId = Nothing-    , _carRestricted = Nothing-    , _carSource = Nothing-    , _carDeviceAllowed = Nothing-    , _carMessage = Nothing-    , _carNonce = Nothing-    }---- | The maximum number of concurrent access licenses for this volume.-carMaxConcurrentDevices :: Lens' ConcurrentAccessRestriction (Maybe Int32)-carMaxConcurrentDevices-  = lens _carMaxConcurrentDevices-      (\ s a -> s{_carMaxConcurrentDevices = a})-      . mapping _Coerce---- | Response signature.-carSignature :: Lens' ConcurrentAccessRestriction (Maybe Text)-carSignature-  = lens _carSignature (\ s a -> s{_carSignature = a})---- | Time in seconds for license auto-expiration.-carTimeWindowSeconds :: Lens' ConcurrentAccessRestriction (Maybe Int32)-carTimeWindowSeconds-  = lens _carTimeWindowSeconds-      (\ s a -> s{_carTimeWindowSeconds = a})-      . mapping _Coerce---- | Resource type.-carKind :: Lens' ConcurrentAccessRestriction Text-carKind = lens _carKind (\ s a -> s{_carKind = a})---- | Error\/warning reason code.-carReasonCode :: Lens' ConcurrentAccessRestriction (Maybe Text)-carReasonCode-  = lens _carReasonCode-      (\ s a -> s{_carReasonCode = a})---- | Identifies the volume for which this entry applies.-carVolumeId :: Lens' ConcurrentAccessRestriction (Maybe Text)-carVolumeId-  = lens _carVolumeId (\ s a -> s{_carVolumeId = a})---- | Whether this volume has any concurrent access restrictions.-carRestricted :: Lens' ConcurrentAccessRestriction (Maybe Bool)-carRestricted-  = lens _carRestricted-      (\ s a -> s{_carRestricted = a})---- | Client app identifier for verification. Download access and--- client-validation only.-carSource :: Lens' ConcurrentAccessRestriction (Maybe Text)-carSource-  = lens _carSource (\ s a -> s{_carSource = a})---- | Whether access is granted for this (user, device, volume).-carDeviceAllowed :: Lens' ConcurrentAccessRestriction (Maybe Bool)-carDeviceAllowed-  = lens _carDeviceAllowed-      (\ s a -> s{_carDeviceAllowed = a})---- | Error\/warning message.-carMessage :: Lens' ConcurrentAccessRestriction (Maybe Text)-carMessage-  = lens _carMessage (\ s a -> s{_carMessage = a})---- | Client nonce for verification. Download access and client-validation--- only.-carNonce :: Lens' ConcurrentAccessRestriction (Maybe Text)-carNonce = lens _carNonce (\ s a -> s{_carNonce = a})--instance FromJSON ConcurrentAccessRestriction where-        parseJSON-          = withObject "ConcurrentAccessRestriction"-              (\ o ->-                 ConcurrentAccessRestriction' <$>-                   (o .:? "maxConcurrentDevices") <*>-                     (o .:? "signature")-                     <*> (o .:? "timeWindowSeconds")-                     <*>-                     (o .:? "kind" .!=-                        "books#concurrentAccessRestriction")-                     <*> (o .:? "reasonCode")-                     <*> (o .:? "volumeId")-                     <*> (o .:? "restricted")-                     <*> (o .:? "source")-                     <*> (o .:? "deviceAllowed")-                     <*> (o .:? "message")-                     <*> (o .:? "nonce"))--instance ToJSON ConcurrentAccessRestriction where-        toJSON ConcurrentAccessRestriction'{..}-          = object-              (catMaybes-                 [("maxConcurrentDevices" .=) <$>-                    _carMaxConcurrentDevices,-                  ("signature" .=) <$> _carSignature,-                  ("timeWindowSeconds" .=) <$> _carTimeWindowSeconds,-                  Just ("kind" .= _carKind),-                  ("reasonCode" .=) <$> _carReasonCode,-                  ("volumeId" .=) <$> _carVolumeId,-                  ("restricted" .=) <$> _carRestricted,-                  ("source" .=) <$> _carSource,-                  ("deviceAllowed" .=) <$> _carDeviceAllowed,-                  ("message" .=) <$> _carMessage,-                  ("nonce" .=) <$> _carNonce])------- /See:/ 'volumes' smart constructor.-data Volumes = Volumes'-    { _v1TotalItems :: !(Maybe (Textual Int32))-    , _v1Kind       :: !Text-    , _v1Items      :: !(Maybe [Volume])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Volumes' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'v1TotalItems'------ * 'v1Kind'------ * 'v1Items'-volumes-    :: Volumes-volumes =-    Volumes'-    { _v1TotalItems = Nothing-    , _v1Kind = "books#volumes"-    , _v1Items = Nothing-    }---- | Total number of volumes found. This might be greater than the number of--- volumes returned in this response if results have been paginated.-v1TotalItems :: Lens' Volumes (Maybe Int32)-v1TotalItems-  = lens _v1TotalItems (\ s a -> s{_v1TotalItems = a})-      . mapping _Coerce---- | Resource type.-v1Kind :: Lens' Volumes Text-v1Kind = lens _v1Kind (\ s a -> s{_v1Kind = a})---- | A list of volumes.-v1Items :: Lens' Volumes [Volume]-v1Items-  = lens _v1Items (\ s a -> s{_v1Items = a}) . _Default-      . _Coerce--instance FromJSON Volumes where-        parseJSON-          = withObject "Volumes"-              (\ o ->-                 Volumes' <$>-                   (o .:? "totalItems") <*>-                     (o .:? "kind" .!= "books#volumes")-                     <*> (o .:? "items" .!= mempty))--instance ToJSON Volumes where-        toJSON Volumes'{..}-          = object-              (catMaybes-                 [("totalItems" .=) <$> _v1TotalItems,-                  Just ("kind" .= _v1Kind), ("items" .=) <$> _v1Items])------- /See:/ 'userSettingsNotificationMatchMyInterests' smart constructor.-newtype UserSettingsNotificationMatchMyInterests = UserSettingsNotificationMatchMyInterests'-    { _usnmmiOptedState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotificationMatchMyInterests' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnmmiOptedState'-userSettingsNotificationMatchMyInterests-    :: UserSettingsNotificationMatchMyInterests-userSettingsNotificationMatchMyInterests =-    UserSettingsNotificationMatchMyInterests'-    { _usnmmiOptedState = Nothing-    }--usnmmiOptedState :: Lens' UserSettingsNotificationMatchMyInterests (Maybe Text)-usnmmiOptedState-  = lens _usnmmiOptedState-      (\ s a -> s{_usnmmiOptedState = a})--instance FromJSON-         UserSettingsNotificationMatchMyInterests where-        parseJSON-          = withObject-              "UserSettingsNotificationMatchMyInterests"-              (\ o ->-                 UserSettingsNotificationMatchMyInterests' <$>-                   (o .:? "opted_state"))--instance ToJSON-         UserSettingsNotificationMatchMyInterests where-        toJSON UserSettingsNotificationMatchMyInterests'{..}-          = object-              (catMaybes-                 [("opted_state" .=) <$> _usnmmiOptedState])------- /See:/ 'bookshelves' smart constructor.-data Bookshelves = Bookshelves'-    { _booKind  :: !Text-    , _booItems :: !(Maybe [Bookshelf])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Bookshelves' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'booKind'------ * 'booItems'-bookshelves-    :: Bookshelves-bookshelves =-    Bookshelves'-    { _booKind = "books#bookshelves"-    , _booItems = Nothing-    }---- | Resource type.-booKind :: Lens' Bookshelves Text-booKind = lens _booKind (\ s a -> s{_booKind = a})---- | A list of bookshelves.-booItems :: Lens' Bookshelves [Bookshelf]-booItems-  = lens _booItems (\ s a -> s{_booItems = a}) .-      _Default-      . _Coerce--instance FromJSON Bookshelves where-        parseJSON-          = withObject "Bookshelves"-              (\ o ->-                 Bookshelves' <$>-                   (o .:? "kind" .!= "books#bookshelves") <*>-                     (o .:? "items" .!= mempty))--instance ToJSON Bookshelves where-        toJSON Bookshelves'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _booKind),-                  ("items" .=) <$> _booItems])---- | The source, url and attribution for this dictionary data.------ /See:/ 'dictlayerDataDictSource' smart constructor.-data DictlayerDataDictSource = DictlayerDataDictSource'-    { _dddsURL         :: !(Maybe Text)-    , _dddsAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddsURL'------ * 'dddsAttribution'-dictlayerDataDictSource-    :: DictlayerDataDictSource-dictlayerDataDictSource =-    DictlayerDataDictSource'-    { _dddsURL = Nothing-    , _dddsAttribution = Nothing-    }--dddsURL :: Lens' DictlayerDataDictSource (Maybe Text)-dddsURL = lens _dddsURL (\ s a -> s{_dddsURL = a})--dddsAttribution :: Lens' DictlayerDataDictSource (Maybe Text)-dddsAttribution-  = lens _dddsAttribution-      (\ s a -> s{_dddsAttribution = a})--instance FromJSON DictlayerDataDictSource where-        parseJSON-          = withObject "DictlayerDataDictSource"-              (\ o ->-                 DictlayerDataDictSource' <$>-                   (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON DictlayerDataDictSource where-        toJSON DictlayerDataDictSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddsURL,-                  ("attribution" .=) <$> _dddsAttribution])------- /See:/ 'downloadAccesses' smart constructor.-data DownloadAccesses = DownloadAccesses'-    { _daKind               :: !Text-    , _daDownloadAccessList :: !(Maybe [DownloadAccessRestriction])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DownloadAccesses' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'daKind'------ * 'daDownloadAccessList'-downloadAccesses-    :: DownloadAccesses-downloadAccesses =-    DownloadAccesses'-    { _daKind = "books#downloadAccesses"-    , _daDownloadAccessList = Nothing-    }---- | Resource type.-daKind :: Lens' DownloadAccesses Text-daKind = lens _daKind (\ s a -> s{_daKind = a})---- | A list of download access responses.-daDownloadAccessList :: Lens' DownloadAccesses [DownloadAccessRestriction]-daDownloadAccessList-  = lens _daDownloadAccessList-      (\ s a -> s{_daDownloadAccessList = a})-      . _Default-      . _Coerce--instance FromJSON DownloadAccesses where-        parseJSON-          = withObject "DownloadAccesses"-              (\ o ->-                 DownloadAccesses' <$>-                   (o .:? "kind" .!= "books#downloadAccesses") <*>-                     (o .:? "downloadAccessList" .!= mempty))--instance ToJSON DownloadAccesses where-        toJSON DownloadAccesses'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _daKind),-                  ("downloadAccessList" .=) <$> _daDownloadAccessList])------- /See:/ 'geolayerDataGeoViewportHi' smart constructor.-data GeolayerDataGeoViewportHi = GeolayerDataGeoViewportHi'-    { _gdgvhLatitude  :: !(Maybe (Textual Double))-    , _gdgvhLongitude :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GeolayerDataGeoViewportHi' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gdgvhLatitude'------ * 'gdgvhLongitude'-geolayerDataGeoViewportHi-    :: GeolayerDataGeoViewportHi-geolayerDataGeoViewportHi =-    GeolayerDataGeoViewportHi'-    { _gdgvhLatitude = Nothing-    , _gdgvhLongitude = Nothing-    }--gdgvhLatitude :: Lens' GeolayerDataGeoViewportHi (Maybe Double)-gdgvhLatitude-  = lens _gdgvhLatitude-      (\ s a -> s{_gdgvhLatitude = a})-      . mapping _Coerce--gdgvhLongitude :: Lens' GeolayerDataGeoViewportHi (Maybe Double)-gdgvhLongitude-  = lens _gdgvhLongitude-      (\ s a -> s{_gdgvhLongitude = a})-      . mapping _Coerce--instance FromJSON GeolayerDataGeoViewportHi where-        parseJSON-          = withObject "GeolayerDataGeoViewportHi"-              (\ o ->-                 GeolayerDataGeoViewportHi' <$>-                   (o .:? "latitude") <*> (o .:? "longitude"))--instance ToJSON GeolayerDataGeoViewportHi where-        toJSON GeolayerDataGeoViewportHi'{..}-          = object-              (catMaybes-                 [("latitude" .=) <$> _gdgvhLatitude,-                  ("longitude" .=) <$> _gdgvhLongitude])---- | General volume information.------ /See:/ 'volumeVolumeInfo' smart constructor.-data VolumeVolumeInfo = VolumeVolumeInfo'-    { _vviImageLinks          :: !(Maybe VolumeVolumeInfoImageLinks)-    , _vviPanelizationSummary :: !(Maybe VolumeVolumeInfoPanelizationSummary)-    , _vviAverageRating       :: !(Maybe (Textual Double))-    , _vviRatingsCount        :: !(Maybe (Textual Int32))-    , _vviCanonicalVolumeLink :: !(Maybe Text)-    , _vviReadingModes        :: !(Maybe JSONValue)-    , _vviIndustryIdentifiers :: !(Maybe [VolumeVolumeInfoIndustryIdentifiersItem])-    , _vviSeriesInfo          :: !(Maybe VolumeseriesInfo)-    , _vviPrintedPageCount    :: !(Maybe (Textual Int32))-    , _vviMainCategory        :: !(Maybe Text)-    , _vviContentVersion      :: !(Maybe Text)-    , _vviSamplePageCount     :: !(Maybe (Textual Int32))-    , _vviCategories          :: !(Maybe [Text])-    , _vviAuthors             :: !(Maybe [Text])-    , _vviComicsContent       :: !(Maybe Bool)-    , _vviAllowAnonLogging    :: !(Maybe Bool)-    , _vviSubtitle            :: !(Maybe Text)-    , _vviPublishedDate       :: !(Maybe Text)-    , _vviMaturityRating      :: !(Maybe Text)-    , _vviPreviewLink         :: !(Maybe Text)-    , _vviLanguage            :: !(Maybe Text)-    , _vviTitle               :: !(Maybe Text)-    , _vviPageCount           :: !(Maybe (Textual Int32))-    , _vviDimensions          :: !(Maybe VolumeVolumeInfoDimensions)-    , _vviInfoLink            :: !(Maybe Text)-    , _vviPublisher           :: !(Maybe Text)-    , _vviDescription         :: !(Maybe Text)-    , _vviPrintType           :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeVolumeInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vviImageLinks'------ * 'vviPanelizationSummary'------ * 'vviAverageRating'------ * 'vviRatingsCount'------ * 'vviCanonicalVolumeLink'------ * 'vviReadingModes'------ * 'vviIndustryIdentifiers'------ * 'vviSeriesInfo'------ * 'vviPrintedPageCount'------ * 'vviMainCategory'------ * 'vviContentVersion'------ * 'vviSamplePageCount'------ * 'vviCategories'------ * 'vviAuthors'------ * 'vviComicsContent'------ * 'vviAllowAnonLogging'------ * 'vviSubtitle'------ * 'vviPublishedDate'------ * 'vviMaturityRating'------ * 'vviPreviewLink'------ * 'vviLanguage'------ * 'vviTitle'------ * 'vviPageCount'------ * 'vviDimensions'------ * 'vviInfoLink'------ * 'vviPublisher'------ * 'vviDescription'------ * 'vviPrintType'-volumeVolumeInfo-    :: VolumeVolumeInfo-volumeVolumeInfo =-    VolumeVolumeInfo'-    { _vviImageLinks = Nothing-    , _vviPanelizationSummary = Nothing-    , _vviAverageRating = Nothing-    , _vviRatingsCount = Nothing-    , _vviCanonicalVolumeLink = Nothing-    , _vviReadingModes = Nothing-    , _vviIndustryIdentifiers = Nothing-    , _vviSeriesInfo = Nothing-    , _vviPrintedPageCount = Nothing-    , _vviMainCategory = Nothing-    , _vviContentVersion = Nothing-    , _vviSamplePageCount = Nothing-    , _vviCategories = Nothing-    , _vviAuthors = Nothing-    , _vviComicsContent = Nothing-    , _vviAllowAnonLogging = Nothing-    , _vviSubtitle = Nothing-    , _vviPublishedDate = Nothing-    , _vviMaturityRating = Nothing-    , _vviPreviewLink = Nothing-    , _vviLanguage = Nothing-    , _vviTitle = Nothing-    , _vviPageCount = Nothing-    , _vviDimensions = Nothing-    , _vviInfoLink = Nothing-    , _vviPublisher = Nothing-    , _vviDescription = Nothing-    , _vviPrintType = Nothing-    }---- | A list of image links for all the sizes that are available. (In LITE--- projection.)-vviImageLinks :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoImageLinks)-vviImageLinks-  = lens _vviImageLinks-      (\ s a -> s{_vviImageLinks = a})---- | A top-level summary of the panelization info in this volume.-vviPanelizationSummary :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoPanelizationSummary)-vviPanelizationSummary-  = lens _vviPanelizationSummary-      (\ s a -> s{_vviPanelizationSummary = a})---- | The mean review rating for this volume. (min = 1.0, max = 5.0)-vviAverageRating :: Lens' VolumeVolumeInfo (Maybe Double)-vviAverageRating-  = lens _vviAverageRating-      (\ s a -> s{_vviAverageRating = a})-      . mapping _Coerce---- | The number of review ratings for this volume.-vviRatingsCount :: Lens' VolumeVolumeInfo (Maybe Int32)-vviRatingsCount-  = lens _vviRatingsCount-      (\ s a -> s{_vviRatingsCount = a})-      . mapping _Coerce---- | Canonical URL for a volume. (In LITE projection.)-vviCanonicalVolumeLink :: Lens' VolumeVolumeInfo (Maybe Text)-vviCanonicalVolumeLink-  = lens _vviCanonicalVolumeLink-      (\ s a -> s{_vviCanonicalVolumeLink = a})---- | The reading modes available for this volume.-vviReadingModes :: Lens' VolumeVolumeInfo (Maybe JSONValue)-vviReadingModes-  = lens _vviReadingModes-      (\ s a -> s{_vviReadingModes = a})---- | Industry standard identifiers for this volume.-vviIndustryIdentifiers :: Lens' VolumeVolumeInfo [VolumeVolumeInfoIndustryIdentifiersItem]-vviIndustryIdentifiers-  = lens _vviIndustryIdentifiers-      (\ s a -> s{_vviIndustryIdentifiers = a})-      . _Default-      . _Coerce--vviSeriesInfo :: Lens' VolumeVolumeInfo (Maybe VolumeseriesInfo)-vviSeriesInfo-  = lens _vviSeriesInfo-      (\ s a -> s{_vviSeriesInfo = a})---- | Total number of printed pages in generated pdf representation.-vviPrintedPageCount :: Lens' VolumeVolumeInfo (Maybe Int32)-vviPrintedPageCount-  = lens _vviPrintedPageCount-      (\ s a -> s{_vviPrintedPageCount = a})-      . mapping _Coerce---- | The main category to which this volume belongs. It will be the category--- from the categories list returned below that has the highest weight.-vviMainCategory :: Lens' VolumeVolumeInfo (Maybe Text)-vviMainCategory-  = lens _vviMainCategory-      (\ s a -> s{_vviMainCategory = a})---- | An identifier for the version of the volume content (text & images). (In--- LITE projection)-vviContentVersion :: Lens' VolumeVolumeInfo (Maybe Text)-vviContentVersion-  = lens _vviContentVersion-      (\ s a -> s{_vviContentVersion = a})---- | Total number of sample pages as per publisher metadata.-vviSamplePageCount :: Lens' VolumeVolumeInfo (Maybe Int32)-vviSamplePageCount-  = lens _vviSamplePageCount-      (\ s a -> s{_vviSamplePageCount = a})-      . mapping _Coerce---- | A list of subject categories, such as \"Fiction\", \"Suspense\", etc.-vviCategories :: Lens' VolumeVolumeInfo [Text]-vviCategories-  = lens _vviCategories-      (\ s a -> s{_vviCategories = a})-      . _Default-      . _Coerce---- | The names of the authors and\/or editors for this volume. (In LITE--- projection)-vviAuthors :: Lens' VolumeVolumeInfo [Text]-vviAuthors-  = lens _vviAuthors (\ s a -> s{_vviAuthors = a}) .-      _Default-      . _Coerce---- | Whether the volume has comics content.-vviComicsContent :: Lens' VolumeVolumeInfo (Maybe Bool)-vviComicsContent-  = lens _vviComicsContent-      (\ s a -> s{_vviComicsContent = a})---- | Whether anonymous logging should be allowed.-vviAllowAnonLogging :: Lens' VolumeVolumeInfo (Maybe Bool)-vviAllowAnonLogging-  = lens _vviAllowAnonLogging-      (\ s a -> s{_vviAllowAnonLogging = a})---- | Volume subtitle. (In LITE projection.)-vviSubtitle :: Lens' VolumeVolumeInfo (Maybe Text)-vviSubtitle-  = lens _vviSubtitle (\ s a -> s{_vviSubtitle = a})---- | Date of publication. (In LITE projection.)-vviPublishedDate :: Lens' VolumeVolumeInfo (Maybe Text)-vviPublishedDate-  = lens _vviPublishedDate-      (\ s a -> s{_vviPublishedDate = a})--vviMaturityRating :: Lens' VolumeVolumeInfo (Maybe Text)-vviMaturityRating-  = lens _vviMaturityRating-      (\ s a -> s{_vviMaturityRating = a})---- | URL to preview this volume on the Google Books site.-vviPreviewLink :: Lens' VolumeVolumeInfo (Maybe Text)-vviPreviewLink-  = lens _vviPreviewLink-      (\ s a -> s{_vviPreviewLink = a})---- | Best language for this volume (based on content). It is the two-letter--- ISO 639-1 code such as \'fr\', \'en\', etc.-vviLanguage :: Lens' VolumeVolumeInfo (Maybe Text)-vviLanguage-  = lens _vviLanguage (\ s a -> s{_vviLanguage = a})---- | Volume title. (In LITE projection.)-vviTitle :: Lens' VolumeVolumeInfo (Maybe Text)-vviTitle = lens _vviTitle (\ s a -> s{_vviTitle = a})---- | Total number of pages as per publisher metadata.-vviPageCount :: Lens' VolumeVolumeInfo (Maybe Int32)-vviPageCount-  = lens _vviPageCount (\ s a -> s{_vviPageCount = a})-      . mapping _Coerce---- | Physical dimensions of this volume.-vviDimensions :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoDimensions)-vviDimensions-  = lens _vviDimensions-      (\ s a -> s{_vviDimensions = a})---- | URL to view information about this volume on the Google Books site. (In--- LITE projection)-vviInfoLink :: Lens' VolumeVolumeInfo (Maybe Text)-vviInfoLink-  = lens _vviInfoLink (\ s a -> s{_vviInfoLink = a})---- | Publisher of this volume. (In LITE projection.)-vviPublisher :: Lens' VolumeVolumeInfo (Maybe Text)-vviPublisher-  = lens _vviPublisher (\ s a -> s{_vviPublisher = a})---- | A synopsis of the volume. The text of the description is formatted in--- HTML and includes simple formatting elements, such as b, i, and br tags.--- (In LITE projection.)-vviDescription :: Lens' VolumeVolumeInfo (Maybe Text)-vviDescription-  = lens _vviDescription-      (\ s a -> s{_vviDescription = a})---- | Type of publication of this volume. Possible values are BOOK or--- MAGAZINE.-vviPrintType :: Lens' VolumeVolumeInfo (Maybe Text)-vviPrintType-  = lens _vviPrintType (\ s a -> s{_vviPrintType = a})--instance FromJSON VolumeVolumeInfo where-        parseJSON-          = withObject "VolumeVolumeInfo"-              (\ o ->-                 VolumeVolumeInfo' <$>-                   (o .:? "imageLinks") <*>-                     (o .:? "panelizationSummary")-                     <*> (o .:? "averageRating")-                     <*> (o .:? "ratingsCount")-                     <*> (o .:? "canonicalVolumeLink")-                     <*> (o .:? "readingModes")-                     <*> (o .:? "industryIdentifiers" .!= mempty)-                     <*> (o .:? "seriesInfo")-                     <*> (o .:? "printedPageCount")-                     <*> (o .:? "mainCategory")-                     <*> (o .:? "contentVersion")-                     <*> (o .:? "samplePageCount")-                     <*> (o .:? "categories" .!= mempty)-                     <*> (o .:? "authors" .!= mempty)-                     <*> (o .:? "comicsContent")-                     <*> (o .:? "allowAnonLogging")-                     <*> (o .:? "subtitle")-                     <*> (o .:? "publishedDate")-                     <*> (o .:? "maturityRating")-                     <*> (o .:? "previewLink")-                     <*> (o .:? "language")-                     <*> (o .:? "title")-                     <*> (o .:? "pageCount")-                     <*> (o .:? "dimensions")-                     <*> (o .:? "infoLink")-                     <*> (o .:? "publisher")-                     <*> (o .:? "description")-                     <*> (o .:? "printType"))--instance ToJSON VolumeVolumeInfo where-        toJSON VolumeVolumeInfo'{..}-          = object-              (catMaybes-                 [("imageLinks" .=) <$> _vviImageLinks,-                  ("panelizationSummary" .=) <$>-                    _vviPanelizationSummary,-                  ("averageRating" .=) <$> _vviAverageRating,-                  ("ratingsCount" .=) <$> _vviRatingsCount,-                  ("canonicalVolumeLink" .=) <$>-                    _vviCanonicalVolumeLink,-                  ("readingModes" .=) <$> _vviReadingModes,-                  ("industryIdentifiers" .=) <$>-                    _vviIndustryIdentifiers,-                  ("seriesInfo" .=) <$> _vviSeriesInfo,-                  ("printedPageCount" .=) <$> _vviPrintedPageCount,-                  ("mainCategory" .=) <$> _vviMainCategory,-                  ("contentVersion" .=) <$> _vviContentVersion,-                  ("samplePageCount" .=) <$> _vviSamplePageCount,-                  ("categories" .=) <$> _vviCategories,-                  ("authors" .=) <$> _vviAuthors,-                  ("comicsContent" .=) <$> _vviComicsContent,-                  ("allowAnonLogging" .=) <$> _vviAllowAnonLogging,-                  ("subtitle" .=) <$> _vviSubtitle,-                  ("publishedDate" .=) <$> _vviPublishedDate,-                  ("maturityRating" .=) <$> _vviMaturityRating,-                  ("previewLink" .=) <$> _vviPreviewLink,-                  ("language" .=) <$> _vviLanguage,-                  ("title" .=) <$> _vviTitle,-                  ("pageCount" .=) <$> _vviPageCount,-                  ("dimensions" .=) <$> _vviDimensions,-                  ("infoLink" .=) <$> _vviInfoLink,-                  ("publisher" .=) <$> _vviPublisher,-                  ("description" .=) <$> _vviDescription,-                  ("printType" .=) <$> _vviPrintType])------- /See:/ 'metadataItemsItem' smart constructor.-data MetadataItemsItem = MetadataItemsItem'-    { _miiSize         :: !(Maybe (Textual Int64))-    , _miiVersion      :: !(Maybe (Textual Int64))-    , _miiLanguage     :: !(Maybe Text)-    , _miiDownloadURL  :: !(Maybe Text)-    , _miiEncryptedKey :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'miiSize'------ * 'miiVersion'------ * 'miiLanguage'------ * 'miiDownloadURL'------ * 'miiEncryptedKey'-metadataItemsItem-    :: MetadataItemsItem-metadataItemsItem =-    MetadataItemsItem'-    { _miiSize = Nothing-    , _miiVersion = Nothing-    , _miiLanguage = Nothing-    , _miiDownloadURL = Nothing-    , _miiEncryptedKey = Nothing-    }--miiSize :: Lens' MetadataItemsItem (Maybe Int64)-miiSize-  = lens _miiSize (\ s a -> s{_miiSize = a}) .-      mapping _Coerce--miiVersion :: Lens' MetadataItemsItem (Maybe Int64)-miiVersion-  = lens _miiVersion (\ s a -> s{_miiVersion = a}) .-      mapping _Coerce--miiLanguage :: Lens' MetadataItemsItem (Maybe Text)-miiLanguage-  = lens _miiLanguage (\ s a -> s{_miiLanguage = a})--miiDownloadURL :: Lens' MetadataItemsItem (Maybe Text)-miiDownloadURL-  = lens _miiDownloadURL-      (\ s a -> s{_miiDownloadURL = a})--miiEncryptedKey :: Lens' MetadataItemsItem (Maybe Text)-miiEncryptedKey-  = lens _miiEncryptedKey-      (\ s a -> s{_miiEncryptedKey = a})--instance FromJSON MetadataItemsItem where-        parseJSON-          = withObject "MetadataItemsItem"-              (\ o ->-                 MetadataItemsItem' <$>-                   (o .:? "size") <*> (o .:? "version") <*>-                     (o .:? "language")-                     <*> (o .:? "download_url")-                     <*> (o .:? "encrypted_key"))--instance ToJSON MetadataItemsItem where-        toJSON MetadataItemsItem'{..}-          = object-              (catMaybes-                 [("size" .=) <$> _miiSize,-                  ("version" .=) <$> _miiVersion,-                  ("language" .=) <$> _miiLanguage,-                  ("download_url" .=) <$> _miiDownloadURL,-                  ("encrypted_key" .=) <$> _miiEncryptedKey])------- /See:/ 'dictlayerDataDictWordsItemSensesItemSource' smart constructor.-data DictlayerDataDictWordsItemSensesItemSource = DictlayerDataDictWordsItemSensesItemSource'-    { _dddwisisURL         :: !(Maybe Text)-    , _dddwisisAttribution :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSource' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dddwisisURL'------ * 'dddwisisAttribution'-dictlayerDataDictWordsItemSensesItemSource-    :: DictlayerDataDictWordsItemSensesItemSource-dictlayerDataDictWordsItemSensesItemSource =-    DictlayerDataDictWordsItemSensesItemSource'-    { _dddwisisURL = Nothing-    , _dddwisisAttribution = Nothing-    }--dddwisisURL :: Lens' DictlayerDataDictWordsItemSensesItemSource (Maybe Text)-dddwisisURL-  = lens _dddwisisURL (\ s a -> s{_dddwisisURL = a})--dddwisisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemSource (Maybe Text)-dddwisisAttribution-  = lens _dddwisisAttribution-      (\ s a -> s{_dddwisisAttribution = a})--instance FromJSON-         DictlayerDataDictWordsItemSensesItemSource where-        parseJSON-          = withObject-              "DictlayerDataDictWordsItemSensesItemSource"-              (\ o ->-                 DictlayerDataDictWordsItemSensesItemSource' <$>-                   (o .:? "url") <*> (o .:? "attribution"))--instance ToJSON-         DictlayerDataDictWordsItemSensesItemSource where-        toJSON-          DictlayerDataDictWordsItemSensesItemSource'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _dddwisisURL,-                  ("attribution" .=) <$> _dddwisisAttribution])---- | Offer retail (=discounted) price in Micros------ /See:/ 'volumeSaleInfoOffersItemRetailPrice' smart constructor.-data VolumeSaleInfoOffersItemRetailPrice = VolumeSaleInfoOffersItemRetailPrice'-    { _vsioirpCurrencyCode   :: !(Maybe Text)-    , _vsioirpAmountInMicros :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSaleInfoOffersItemRetailPrice' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsioirpCurrencyCode'------ * 'vsioirpAmountInMicros'-volumeSaleInfoOffersItemRetailPrice-    :: VolumeSaleInfoOffersItemRetailPrice-volumeSaleInfoOffersItemRetailPrice =-    VolumeSaleInfoOffersItemRetailPrice'-    { _vsioirpCurrencyCode = Nothing-    , _vsioirpAmountInMicros = Nothing-    }--vsioirpCurrencyCode :: Lens' VolumeSaleInfoOffersItemRetailPrice (Maybe Text)-vsioirpCurrencyCode-  = lens _vsioirpCurrencyCode-      (\ s a -> s{_vsioirpCurrencyCode = a})--vsioirpAmountInMicros :: Lens' VolumeSaleInfoOffersItemRetailPrice (Maybe Double)-vsioirpAmountInMicros-  = lens _vsioirpAmountInMicros-      (\ s a -> s{_vsioirpAmountInMicros = a})-      . mapping _Coerce--instance FromJSON VolumeSaleInfoOffersItemRetailPrice-         where-        parseJSON-          = withObject "VolumeSaleInfoOffersItemRetailPrice"-              (\ o ->-                 VolumeSaleInfoOffersItemRetailPrice' <$>-                   (o .:? "currencyCode") <*> (o .:? "amountInMicros"))--instance ToJSON VolumeSaleInfoOffersItemRetailPrice-         where-        toJSON VolumeSaleInfoOffersItemRetailPrice'{..}-          = object-              (catMaybes-                 [("currencyCode" .=) <$> _vsioirpCurrencyCode,-                  ("amountInMicros" .=) <$> _vsioirpAmountInMicros])---- | Information on the ability to share with the family.------ /See:/ 'volumeUserInfoFamilySharing' smart constructor.-data VolumeUserInfoFamilySharing = VolumeUserInfoFamilySharing'-    { _vuifsFamilyRole             :: !(Maybe Text)-    , _vuifsIsSharingAllowed       :: !(Maybe Bool)-    , _vuifsIsSharingDisabledByFop :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeUserInfoFamilySharing' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vuifsFamilyRole'------ * 'vuifsIsSharingAllowed'------ * 'vuifsIsSharingDisabledByFop'-volumeUserInfoFamilySharing-    :: VolumeUserInfoFamilySharing-volumeUserInfoFamilySharing =-    VolumeUserInfoFamilySharing'-    { _vuifsFamilyRole = Nothing-    , _vuifsIsSharingAllowed = Nothing-    , _vuifsIsSharingDisabledByFop = Nothing-    }---- | The role of the user in the family.-vuifsFamilyRole :: Lens' VolumeUserInfoFamilySharing (Maybe Text)-vuifsFamilyRole-  = lens _vuifsFamilyRole-      (\ s a -> s{_vuifsFamilyRole = a})---- | Whether or not this volume can be shared with the family by the user.--- This includes sharing eligibility of both the volume and the user. If--- the value is true, the user can initiate a family sharing action.-vuifsIsSharingAllowed :: Lens' VolumeUserInfoFamilySharing (Maybe Bool)-vuifsIsSharingAllowed-  = lens _vuifsIsSharingAllowed-      (\ s a -> s{_vuifsIsSharingAllowed = a})---- | Whether or not sharing this volume is temporarily disabled due to issues--- with the Family Wallet.-vuifsIsSharingDisabledByFop :: Lens' VolumeUserInfoFamilySharing (Maybe Bool)-vuifsIsSharingDisabledByFop-  = lens _vuifsIsSharingDisabledByFop-      (\ s a -> s{_vuifsIsSharingDisabledByFop = a})--instance FromJSON VolumeUserInfoFamilySharing where-        parseJSON-          = withObject "VolumeUserInfoFamilySharing"-              (\ o ->-                 VolumeUserInfoFamilySharing' <$>-                   (o .:? "familyRole") <*> (o .:? "isSharingAllowed")-                     <*> (o .:? "isSharingDisabledByFop"))--instance ToJSON VolumeUserInfoFamilySharing where-        toJSON VolumeUserInfoFamilySharing'{..}-          = object-              (catMaybes-                 [("familyRole" .=) <$> _vuifsFamilyRole,-                  ("isSharingAllowed" .=) <$> _vuifsIsSharingAllowed,-                  ("isSharingDisabledByFop" .=) <$>-                    _vuifsIsSharingDisabledByFop])------- /See:/ 'userSettingsNotificationMoreFromSeries' smart constructor.-newtype UserSettingsNotificationMoreFromSeries = UserSettingsNotificationMoreFromSeries'-    { _usnmfsOptedState :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UserSettingsNotificationMoreFromSeries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'usnmfsOptedState'-userSettingsNotificationMoreFromSeries-    :: UserSettingsNotificationMoreFromSeries-userSettingsNotificationMoreFromSeries =-    UserSettingsNotificationMoreFromSeries'-    { _usnmfsOptedState = Nothing-    }--usnmfsOptedState :: Lens' UserSettingsNotificationMoreFromSeries (Maybe Text)-usnmfsOptedState-  = lens _usnmfsOptedState-      (\ s a -> s{_usnmfsOptedState = a})--instance FromJSON-         UserSettingsNotificationMoreFromSeries where-        parseJSON-          = withObject "UserSettingsNotificationMoreFromSeries"-              (\ o ->-                 UserSettingsNotificationMoreFromSeries' <$>-                   (o .:? "opted_state"))--instance ToJSON-         UserSettingsNotificationMoreFromSeries where-        toJSON UserSettingsNotificationMoreFromSeries'{..}-          = object-              (catMaybes-                 [("opted_state" .=) <$> _usnmfsOptedState])------- /See:/ 'volumeVolumeInfoIndustryIdentifiersItem' smart constructor.-data VolumeVolumeInfoIndustryIdentifiersItem = VolumeVolumeInfoIndustryIdentifiersItem'-    { _vviiiiIdentifier :: !(Maybe Text)-    , _vviiiiType       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeVolumeInfoIndustryIdentifiersItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vviiiiIdentifier'------ * 'vviiiiType'-volumeVolumeInfoIndustryIdentifiersItem-    :: VolumeVolumeInfoIndustryIdentifiersItem-volumeVolumeInfoIndustryIdentifiersItem =-    VolumeVolumeInfoIndustryIdentifiersItem'-    { _vviiiiIdentifier = Nothing-    , _vviiiiType = Nothing-    }---- | Industry specific volume identifier.-vviiiiIdentifier :: Lens' VolumeVolumeInfoIndustryIdentifiersItem (Maybe Text)-vviiiiIdentifier-  = lens _vviiiiIdentifier-      (\ s a -> s{_vviiiiIdentifier = a})---- | Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.-vviiiiType :: Lens' VolumeVolumeInfoIndustryIdentifiersItem (Maybe Text)-vviiiiType-  = lens _vviiiiType (\ s a -> s{_vviiiiType = a})--instance FromJSON-         VolumeVolumeInfoIndustryIdentifiersItem where-        parseJSON-          = withObject-              "VolumeVolumeInfoIndustryIdentifiersItem"-              (\ o ->-                 VolumeVolumeInfoIndustryIdentifiersItem' <$>-                   (o .:? "identifier") <*> (o .:? "type"))--instance ToJSON-         VolumeVolumeInfoIndustryIdentifiersItem where-        toJSON VolumeVolumeInfoIndustryIdentifiersItem'{..}-          = object-              (catMaybes-                 [("identifier" .=) <$> _vviiiiIdentifier,-                  ("type" .=) <$> _vviiiiType])------- /See:/ 'booksAnnotationsRange' smart constructor.-data BooksAnnotationsRange = BooksAnnotationsRange'-    { _barStartOffSet   :: !(Maybe Text)-    , _barEndOffSet     :: !(Maybe Text)-    , _barEndPosition   :: !(Maybe Text)-    , _barStartPosition :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BooksAnnotationsRange' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'barStartOffSet'------ * 'barEndOffSet'------ * 'barEndPosition'------ * 'barStartPosition'-booksAnnotationsRange-    :: BooksAnnotationsRange-booksAnnotationsRange =-    BooksAnnotationsRange'-    { _barStartOffSet = Nothing-    , _barEndOffSet = Nothing-    , _barEndPosition = Nothing-    , _barStartPosition = Nothing-    }---- | The offset from the starting position.-barStartOffSet :: Lens' BooksAnnotationsRange (Maybe Text)-barStartOffSet-  = lens _barStartOffSet-      (\ s a -> s{_barStartOffSet = a})---- | The offset from the ending position.-barEndOffSet :: Lens' BooksAnnotationsRange (Maybe Text)-barEndOffSet-  = lens _barEndOffSet (\ s a -> s{_barEndOffSet = a})---- | The ending position for the range.-barEndPosition :: Lens' BooksAnnotationsRange (Maybe Text)-barEndPosition-  = lens _barEndPosition-      (\ s a -> s{_barEndPosition = a})---- | The starting position for the range.-barStartPosition :: Lens' BooksAnnotationsRange (Maybe Text)-barStartPosition-  = lens _barStartPosition-      (\ s a -> s{_barStartPosition = a})--instance FromJSON BooksAnnotationsRange where-        parseJSON-          = withObject "BooksAnnotationsRange"-              (\ o ->-                 BooksAnnotationsRange' <$>-                   (o .:? "startOffset") <*> (o .:? "endOffset") <*>-                     (o .:? "endPosition")-                     <*> (o .:? "startPosition"))--instance ToJSON BooksAnnotationsRange where-        toJSON BooksAnnotationsRange'{..}-          = object-              (catMaybes-                 [("startOffset" .=) <$> _barStartOffSet,-                  ("endOffset" .=) <$> _barEndOffSet,-                  ("endPosition" .=) <$> _barEndPosition,-                  ("startPosition" .=) <$> _barStartPosition])------- /See:/ 'layersummaries' smart constructor.-data Layersummaries = Layersummaries'-    { _layTotalItems :: !(Maybe (Textual Int32))-    , _layKind       :: !Text-    , _layItems      :: !(Maybe [Layersummary])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Layersummaries' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'layTotalItems'------ * 'layKind'------ * 'layItems'-layersummaries-    :: Layersummaries-layersummaries =-    Layersummaries'-    { _layTotalItems = Nothing-    , _layKind = "books#layersummaries"-    , _layItems = Nothing-    }+data UserSettings =+  UserSettings'+    { _usNotification :: !(Maybe UserSettingsNotification)+    , _usKind         :: !Text+    , _usNotesExport  :: !(Maybe UserSettingsNotesExport)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usNotification'+--+-- * 'usKind'+--+-- * 'usNotesExport'+userSettings+    :: UserSettings+userSettings =+  UserSettings'+    { _usNotification = Nothing+    , _usKind = "books#usersettings"+    , _usNotesExport = Nothing+    }+++usNotification :: Lens' UserSettings (Maybe UserSettingsNotification)+usNotification+  = lens _usNotification+      (\ s a -> s{_usNotification = a})++-- | Resource type.+usKind :: Lens' UserSettings Text+usKind = lens _usKind (\ s a -> s{_usKind = a})++-- | User settings in sub-objects, each for different purposes.+usNotesExport :: Lens' UserSettings (Maybe UserSettingsNotesExport)+usNotesExport+  = lens _usNotesExport+      (\ s a -> s{_usNotesExport = a})++instance FromJSON UserSettings where+        parseJSON+          = withObject "UserSettings"+              (\ o ->+                 UserSettings' <$>+                   (o .:? "notification") <*>+                     (o .:? "kind" .!= "books#usersettings")+                     <*> (o .:? "notesExport"))++instance ToJSON UserSettings where+        toJSON UserSettings'{..}+          = object+              (catMaybes+                 [("notification" .=) <$> _usNotification,+                  Just ("kind" .= _usKind),+                  ("notesExport" .=) <$> _usNotesExport])++--+-- /See:/ 'annotations' smart constructor.+data Annotations =+  Annotations'+    { _aTotalItems    :: !(Maybe (Textual Int32))+    , _aNextPageToken :: !(Maybe Text)+    , _aKind          :: !Text+    , _aItems         :: !(Maybe [Annotation])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Annotations' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aTotalItems'+--+-- * 'aNextPageToken'+--+-- * 'aKind'+--+-- * 'aItems'+annotations+    :: Annotations+annotations =+  Annotations'+    { _aTotalItems = Nothing+    , _aNextPageToken = Nothing+    , _aKind = "books#annotations"+    , _aItems = Nothing+    }+++-- | Total number of annotations found. This may be greater than the number+-- of notes returned in this response if results have been paginated.+aTotalItems :: Lens' Annotations (Maybe Int32)+aTotalItems+  = lens _aTotalItems (\ s a -> s{_aTotalItems = a}) .+      mapping _Coerce++-- | Token to pass in for pagination for the next page. This will not be+-- present if this request does not have more results.+aNextPageToken :: Lens' Annotations (Maybe Text)+aNextPageToken+  = lens _aNextPageToken+      (\ s a -> s{_aNextPageToken = a})++-- | Resource type.+aKind :: Lens' Annotations Text+aKind = lens _aKind (\ s a -> s{_aKind = a})++-- | A list of annotations.+aItems :: Lens' Annotations [Annotation]+aItems+  = lens _aItems (\ s a -> s{_aItems = a}) . _Default .+      _Coerce++instance FromJSON Annotations where+        parseJSON+          = withObject "Annotations"+              (\ o ->+                 Annotations' <$>+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "books#annotations")+                     <*> (o .:? "items" .!= mempty))++instance ToJSON Annotations where+        toJSON Annotations'{..}+          = object+              (catMaybes+                 [("totalItems" .=) <$> _aTotalItems,+                  ("nextPageToken" .=) <$> _aNextPageToken,+                  Just ("kind" .= _aKind), ("items" .=) <$> _aItems])++--+-- /See:/ 'annotationsData' smart constructor.+data AnnotationsData =+  AnnotationsData'+    { _adTotalItems    :: !(Maybe (Textual Int32))+    , _adNextPageToken :: !(Maybe Text)+    , _adKind          :: !Text+    , _adItems         :: !(Maybe [AnnotationData])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationsData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adTotalItems'+--+-- * 'adNextPageToken'+--+-- * 'adKind'+--+-- * 'adItems'+annotationsData+    :: AnnotationsData+annotationsData =+  AnnotationsData'+    { _adTotalItems = Nothing+    , _adNextPageToken = Nothing+    , _adKind = "books#annotationsdata"+    , _adItems = Nothing+    }+++-- | The total number of volume annotations found.+adTotalItems :: Lens' AnnotationsData (Maybe Int32)+adTotalItems+  = lens _adTotalItems (\ s a -> s{_adTotalItems = a})+      . mapping _Coerce++-- | Token to pass in for pagination for the next page. This will not be+-- present if this request does not have more results.+adNextPageToken :: Lens' AnnotationsData (Maybe Text)+adNextPageToken+  = lens _adNextPageToken+      (\ s a -> s{_adNextPageToken = a})++-- | Resource type+adKind :: Lens' AnnotationsData Text+adKind = lens _adKind (\ s a -> s{_adKind = a})++-- | A list of Annotation Data.+adItems :: Lens' AnnotationsData [AnnotationData]+adItems+  = lens _adItems (\ s a -> s{_adItems = a}) . _Default+      . _Coerce++instance FromJSON AnnotationsData where+        parseJSON+          = withObject "AnnotationsData"+              (\ o ->+                 AnnotationsData' <$>+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "books#annotationsdata")+                     <*> (o .:? "items" .!= mempty))++instance ToJSON AnnotationsData where+        toJSON AnnotationsData'{..}+          = object+              (catMaybes+                 [("totalItems" .=) <$> _adTotalItems,+                  ("nextPageToken" .=) <$> _adNextPageToken,+                  Just ("kind" .= _adKind), ("items" .=) <$> _adItems])++--+-- /See:/ 'userSettingsNotificationMoreFromAuthors' smart constructor.+newtype UserSettingsNotificationMoreFromAuthors =+  UserSettingsNotificationMoreFromAuthors'+    { _usnmfaOptedState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotificationMoreFromAuthors' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnmfaOptedState'+userSettingsNotificationMoreFromAuthors+    :: UserSettingsNotificationMoreFromAuthors+userSettingsNotificationMoreFromAuthors =+  UserSettingsNotificationMoreFromAuthors' {_usnmfaOptedState = Nothing}+++usnmfaOptedState :: Lens' UserSettingsNotificationMoreFromAuthors (Maybe Text)+usnmfaOptedState+  = lens _usnmfaOptedState+      (\ s a -> s{_usnmfaOptedState = a})++instance FromJSON+           UserSettingsNotificationMoreFromAuthors+         where+        parseJSON+          = withObject+              "UserSettingsNotificationMoreFromAuthors"+              (\ o ->+                 UserSettingsNotificationMoreFromAuthors' <$>+                   (o .:? "opted_state"))++instance ToJSON+           UserSettingsNotificationMoreFromAuthors+         where+        toJSON UserSettingsNotificationMoreFromAuthors'{..}+          = object+              (catMaybes+                 [("opted_state" .=) <$> _usnmfaOptedState])++--+-- /See:/ 'volumeannotations' smart constructor.+data Volumeannotations =+  Volumeannotations'+    { _vTotalItems    :: !(Maybe (Textual Int32))+    , _vNextPageToken :: !(Maybe Text)+    , _vKind          :: !Text+    , _vItems         :: !(Maybe [Volumeannotation])+    , _vVersion       :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Volumeannotations' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vTotalItems'+--+-- * 'vNextPageToken'+--+-- * 'vKind'+--+-- * 'vItems'+--+-- * 'vVersion'+volumeannotations+    :: Volumeannotations+volumeannotations =+  Volumeannotations'+    { _vTotalItems = Nothing+    , _vNextPageToken = Nothing+    , _vKind = "books#volumeannotations"+    , _vItems = Nothing+    , _vVersion = Nothing+    }+++-- | The total number of volume annotations found.+vTotalItems :: Lens' Volumeannotations (Maybe Int32)+vTotalItems+  = lens _vTotalItems (\ s a -> s{_vTotalItems = a}) .+      mapping _Coerce++-- | Token to pass in for pagination for the next page. This will not be+-- present if this request does not have more results.+vNextPageToken :: Lens' Volumeannotations (Maybe Text)+vNextPageToken+  = lens _vNextPageToken+      (\ s a -> s{_vNextPageToken = a})++-- | Resource type+vKind :: Lens' Volumeannotations Text+vKind = lens _vKind (\ s a -> s{_vKind = a})++-- | A list of volume annotations.+vItems :: Lens' Volumeannotations [Volumeannotation]+vItems+  = lens _vItems (\ s a -> s{_vItems = a}) . _Default .+      _Coerce++-- | The version string for all of the volume annotations in this layer (not+-- just the ones in this response). Note: the version string doesn\'t apply+-- to the annotation data, just the information in this response (e.g. the+-- location of annotations in the book).+vVersion :: Lens' Volumeannotations (Maybe Text)+vVersion = lens _vVersion (\ s a -> s{_vVersion = a})++instance FromJSON Volumeannotations where+        parseJSON+          = withObject "Volumeannotations"+              (\ o ->+                 Volumeannotations' <$>+                   (o .:? "totalItems") <*> (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "books#volumeannotations")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "version"))++instance ToJSON Volumeannotations where+        toJSON Volumeannotations'{..}+          = object+              (catMaybes+                 [("totalItems" .=) <$> _vTotalItems,+                  ("nextPageToken" .=) <$> _vNextPageToken,+                  Just ("kind" .= _vKind), ("items" .=) <$> _vItems,+                  ("version" .=) <$> _vVersion])++-- | Information regarding the source of this review, when the review is not+-- from a Google Books user.+--+-- /See:/ 'reviewSource' smart constructor.+data ReviewSource =+  ReviewSource'+    { _rsExtraDescription :: !(Maybe Text)+    , _rsURL              :: !(Maybe Text)+    , _rsDescription      :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ReviewSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rsExtraDescription'+--+-- * 'rsURL'+--+-- * 'rsDescription'+reviewSource+    :: ReviewSource+reviewSource =+  ReviewSource'+    {_rsExtraDescription = Nothing, _rsURL = Nothing, _rsDescription = Nothing}+++-- | Extra text about the source of the review.+rsExtraDescription :: Lens' ReviewSource (Maybe Text)+rsExtraDescription+  = lens _rsExtraDescription+      (\ s a -> s{_rsExtraDescription = a})++-- | URL of the source of the review.+rsURL :: Lens' ReviewSource (Maybe Text)+rsURL = lens _rsURL (\ s a -> s{_rsURL = a})++-- | Name of the source.+rsDescription :: Lens' ReviewSource (Maybe Text)+rsDescription+  = lens _rsDescription+      (\ s a -> s{_rsDescription = a})++instance FromJSON ReviewSource where+        parseJSON+          = withObject "ReviewSource"+              (\ o ->+                 ReviewSource' <$>+                   (o .:? "extraDescription") <*> (o .:? "url") <*>+                     (o .:? "description"))++instance ToJSON ReviewSource where+        toJSON ReviewSource'{..}+          = object+              (catMaybes+                 [("extraDescription" .=) <$> _rsExtraDescription,+                  ("url" .=) <$> _rsURL,+                  ("description" .=) <$> _rsDescription])++--+-- /See:/ 'annotationData' smart constructor.+data AnnotationData =+  AnnotationData'+    { _annEncodedData    :: !(Maybe Bytes)+    , _annKind           :: !Text+    , _annData           :: !(Maybe JSONValue)+    , _annSelfLink       :: !(Maybe Text)+    , _annAnnotationType :: !(Maybe Text)+    , _annVolumeId       :: !(Maybe Text)+    , _annId             :: !(Maybe Text)+    , _annUpdated        :: !(Maybe DateTime')+    , _annLayerId        :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'annEncodedData'+--+-- * 'annKind'+--+-- * 'annData'+--+-- * 'annSelfLink'+--+-- * 'annAnnotationType'+--+-- * 'annVolumeId'+--+-- * 'annId'+--+-- * 'annUpdated'+--+-- * 'annLayerId'+annotationData+    :: AnnotationData+annotationData =+  AnnotationData'+    { _annEncodedData = Nothing+    , _annKind = "books#annotationdata"+    , _annData = Nothing+    , _annSelfLink = Nothing+    , _annAnnotationType = Nothing+    , _annVolumeId = Nothing+    , _annId = Nothing+    , _annUpdated = Nothing+    , _annLayerId = Nothing+    }+++-- | Base64 encoded data for this annotation data.+annEncodedData :: Lens' AnnotationData (Maybe ByteString)+annEncodedData+  = lens _annEncodedData+      (\ s a -> s{_annEncodedData = a})+      . mapping _Bytes++-- | Resource Type+annKind :: Lens' AnnotationData Text+annKind = lens _annKind (\ s a -> s{_annKind = a})++annData :: Lens' AnnotationData (Maybe JSONValue)+annData = lens _annData (\ s a -> s{_annData = a})++-- | URL for this resource. *+annSelfLink :: Lens' AnnotationData (Maybe Text)+annSelfLink+  = lens _annSelfLink (\ s a -> s{_annSelfLink = a})++-- | The type of annotation this data is for.+annAnnotationType :: Lens' AnnotationData (Maybe Text)+annAnnotationType+  = lens _annAnnotationType+      (\ s a -> s{_annAnnotationType = a})++-- | The volume id for this data. *+annVolumeId :: Lens' AnnotationData (Maybe Text)+annVolumeId+  = lens _annVolumeId (\ s a -> s{_annVolumeId = a})++-- | Unique id for this annotation data.+annId :: Lens' AnnotationData (Maybe Text)+annId = lens _annId (\ s a -> s{_annId = a})++-- | Timestamp for the last time this data was updated. (RFC 3339 UTC+-- date-time format).+annUpdated :: Lens' AnnotationData (Maybe UTCTime)+annUpdated+  = lens _annUpdated (\ s a -> s{_annUpdated = a}) .+      mapping _DateTime++-- | The Layer id for this data. *+annLayerId :: Lens' AnnotationData (Maybe Text)+annLayerId+  = lens _annLayerId (\ s a -> s{_annLayerId = a})++instance FromJSON AnnotationData where+        parseJSON+          = withObject "AnnotationData"+              (\ o ->+                 AnnotationData' <$>+                   (o .:? "encoded_data") <*>+                     (o .:? "kind" .!= "books#annotationdata")+                     <*> (o .:? "data")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "annotationType")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "id")+                     <*> (o .:? "updated")+                     <*> (o .:? "layerId"))++instance ToJSON AnnotationData where+        toJSON AnnotationData'{..}+          = object+              (catMaybes+                 [("encoded_data" .=) <$> _annEncodedData,+                  Just ("kind" .= _annKind), ("data" .=) <$> _annData,+                  ("selfLink" .=) <$> _annSelfLink,+                  ("annotationType" .=) <$> _annAnnotationType,+                  ("volumeId" .=) <$> _annVolumeId,+                  ("id" .=) <$> _annId, ("updated" .=) <$> _annUpdated,+                  ("layerId" .=) <$> _annLayerId])++--+-- /See:/ 'volumeannotation' smart constructor.+data Volumeannotation =+  Volumeannotation'+    { _volSelectedText       :: !(Maybe Text)+    , _volAnnotationDataLink :: !(Maybe Text)+    , _volPageIds            :: !(Maybe [Text])+    , _volKind               :: !Text+    , _volData               :: !(Maybe Text)+    , _volSelfLink           :: !(Maybe Text)+    , _volAnnotationType     :: !(Maybe Text)+    , _volAnnotationDataId   :: !(Maybe Text)+    , _volContentRanges      :: !(Maybe VolumeannotationContentRanges)+    , _volVolumeId           :: !(Maybe Text)+    , _volId                 :: !(Maybe Text)+    , _volDeleted            :: !(Maybe Bool)+    , _volUpdated            :: !(Maybe DateTime')+    , _volLayerId            :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Volumeannotation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'volSelectedText'+--+-- * 'volAnnotationDataLink'+--+-- * 'volPageIds'+--+-- * 'volKind'+--+-- * 'volData'+--+-- * 'volSelfLink'+--+-- * 'volAnnotationType'+--+-- * 'volAnnotationDataId'+--+-- * 'volContentRanges'+--+-- * 'volVolumeId'+--+-- * 'volId'+--+-- * 'volDeleted'+--+-- * 'volUpdated'+--+-- * 'volLayerId'+volumeannotation+    :: Volumeannotation+volumeannotation =+  Volumeannotation'+    { _volSelectedText = Nothing+    , _volAnnotationDataLink = Nothing+    , _volPageIds = Nothing+    , _volKind = "books#volumeannotation"+    , _volData = Nothing+    , _volSelfLink = Nothing+    , _volAnnotationType = Nothing+    , _volAnnotationDataId = Nothing+    , _volContentRanges = Nothing+    , _volVolumeId = Nothing+    , _volId = Nothing+    , _volDeleted = Nothing+    , _volUpdated = Nothing+    , _volLayerId = Nothing+    }+++-- | Excerpt from the volume.+volSelectedText :: Lens' Volumeannotation (Maybe Text)+volSelectedText+  = lens _volSelectedText+      (\ s a -> s{_volSelectedText = a})++-- | Link to get data for this annotation.+volAnnotationDataLink :: Lens' Volumeannotation (Maybe Text)+volAnnotationDataLink+  = lens _volAnnotationDataLink+      (\ s a -> s{_volAnnotationDataLink = a})++-- | Pages the annotation spans.+volPageIds :: Lens' Volumeannotation [Text]+volPageIds+  = lens _volPageIds (\ s a -> s{_volPageIds = a}) .+      _Default+      . _Coerce++-- | Resource Type+volKind :: Lens' Volumeannotation Text+volKind = lens _volKind (\ s a -> s{_volKind = a})++-- | Data for this annotation.+volData :: Lens' Volumeannotation (Maybe Text)+volData = lens _volData (\ s a -> s{_volData = a})++-- | URL to this resource.+volSelfLink :: Lens' Volumeannotation (Maybe Text)+volSelfLink+  = lens _volSelfLink (\ s a -> s{_volSelfLink = a})++-- | The type of annotation this is.+volAnnotationType :: Lens' Volumeannotation (Maybe Text)+volAnnotationType+  = lens _volAnnotationType+      (\ s a -> s{_volAnnotationType = a})++-- | The annotation data id for this volume annotation.+volAnnotationDataId :: Lens' Volumeannotation (Maybe Text)+volAnnotationDataId+  = lens _volAnnotationDataId+      (\ s a -> s{_volAnnotationDataId = a})++-- | The content ranges to identify the selected text.+volContentRanges :: Lens' Volumeannotation (Maybe VolumeannotationContentRanges)+volContentRanges+  = lens _volContentRanges+      (\ s a -> s{_volContentRanges = a})++-- | The Volume this annotation is for.+volVolumeId :: Lens' Volumeannotation (Maybe Text)+volVolumeId+  = lens _volVolumeId (\ s a -> s{_volVolumeId = a})++-- | Unique id of this volume annotation.+volId :: Lens' Volumeannotation (Maybe Text)+volId = lens _volId (\ s a -> s{_volId = a})++-- | Indicates that this annotation is deleted.+volDeleted :: Lens' Volumeannotation (Maybe Bool)+volDeleted+  = lens _volDeleted (\ s a -> s{_volDeleted = a})++-- | Timestamp for the last time this anntoation was updated. (RFC 3339 UTC+-- date-time format).+volUpdated :: Lens' Volumeannotation (Maybe UTCTime)+volUpdated+  = lens _volUpdated (\ s a -> s{_volUpdated = a}) .+      mapping _DateTime++-- | The Layer this annotation is for.+volLayerId :: Lens' Volumeannotation (Maybe Text)+volLayerId+  = lens _volLayerId (\ s a -> s{_volLayerId = a})++instance FromJSON Volumeannotation where+        parseJSON+          = withObject "Volumeannotation"+              (\ o ->+                 Volumeannotation' <$>+                   (o .:? "selectedText") <*>+                     (o .:? "annotationDataLink")+                     <*> (o .:? "pageIds" .!= mempty)+                     <*> (o .:? "kind" .!= "books#volumeannotation")+                     <*> (o .:? "data")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "annotationType")+                     <*> (o .:? "annotationDataId")+                     <*> (o .:? "contentRanges")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "id")+                     <*> (o .:? "deleted")+                     <*> (o .:? "updated")+                     <*> (o .:? "layerId"))++instance ToJSON Volumeannotation where+        toJSON Volumeannotation'{..}+          = object+              (catMaybes+                 [("selectedText" .=) <$> _volSelectedText,+                  ("annotationDataLink" .=) <$> _volAnnotationDataLink,+                  ("pageIds" .=) <$> _volPageIds,+                  Just ("kind" .= _volKind), ("data" .=) <$> _volData,+                  ("selfLink" .=) <$> _volSelfLink,+                  ("annotationType" .=) <$> _volAnnotationType,+                  ("annotationDataId" .=) <$> _volAnnotationDataId,+                  ("contentRanges" .=) <$> _volContentRanges,+                  ("volumeId" .=) <$> _volVolumeId,+                  ("id" .=) <$> _volId, ("deleted" .=) <$> _volDeleted,+                  ("updated" .=) <$> _volUpdated,+                  ("layerId" .=) <$> _volLayerId])++--+-- /See:/ 'booksCloudLoadingResource' smart constructor.+data BooksCloudLoadingResource =+  BooksCloudLoadingResource'+    { _bclrProcessingState :: !(Maybe Text)+    , _bclrVolumeId        :: !(Maybe Text)+    , _bclrAuthor          :: !(Maybe Text)+    , _bclrTitle           :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BooksCloudLoadingResource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bclrProcessingState'+--+-- * 'bclrVolumeId'+--+-- * 'bclrAuthor'+--+-- * 'bclrTitle'+booksCloudLoadingResource+    :: BooksCloudLoadingResource+booksCloudLoadingResource =+  BooksCloudLoadingResource'+    { _bclrProcessingState = Nothing+    , _bclrVolumeId = Nothing+    , _bclrAuthor = Nothing+    , _bclrTitle = Nothing+    }+++bclrProcessingState :: Lens' BooksCloudLoadingResource (Maybe Text)+bclrProcessingState+  = lens _bclrProcessingState+      (\ s a -> s{_bclrProcessingState = a})++bclrVolumeId :: Lens' BooksCloudLoadingResource (Maybe Text)+bclrVolumeId+  = lens _bclrVolumeId (\ s a -> s{_bclrVolumeId = a})++bclrAuthor :: Lens' BooksCloudLoadingResource (Maybe Text)+bclrAuthor+  = lens _bclrAuthor (\ s a -> s{_bclrAuthor = a})++bclrTitle :: Lens' BooksCloudLoadingResource (Maybe Text)+bclrTitle+  = lens _bclrTitle (\ s a -> s{_bclrTitle = a})++instance FromJSON BooksCloudLoadingResource where+        parseJSON+          = withObject "BooksCloudLoadingResource"+              (\ o ->+                 BooksCloudLoadingResource' <$>+                   (o .:? "processingState") <*> (o .:? "volumeId") <*>+                     (o .:? "author")+                     <*> (o .:? "title"))++instance ToJSON BooksCloudLoadingResource where+        toJSON BooksCloudLoadingResource'{..}+          = object+              (catMaybes+                 [("processingState" .=) <$> _bclrProcessingState,+                  ("volumeId" .=) <$> _bclrVolumeId,+                  ("author" .=) <$> _bclrAuthor,+                  ("title" .=) <$> _bclrTitle])++--+-- /See:/ 'volumeseriesInfoVolumeSeriesItemIssueItem' smart constructor.+data VolumeseriesInfoVolumeSeriesItemIssueItem =+  VolumeseriesInfoVolumeSeriesItemIssueItem'+    { _vivsiiiIssueOrderNumber   :: !(Maybe (Textual Int32))+    , _vivsiiiIssueDisplayNumber :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeseriesInfoVolumeSeriesItemIssueItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vivsiiiIssueOrderNumber'+--+-- * 'vivsiiiIssueDisplayNumber'+volumeseriesInfoVolumeSeriesItemIssueItem+    :: VolumeseriesInfoVolumeSeriesItemIssueItem+volumeseriesInfoVolumeSeriesItemIssueItem =+  VolumeseriesInfoVolumeSeriesItemIssueItem'+    {_vivsiiiIssueOrderNumber = Nothing, _vivsiiiIssueDisplayNumber = Nothing}+++vivsiiiIssueOrderNumber :: Lens' VolumeseriesInfoVolumeSeriesItemIssueItem (Maybe Int32)+vivsiiiIssueOrderNumber+  = lens _vivsiiiIssueOrderNumber+      (\ s a -> s{_vivsiiiIssueOrderNumber = a})+      . mapping _Coerce++vivsiiiIssueDisplayNumber :: Lens' VolumeseriesInfoVolumeSeriesItemIssueItem (Maybe Text)+vivsiiiIssueDisplayNumber+  = lens _vivsiiiIssueDisplayNumber+      (\ s a -> s{_vivsiiiIssueDisplayNumber = a})++instance FromJSON+           VolumeseriesInfoVolumeSeriesItemIssueItem+         where+        parseJSON+          = withObject+              "VolumeseriesInfoVolumeSeriesItemIssueItem"+              (\ o ->+                 VolumeseriesInfoVolumeSeriesItemIssueItem' <$>+                   (o .:? "issueOrderNumber") <*>+                     (o .:? "issueDisplayNumber"))++instance ToJSON+           VolumeseriesInfoVolumeSeriesItemIssueItem+         where+        toJSON VolumeseriesInfoVolumeSeriesItemIssueItem'{..}+          = object+              (catMaybes+                 [("issueOrderNumber" .=) <$>+                    _vivsiiiIssueOrderNumber,+                  ("issueDisplayNumber" .=) <$>+                    _vivsiiiIssueDisplayNumber])++--+-- /See:/ 'annotation' smart constructor.+data Annotation =+  Annotation'+    { _aaSelectedText         :: !(Maybe Text)+    , _aaLayerSummary         :: !(Maybe AnnotationLayerSummary)+    , _aaHighlightStyle       :: !(Maybe Text)+    , _aaClientVersionRanges  :: !(Maybe AnnotationClientVersionRanges)+    , _aaPageIds              :: !(Maybe [Text])+    , _aaKind                 :: !Text+    , _aaData                 :: !(Maybe Text)+    , _aaCreated              :: !(Maybe DateTime')+    , _aaAfterSelectedText    :: !(Maybe Text)+    , _aaSelfLink             :: !(Maybe Text)+    , _aaCurrentVersionRanges :: !(Maybe AnnotationCurrentVersionRanges)+    , _aaVolumeId             :: !(Maybe Text)+    , _aaBeforeSelectedText   :: !(Maybe Text)+    , _aaId                   :: !(Maybe Text)+    , _aaDeleted              :: !(Maybe Bool)+    , _aaUpdated              :: !(Maybe DateTime')+    , _aaLayerId              :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Annotation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aaSelectedText'+--+-- * 'aaLayerSummary'+--+-- * 'aaHighlightStyle'+--+-- * 'aaClientVersionRanges'+--+-- * 'aaPageIds'+--+-- * 'aaKind'+--+-- * 'aaData'+--+-- * 'aaCreated'+--+-- * 'aaAfterSelectedText'+--+-- * 'aaSelfLink'+--+-- * 'aaCurrentVersionRanges'+--+-- * 'aaVolumeId'+--+-- * 'aaBeforeSelectedText'+--+-- * 'aaId'+--+-- * 'aaDeleted'+--+-- * 'aaUpdated'+--+-- * 'aaLayerId'+annotation+    :: Annotation+annotation =+  Annotation'+    { _aaSelectedText = Nothing+    , _aaLayerSummary = Nothing+    , _aaHighlightStyle = Nothing+    , _aaClientVersionRanges = Nothing+    , _aaPageIds = Nothing+    , _aaKind = "books#annotation"+    , _aaData = Nothing+    , _aaCreated = Nothing+    , _aaAfterSelectedText = Nothing+    , _aaSelfLink = Nothing+    , _aaCurrentVersionRanges = Nothing+    , _aaVolumeId = Nothing+    , _aaBeforeSelectedText = Nothing+    , _aaId = Nothing+    , _aaDeleted = Nothing+    , _aaUpdated = Nothing+    , _aaLayerId = Nothing+    }+++-- | Excerpt from the volume.+aaSelectedText :: Lens' Annotation (Maybe Text)+aaSelectedText+  = lens _aaSelectedText+      (\ s a -> s{_aaSelectedText = a})++aaLayerSummary :: Lens' Annotation (Maybe AnnotationLayerSummary)+aaLayerSummary+  = lens _aaLayerSummary+      (\ s a -> s{_aaLayerSummary = a})++-- | The highlight style for this annotation.+aaHighlightStyle :: Lens' Annotation (Maybe Text)+aaHighlightStyle+  = lens _aaHighlightStyle+      (\ s a -> s{_aaHighlightStyle = a})++-- | Selection ranges sent from the client.+aaClientVersionRanges :: Lens' Annotation (Maybe AnnotationClientVersionRanges)+aaClientVersionRanges+  = lens _aaClientVersionRanges+      (\ s a -> s{_aaClientVersionRanges = a})++-- | Pages that this annotation spans.+aaPageIds :: Lens' Annotation [Text]+aaPageIds+  = lens _aaPageIds (\ s a -> s{_aaPageIds = a}) .+      _Default+      . _Coerce++-- | Resource type.+aaKind :: Lens' Annotation Text+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})++-- | User-created data for this annotation.+aaData :: Lens' Annotation (Maybe Text)+aaData = lens _aaData (\ s a -> s{_aaData = a})++-- | Timestamp for the created time of this annotation.+aaCreated :: Lens' Annotation (Maybe UTCTime)+aaCreated+  = lens _aaCreated (\ s a -> s{_aaCreated = a}) .+      mapping _DateTime++-- | Anchor text after excerpt. For requests, if the user bookmarked a screen+-- that has no flowing text on it, then this field should be empty.+aaAfterSelectedText :: Lens' Annotation (Maybe Text)+aaAfterSelectedText+  = lens _aaAfterSelectedText+      (\ s a -> s{_aaAfterSelectedText = a})++-- | URL to this resource.+aaSelfLink :: Lens' Annotation (Maybe Text)+aaSelfLink+  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})++-- | Selection ranges for the most recent content version.+aaCurrentVersionRanges :: Lens' Annotation (Maybe AnnotationCurrentVersionRanges)+aaCurrentVersionRanges+  = lens _aaCurrentVersionRanges+      (\ s a -> s{_aaCurrentVersionRanges = a})++-- | The volume that this annotation belongs to.+aaVolumeId :: Lens' Annotation (Maybe Text)+aaVolumeId+  = lens _aaVolumeId (\ s a -> s{_aaVolumeId = a})++-- | Anchor text before excerpt. For requests, if the user bookmarked a+-- screen that has no flowing text on it, then this field should be empty.+aaBeforeSelectedText :: Lens' Annotation (Maybe Text)+aaBeforeSelectedText+  = lens _aaBeforeSelectedText+      (\ s a -> s{_aaBeforeSelectedText = a})++-- | Id of this annotation, in the form of a GUID.+aaId :: Lens' Annotation (Maybe Text)+aaId = lens _aaId (\ s a -> s{_aaId = a})++-- | Indicates that this annotation is deleted.+aaDeleted :: Lens' Annotation (Maybe Bool)+aaDeleted+  = lens _aaDeleted (\ s a -> s{_aaDeleted = a})++-- | Timestamp for the last time this annotation was modified.+aaUpdated :: Lens' Annotation (Maybe UTCTime)+aaUpdated+  = lens _aaUpdated (\ s a -> s{_aaUpdated = a}) .+      mapping _DateTime++-- | The layer this annotation is for.+aaLayerId :: Lens' Annotation (Maybe Text)+aaLayerId+  = lens _aaLayerId (\ s a -> s{_aaLayerId = a})++instance FromJSON Annotation where+        parseJSON+          = withObject "Annotation"+              (\ o ->+                 Annotation' <$>+                   (o .:? "selectedText") <*> (o .:? "layerSummary") <*>+                     (o .:? "highlightStyle")+                     <*> (o .:? "clientVersionRanges")+                     <*> (o .:? "pageIds" .!= mempty)+                     <*> (o .:? "kind" .!= "books#annotation")+                     <*> (o .:? "data")+                     <*> (o .:? "created")+                     <*> (o .:? "afterSelectedText")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "currentVersionRanges")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "beforeSelectedText")+                     <*> (o .:? "id")+                     <*> (o .:? "deleted")+                     <*> (o .:? "updated")+                     <*> (o .:? "layerId"))++instance ToJSON Annotation where+        toJSON Annotation'{..}+          = object+              (catMaybes+                 [("selectedText" .=) <$> _aaSelectedText,+                  ("layerSummary" .=) <$> _aaLayerSummary,+                  ("highlightStyle" .=) <$> _aaHighlightStyle,+                  ("clientVersionRanges" .=) <$>+                    _aaClientVersionRanges,+                  ("pageIds" .=) <$> _aaPageIds,+                  Just ("kind" .= _aaKind), ("data" .=) <$> _aaData,+                  ("created" .=) <$> _aaCreated,+                  ("afterSelectedText" .=) <$> _aaAfterSelectedText,+                  ("selfLink" .=) <$> _aaSelfLink,+                  ("currentVersionRanges" .=) <$>+                    _aaCurrentVersionRanges,+                  ("volumeId" .=) <$> _aaVolumeId,+                  ("beforeSelectedText" .=) <$> _aaBeforeSelectedText,+                  ("id" .=) <$> _aaId, ("deleted" .=) <$> _aaDeleted,+                  ("updated" .=) <$> _aaUpdated,+                  ("layerId" .=) <$> _aaLayerId])++-- | Author of this review.+--+-- /See:/ 'reviewAuthor' smart constructor.+newtype ReviewAuthor =+  ReviewAuthor'+    { _raDisplayName :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ReviewAuthor' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'raDisplayName'+reviewAuthor+    :: ReviewAuthor+reviewAuthor = ReviewAuthor' {_raDisplayName = Nothing}+++-- | Name of this person.+raDisplayName :: Lens' ReviewAuthor (Maybe Text)+raDisplayName+  = lens _raDisplayName+      (\ s a -> s{_raDisplayName = a})++instance FromJSON ReviewAuthor where+        parseJSON+          = withObject "ReviewAuthor"+              (\ o -> ReviewAuthor' <$> (o .:? "displayName"))++instance ToJSON ReviewAuthor where+        toJSON ReviewAuthor'{..}+          = object+              (catMaybes [("displayName" .=) <$> _raDisplayName])++-- | The viewport for showing this location. This is a latitude, longitude+-- rectangle.+--+-- /See:/ 'geolayerDataGeoViewport' smart constructor.+data GeolayerDataGeoViewport =+  GeolayerDataGeoViewport'+    { _gdgvHi :: !(Maybe GeolayerDataGeoViewportHi)+    , _gdgvLo :: !(Maybe GeolayerDataGeoViewportLo)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataGeoViewport' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdgvHi'+--+-- * 'gdgvLo'+geolayerDataGeoViewport+    :: GeolayerDataGeoViewport+geolayerDataGeoViewport =+  GeolayerDataGeoViewport' {_gdgvHi = Nothing, _gdgvLo = Nothing}+++gdgvHi :: Lens' GeolayerDataGeoViewport (Maybe GeolayerDataGeoViewportHi)+gdgvHi = lens _gdgvHi (\ s a -> s{_gdgvHi = a})++gdgvLo :: Lens' GeolayerDataGeoViewport (Maybe GeolayerDataGeoViewportLo)+gdgvLo = lens _gdgvLo (\ s a -> s{_gdgvLo = a})++instance FromJSON GeolayerDataGeoViewport where+        parseJSON+          = withObject "GeolayerDataGeoViewport"+              (\ o ->+                 GeolayerDataGeoViewport' <$>+                   (o .:? "hi") <*> (o .:? "lo"))++instance ToJSON GeolayerDataGeoViewport where+        toJSON GeolayerDataGeoViewport'{..}+          = object+              (catMaybes+                 [("hi" .=) <$> _gdgvHi, ("lo" .=) <$> _gdgvLo])++-- | User specific information related to this volume. (e.g. page this user+-- last read or whether they purchased this book)+--+-- /See:/ 'volumeUserInfo' smart constructor.+data VolumeUserInfo =+  VolumeUserInfo'+    { _vuiIsFamilySharingAllowed       :: !(Maybe Bool)+    , _vuiIsFamilySharedToUser         :: !(Maybe Bool)+    , _vuiCopy                         :: !(Maybe VolumeUserInfoCopy)+    , _vuiUserUploadedVolumeInfo       :: !(Maybe VolumeUserInfoUserUploadedVolumeInfo)+    , _vuiIsPurchased                  :: !(Maybe Bool)+    , _vuiEntitlementType              :: !(Maybe (Textual Int32))+    , _vuiAcquisitionType              :: !(Maybe (Textual Int32))+    , _vuiAcquiredTime                 :: !(Maybe DateTime')+    , _vuiRentalState                  :: !(Maybe Text)+    , _vuiIsPreOrdered                 :: !(Maybe Bool)+    , _vuiReview                       :: !(Maybe Review)+    , _vuiIsFamilySharedFromUser       :: !(Maybe Bool)+    , _vuiRentalPeriod                 :: !(Maybe VolumeUserInfoRentalPeriod)+    , _vuiUpdated                      :: !(Maybe DateTime')+    , _vuiIsUploaded                   :: !(Maybe Bool)+    , _vuiIsInMyBooks                  :: !(Maybe Bool)+    , _vuiReadingPosition              :: !(Maybe ReadingPosition)+    , _vuiFamilySharing                :: !(Maybe VolumeUserInfoFamilySharing)+    , _vuiIsFamilySharingDisabledByFop :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeUserInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vuiIsFamilySharingAllowed'+--+-- * 'vuiIsFamilySharedToUser'+--+-- * 'vuiCopy'+--+-- * 'vuiUserUploadedVolumeInfo'+--+-- * 'vuiIsPurchased'+--+-- * 'vuiEntitlementType'+--+-- * 'vuiAcquisitionType'+--+-- * 'vuiAcquiredTime'+--+-- * 'vuiRentalState'+--+-- * 'vuiIsPreOrdered'+--+-- * 'vuiReview'+--+-- * 'vuiIsFamilySharedFromUser'+--+-- * 'vuiRentalPeriod'+--+-- * 'vuiUpdated'+--+-- * 'vuiIsUploaded'+--+-- * 'vuiIsInMyBooks'+--+-- * 'vuiReadingPosition'+--+-- * 'vuiFamilySharing'+--+-- * 'vuiIsFamilySharingDisabledByFop'+volumeUserInfo+    :: VolumeUserInfo+volumeUserInfo =+  VolumeUserInfo'+    { _vuiIsFamilySharingAllowed = Nothing+    , _vuiIsFamilySharedToUser = Nothing+    , _vuiCopy = Nothing+    , _vuiUserUploadedVolumeInfo = Nothing+    , _vuiIsPurchased = Nothing+    , _vuiEntitlementType = Nothing+    , _vuiAcquisitionType = Nothing+    , _vuiAcquiredTime = Nothing+    , _vuiRentalState = Nothing+    , _vuiIsPreOrdered = Nothing+    , _vuiReview = Nothing+    , _vuiIsFamilySharedFromUser = Nothing+    , _vuiRentalPeriod = Nothing+    , _vuiUpdated = Nothing+    , _vuiIsUploaded = Nothing+    , _vuiIsInMyBooks = Nothing+    , _vuiReadingPosition = Nothing+    , _vuiFamilySharing = Nothing+    , _vuiIsFamilySharingDisabledByFop = Nothing+    }+++-- | Deprecated: Replaced by familySharing.+vuiIsFamilySharingAllowed :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsFamilySharingAllowed+  = lens _vuiIsFamilySharingAllowed+      (\ s a -> s{_vuiIsFamilySharingAllowed = a})++-- | Whether or not the user received this volume through family sharing.+vuiIsFamilySharedToUser :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsFamilySharedToUser+  = lens _vuiIsFamilySharedToUser+      (\ s a -> s{_vuiIsFamilySharedToUser = a})++-- | Copy\/Paste accounting information.+vuiCopy :: Lens' VolumeUserInfo (Maybe VolumeUserInfoCopy)+vuiCopy = lens _vuiCopy (\ s a -> s{_vuiCopy = a})++vuiUserUploadedVolumeInfo :: Lens' VolumeUserInfo (Maybe VolumeUserInfoUserUploadedVolumeInfo)+vuiUserUploadedVolumeInfo+  = lens _vuiUserUploadedVolumeInfo+      (\ s a -> s{_vuiUserUploadedVolumeInfo = a})++-- | Whether or not this volume was purchased by the authenticated user+-- making the request. (In LITE projection.)+vuiIsPurchased :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsPurchased+  = lens _vuiIsPurchased+      (\ s a -> s{_vuiIsPurchased = a})++-- | Whether this volume is purchased, sample, pd download etc.+vuiEntitlementType :: Lens' VolumeUserInfo (Maybe Int32)+vuiEntitlementType+  = lens _vuiEntitlementType+      (\ s a -> s{_vuiEntitlementType = a})+      . mapping _Coerce++-- | How this volume was acquired.+vuiAcquisitionType :: Lens' VolumeUserInfo (Maybe Int32)+vuiAcquisitionType+  = lens _vuiAcquisitionType+      (\ s a -> s{_vuiAcquisitionType = a})+      . mapping _Coerce++-- | Timestamp when this volume was acquired by the user. (RFC 3339 UTC+-- date-time format) Acquiring includes purchase, user upload, receiving+-- family sharing, etc.+vuiAcquiredTime :: Lens' VolumeUserInfo (Maybe UTCTime)+vuiAcquiredTime+  = lens _vuiAcquiredTime+      (\ s a -> s{_vuiAcquiredTime = a})+      . mapping _DateTime++-- | Whether this book is an active or an expired rental.+vuiRentalState :: Lens' VolumeUserInfo (Maybe Text)+vuiRentalState+  = lens _vuiRentalState+      (\ s a -> s{_vuiRentalState = a})++-- | Whether or not this volume was pre-ordered by the authenticated user+-- making the request. (In LITE projection.)+vuiIsPreOrdered :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsPreOrdered+  = lens _vuiIsPreOrdered+      (\ s a -> s{_vuiIsPreOrdered = a})++-- | This user\'s review of this volume, if one exists.+vuiReview :: Lens' VolumeUserInfo (Maybe Review)+vuiReview+  = lens _vuiReview (\ s a -> s{_vuiReview = a})++-- | Whether or not the user shared this volume with the family.+vuiIsFamilySharedFromUser :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsFamilySharedFromUser+  = lens _vuiIsFamilySharedFromUser+      (\ s a -> s{_vuiIsFamilySharedFromUser = a})++-- | Period during this book is\/was a valid rental.+vuiRentalPeriod :: Lens' VolumeUserInfo (Maybe VolumeUserInfoRentalPeriod)+vuiRentalPeriod+  = lens _vuiRentalPeriod+      (\ s a -> s{_vuiRentalPeriod = a})++-- | Timestamp when this volume was last modified by a user action, such as a+-- reading position update, volume purchase or writing a review. (RFC 3339+-- UTC date-time format).+vuiUpdated :: Lens' VolumeUserInfo (Maybe UTCTime)+vuiUpdated+  = lens _vuiUpdated (\ s a -> s{_vuiUpdated = a}) .+      mapping _DateTime++-- | Whether or not this volume was user uploaded.+vuiIsUploaded :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsUploaded+  = lens _vuiIsUploaded+      (\ s a -> s{_vuiIsUploaded = a})++-- | Whether or not this volume is currently in \"my books.\"+vuiIsInMyBooks :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsInMyBooks+  = lens _vuiIsInMyBooks+      (\ s a -> s{_vuiIsInMyBooks = a})++-- | The user\'s current reading position in the volume, if one is available.+-- (In LITE projection.)+vuiReadingPosition :: Lens' VolumeUserInfo (Maybe ReadingPosition)+vuiReadingPosition+  = lens _vuiReadingPosition+      (\ s a -> s{_vuiReadingPosition = a})++-- | Information on the ability to share with the family.+vuiFamilySharing :: Lens' VolumeUserInfo (Maybe VolumeUserInfoFamilySharing)+vuiFamilySharing+  = lens _vuiFamilySharing+      (\ s a -> s{_vuiFamilySharing = a})++-- | Deprecated: Replaced by familySharing.+vuiIsFamilySharingDisabledByFop :: Lens' VolumeUserInfo (Maybe Bool)+vuiIsFamilySharingDisabledByFop+  = lens _vuiIsFamilySharingDisabledByFop+      (\ s a -> s{_vuiIsFamilySharingDisabledByFop = a})++instance FromJSON VolumeUserInfo where+        parseJSON+          = withObject "VolumeUserInfo"+              (\ o ->+                 VolumeUserInfo' <$>+                   (o .:? "isFamilySharingAllowed") <*>+                     (o .:? "isFamilySharedToUser")+                     <*> (o .:? "copy")+                     <*> (o .:? "userUploadedVolumeInfo")+                     <*> (o .:? "isPurchased")+                     <*> (o .:? "entitlementType")+                     <*> (o .:? "acquisitionType")+                     <*> (o .:? "acquiredTime")+                     <*> (o .:? "rentalState")+                     <*> (o .:? "isPreordered")+                     <*> (o .:? "review")+                     <*> (o .:? "isFamilySharedFromUser")+                     <*> (o .:? "rentalPeriod")+                     <*> (o .:? "updated")+                     <*> (o .:? "isUploaded")+                     <*> (o .:? "isInMyBooks")+                     <*> (o .:? "readingPosition")+                     <*> (o .:? "familySharing")+                     <*> (o .:? "isFamilySharingDisabledByFop"))++instance ToJSON VolumeUserInfo where+        toJSON VolumeUserInfo'{..}+          = object+              (catMaybes+                 [("isFamilySharingAllowed" .=) <$>+                    _vuiIsFamilySharingAllowed,+                  ("isFamilySharedToUser" .=) <$>+                    _vuiIsFamilySharedToUser,+                  ("copy" .=) <$> _vuiCopy,+                  ("userUploadedVolumeInfo" .=) <$>+                    _vuiUserUploadedVolumeInfo,+                  ("isPurchased" .=) <$> _vuiIsPurchased,+                  ("entitlementType" .=) <$> _vuiEntitlementType,+                  ("acquisitionType" .=) <$> _vuiAcquisitionType,+                  ("acquiredTime" .=) <$> _vuiAcquiredTime,+                  ("rentalState" .=) <$> _vuiRentalState,+                  ("isPreordered" .=) <$> _vuiIsPreOrdered,+                  ("review" .=) <$> _vuiReview,+                  ("isFamilySharedFromUser" .=) <$>+                    _vuiIsFamilySharedFromUser,+                  ("rentalPeriod" .=) <$> _vuiRentalPeriod,+                  ("updated" .=) <$> _vuiUpdated,+                  ("isUploaded" .=) <$> _vuiIsUploaded,+                  ("isInMyBooks" .=) <$> _vuiIsInMyBooks,+                  ("readingPosition" .=) <$> _vuiReadingPosition,+                  ("familySharing" .=) <$> _vuiFamilySharing,+                  ("isFamilySharingDisabledByFop" .=) <$>+                    _vuiIsFamilySharingDisabledByFop])++--+-- /See:/ 'layersummary' smart constructor.+data Layersummary =+  Layersummary'+    { _lAnnotationsDataLink      :: !(Maybe Text)+    , _lAnnotationsLink          :: !(Maybe Text)+    , _lKind                     :: !Text+    , _lDataCount                :: !(Maybe (Textual Int32))+    , _lContentVersion           :: !(Maybe Text)+    , _lVolumeAnnotationsVersion :: !(Maybe Text)+    , _lAnnotationCount          :: !(Maybe (Textual Int32))+    , _lAnnotationTypes          :: !(Maybe [Text])+    , _lSelfLink                 :: !(Maybe Text)+    , _lVolumeId                 :: !(Maybe Text)+    , _lId                       :: !(Maybe Text)+    , _lUpdated                  :: !(Maybe DateTime')+    , _lLayerId                  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Layersummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lAnnotationsDataLink'+--+-- * 'lAnnotationsLink'+--+-- * 'lKind'+--+-- * 'lDataCount'+--+-- * 'lContentVersion'+--+-- * 'lVolumeAnnotationsVersion'+--+-- * 'lAnnotationCount'+--+-- * 'lAnnotationTypes'+--+-- * 'lSelfLink'+--+-- * 'lVolumeId'+--+-- * 'lId'+--+-- * 'lUpdated'+--+-- * 'lLayerId'+layersummary+    :: Layersummary+layersummary =+  Layersummary'+    { _lAnnotationsDataLink = Nothing+    , _lAnnotationsLink = Nothing+    , _lKind = "books#layersummary"+    , _lDataCount = Nothing+    , _lContentVersion = Nothing+    , _lVolumeAnnotationsVersion = Nothing+    , _lAnnotationCount = Nothing+    , _lAnnotationTypes = Nothing+    , _lSelfLink = Nothing+    , _lVolumeId = Nothing+    , _lId = Nothing+    , _lUpdated = Nothing+    , _lLayerId = Nothing+    }+++-- | Link to get data for this annotation.+lAnnotationsDataLink :: Lens' Layersummary (Maybe Text)+lAnnotationsDataLink+  = lens _lAnnotationsDataLink+      (\ s a -> s{_lAnnotationsDataLink = a})++-- | The link to get the annotations for this layer.+lAnnotationsLink :: Lens' Layersummary (Maybe Text)+lAnnotationsLink+  = lens _lAnnotationsLink+      (\ s a -> s{_lAnnotationsLink = a})++-- | Resource Type+lKind :: Lens' Layersummary Text+lKind = lens _lKind (\ s a -> s{_lKind = a})++-- | The number of data items for this layer.+lDataCount :: Lens' Layersummary (Maybe Int32)+lDataCount+  = lens _lDataCount (\ s a -> s{_lDataCount = a}) .+      mapping _Coerce++-- | The content version this resource is for.+lContentVersion :: Lens' Layersummary (Maybe Text)+lContentVersion+  = lens _lContentVersion+      (\ s a -> s{_lContentVersion = a})++-- | The current version of this layer\'s volume annotations. Note that this+-- version applies only to the data in the books.layers.volumeAnnotations.*+-- responses. The actual annotation data is versioned separately.+lVolumeAnnotationsVersion :: Lens' Layersummary (Maybe Text)+lVolumeAnnotationsVersion+  = lens _lVolumeAnnotationsVersion+      (\ s a -> s{_lVolumeAnnotationsVersion = a})++-- | The number of annotations for this layer.+lAnnotationCount :: Lens' Layersummary (Maybe Int32)+lAnnotationCount+  = lens _lAnnotationCount+      (\ s a -> s{_lAnnotationCount = a})+      . mapping _Coerce++-- | The list of annotation types contained for this layer.+lAnnotationTypes :: Lens' Layersummary [Text]+lAnnotationTypes+  = lens _lAnnotationTypes+      (\ s a -> s{_lAnnotationTypes = a})+      . _Default+      . _Coerce++-- | URL to this resource.+lSelfLink :: Lens' Layersummary (Maybe Text)+lSelfLink+  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})++-- | The volume id this resource is for.+lVolumeId :: Lens' Layersummary (Maybe Text)+lVolumeId+  = lens _lVolumeId (\ s a -> s{_lVolumeId = a})++-- | Unique id of this layer summary.+lId :: Lens' Layersummary (Maybe Text)+lId = lens _lId (\ s a -> s{_lId = a})++-- | Timestamp for the last time an item in this layer was updated. (RFC 3339+-- UTC date-time format).+lUpdated :: Lens' Layersummary (Maybe UTCTime)+lUpdated+  = lens _lUpdated (\ s a -> s{_lUpdated = a}) .+      mapping _DateTime++-- | The layer id for this summary.+lLayerId :: Lens' Layersummary (Maybe Text)+lLayerId = lens _lLayerId (\ s a -> s{_lLayerId = a})++instance FromJSON Layersummary where+        parseJSON+          = withObject "Layersummary"+              (\ o ->+                 Layersummary' <$>+                   (o .:? "annotationsDataLink") <*>+                     (o .:? "annotationsLink")+                     <*> (o .:? "kind" .!= "books#layersummary")+                     <*> (o .:? "dataCount")+                     <*> (o .:? "contentVersion")+                     <*> (o .:? "volumeAnnotationsVersion")+                     <*> (o .:? "annotationCount")+                     <*> (o .:? "annotationTypes" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "id")+                     <*> (o .:? "updated")+                     <*> (o .:? "layerId"))++instance ToJSON Layersummary where+        toJSON Layersummary'{..}+          = object+              (catMaybes+                 [("annotationsDataLink" .=) <$>+                    _lAnnotationsDataLink,+                  ("annotationsLink" .=) <$> _lAnnotationsLink,+                  Just ("kind" .= _lKind),+                  ("dataCount" .=) <$> _lDataCount,+                  ("contentVersion" .=) <$> _lContentVersion,+                  ("volumeAnnotationsVersion" .=) <$>+                    _lVolumeAnnotationsVersion,+                  ("annotationCount" .=) <$> _lAnnotationCount,+                  ("annotationTypes" .=) <$> _lAnnotationTypes,+                  ("selfLink" .=) <$> _lSelfLink,+                  ("volumeId" .=) <$> _lVolumeId, ("id" .=) <$> _lId,+                  ("updated" .=) <$> _lUpdated,+                  ("layerId" .=) <$> _lLayerId])++-- | The content ranges to identify the selected text.+--+-- /See:/ 'volumeannotationContentRanges' smart constructor.+data VolumeannotationContentRanges =+  VolumeannotationContentRanges'+    { _vcrGbImageRange   :: !(Maybe BooksAnnotationsRange)+    , _vcrContentVersion :: !(Maybe Text)+    , _vcrGbTextRange    :: !(Maybe BooksAnnotationsRange)+    , _vcrCfiRange       :: !(Maybe BooksAnnotationsRange)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeannotationContentRanges' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vcrGbImageRange'+--+-- * 'vcrContentVersion'+--+-- * 'vcrGbTextRange'+--+-- * 'vcrCfiRange'+volumeannotationContentRanges+    :: VolumeannotationContentRanges+volumeannotationContentRanges =+  VolumeannotationContentRanges'+    { _vcrGbImageRange = Nothing+    , _vcrContentVersion = Nothing+    , _vcrGbTextRange = Nothing+    , _vcrCfiRange = Nothing+    }+++-- | Range in GB image format for this annotation for version above.+vcrGbImageRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)+vcrGbImageRange+  = lens _vcrGbImageRange+      (\ s a -> s{_vcrGbImageRange = a})++-- | Content version applicable to ranges below.+vcrContentVersion :: Lens' VolumeannotationContentRanges (Maybe Text)+vcrContentVersion+  = lens _vcrContentVersion+      (\ s a -> s{_vcrContentVersion = a})++-- | Range in GB text format for this annotation for version above.+vcrGbTextRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)+vcrGbTextRange+  = lens _vcrGbTextRange+      (\ s a -> s{_vcrGbTextRange = a})++-- | Range in CFI format for this annotation for version above.+vcrCfiRange :: Lens' VolumeannotationContentRanges (Maybe BooksAnnotationsRange)+vcrCfiRange+  = lens _vcrCfiRange (\ s a -> s{_vcrCfiRange = a})++instance FromJSON VolumeannotationContentRanges where+        parseJSON+          = withObject "VolumeannotationContentRanges"+              (\ o ->+                 VolumeannotationContentRanges' <$>+                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")+                     <*> (o .:? "gbTextRange")+                     <*> (o .:? "cfiRange"))++instance ToJSON VolumeannotationContentRanges where+        toJSON VolumeannotationContentRanges'{..}+          = object+              (catMaybes+                 [("gbImageRange" .=) <$> _vcrGbImageRange,+                  ("contentVersion" .=) <$> _vcrContentVersion,+                  ("gbTextRange" .=) <$> _vcrGbTextRange,+                  ("cfiRange" .=) <$> _vcrCfiRange])++-- | Any information about a volume related to reading or obtaining that+-- volume text. This information can depend on country (books may be public+-- domain in one country but not in another, e.g.).+--+-- /See:/ 'volumeAccessInfo' smart constructor.+data VolumeAccessInfo =+  VolumeAccessInfo'+    { _vaiWebReaderLink                    :: !(Maybe Text)+    , _vaiCountry                          :: !(Maybe Text)+    , _vaiDriveImportedContentLink         :: !(Maybe Text)+    , _vaiExplicitOfflineLicenseManagement :: !(Maybe Bool)+    , _vaiViewability                      :: !(Maybe Text)+    , _vaiQuoteSharingAllowed              :: !(Maybe Bool)+    , _vaiEpub                             :: !(Maybe VolumeAccessInfoEpub)+    , _vaiPdf                              :: !(Maybe VolumeAccessInfoPdf)+    , _vaiTextToSpeechPermission           :: !(Maybe Text)+    , _vaiEmbeddable                       :: !(Maybe Bool)+    , _vaiAccessViewStatus                 :: !(Maybe Text)+    , _vaiDownloadAccess                   :: !(Maybe DownloadAccessRestriction)+    , _vaiViewOrderURL                     :: !(Maybe Text)+    , _vaiPublicDomain                     :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeAccessInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vaiWebReaderLink'+--+-- * 'vaiCountry'+--+-- * 'vaiDriveImportedContentLink'+--+-- * 'vaiExplicitOfflineLicenseManagement'+--+-- * 'vaiViewability'+--+-- * 'vaiQuoteSharingAllowed'+--+-- * 'vaiEpub'+--+-- * 'vaiPdf'+--+-- * 'vaiTextToSpeechPermission'+--+-- * 'vaiEmbeddable'+--+-- * 'vaiAccessViewStatus'+--+-- * 'vaiDownloadAccess'+--+-- * 'vaiViewOrderURL'+--+-- * 'vaiPublicDomain'+volumeAccessInfo+    :: VolumeAccessInfo+volumeAccessInfo =+  VolumeAccessInfo'+    { _vaiWebReaderLink = Nothing+    , _vaiCountry = Nothing+    , _vaiDriveImportedContentLink = Nothing+    , _vaiExplicitOfflineLicenseManagement = Nothing+    , _vaiViewability = Nothing+    , _vaiQuoteSharingAllowed = Nothing+    , _vaiEpub = Nothing+    , _vaiPdf = Nothing+    , _vaiTextToSpeechPermission = Nothing+    , _vaiEmbeddable = Nothing+    , _vaiAccessViewStatus = Nothing+    , _vaiDownloadAccess = Nothing+    , _vaiViewOrderURL = Nothing+    , _vaiPublicDomain = Nothing+    }+++-- | URL to read this volume on the Google Books site. Link will not allow+-- users to read non-viewable volumes.+vaiWebReaderLink :: Lens' VolumeAccessInfo (Maybe Text)+vaiWebReaderLink+  = lens _vaiWebReaderLink+      (\ s a -> s{_vaiWebReaderLink = a})++-- | The two-letter ISO_3166-1 country code for which this access information+-- is valid. (In LITE projection.)+vaiCountry :: Lens' VolumeAccessInfo (Maybe Text)+vaiCountry+  = lens _vaiCountry (\ s a -> s{_vaiCountry = a})++-- | URL to the Google Drive viewer if this volume is uploaded by the user by+-- selecting the file from Google Drive.+vaiDriveImportedContentLink :: Lens' VolumeAccessInfo (Maybe Text)+vaiDriveImportedContentLink+  = lens _vaiDriveImportedContentLink+      (\ s a -> s{_vaiDriveImportedContentLink = a})++-- | Whether this volume requires that the client explicitly request offline+-- download license rather than have it done automatically when loading the+-- content, if the client supports it.+vaiExplicitOfflineLicenseManagement :: Lens' VolumeAccessInfo (Maybe Bool)+vaiExplicitOfflineLicenseManagement+  = lens _vaiExplicitOfflineLicenseManagement+      (\ s a ->+         s{_vaiExplicitOfflineLicenseManagement = a})++-- | The read access of a volume. Possible values are PARTIAL, ALL_PAGES,+-- NO_PAGES or UNKNOWN. This value depends on the country listed above. A+-- value of PARTIAL means that the publisher has allowed some portion of+-- the volume to be viewed publicly, without purchase. This can apply to+-- eBooks as well as non-eBooks. Public domain books will always have a+-- value of ALL_PAGES.+vaiViewability :: Lens' VolumeAccessInfo (Maybe Text)+vaiViewability+  = lens _vaiViewability+      (\ s a -> s{_vaiViewability = a})++-- | Whether quote sharing is allowed for this volume.+vaiQuoteSharingAllowed :: Lens' VolumeAccessInfo (Maybe Bool)+vaiQuoteSharingAllowed+  = lens _vaiQuoteSharingAllowed+      (\ s a -> s{_vaiQuoteSharingAllowed = a})++-- | Information about epub content. (In LITE projection.)+vaiEpub :: Lens' VolumeAccessInfo (Maybe VolumeAccessInfoEpub)+vaiEpub = lens _vaiEpub (\ s a -> s{_vaiEpub = a})++-- | Information about pdf content. (In LITE projection.)+vaiPdf :: Lens' VolumeAccessInfo (Maybe VolumeAccessInfoPdf)+vaiPdf = lens _vaiPdf (\ s a -> s{_vaiPdf = a})++-- | Whether text-to-speech is permitted for this volume. Values can be+-- ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.+vaiTextToSpeechPermission :: Lens' VolumeAccessInfo (Maybe Text)+vaiTextToSpeechPermission+  = lens _vaiTextToSpeechPermission+      (\ s a -> s{_vaiTextToSpeechPermission = a})++-- | Whether this volume can be embedded in a viewport using the Embedded+-- Viewer API.+vaiEmbeddable :: Lens' VolumeAccessInfo (Maybe Bool)+vaiEmbeddable+  = lens _vaiEmbeddable+      (\ s a -> s{_vaiEmbeddable = a})++-- | Combines the access and viewability of this volume into a single status+-- field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN,+-- SAMPLE or NONE. (In LITE projection.)+vaiAccessViewStatus :: Lens' VolumeAccessInfo (Maybe Text)+vaiAccessViewStatus+  = lens _vaiAccessViewStatus+      (\ s a -> s{_vaiAccessViewStatus = a})++-- | Information about a volume\'s download license access restrictions.+vaiDownloadAccess :: Lens' VolumeAccessInfo (Maybe DownloadAccessRestriction)+vaiDownloadAccess+  = lens _vaiDownloadAccess+      (\ s a -> s{_vaiDownloadAccess = a})++-- | For ordered but not yet processed orders, we give a URL that can be used+-- to go to the appropriate Google Wallet page.+vaiViewOrderURL :: Lens' VolumeAccessInfo (Maybe Text)+vaiViewOrderURL+  = lens _vaiViewOrderURL+      (\ s a -> s{_vaiViewOrderURL = a})++-- | Whether or not this book is public domain in the country listed above.+vaiPublicDomain :: Lens' VolumeAccessInfo (Maybe Bool)+vaiPublicDomain+  = lens _vaiPublicDomain+      (\ s a -> s{_vaiPublicDomain = a})++instance FromJSON VolumeAccessInfo where+        parseJSON+          = withObject "VolumeAccessInfo"+              (\ o ->+                 VolumeAccessInfo' <$>+                   (o .:? "webReaderLink") <*> (o .:? "country") <*>+                     (o .:? "driveImportedContentLink")+                     <*> (o .:? "explicitOfflineLicenseManagement")+                     <*> (o .:? "viewability")+                     <*> (o .:? "quoteSharingAllowed")+                     <*> (o .:? "epub")+                     <*> (o .:? "pdf")+                     <*> (o .:? "textToSpeechPermission")+                     <*> (o .:? "embeddable")+                     <*> (o .:? "accessViewStatus")+                     <*> (o .:? "downloadAccess")+                     <*> (o .:? "viewOrderUrl")+                     <*> (o .:? "publicDomain"))++instance ToJSON VolumeAccessInfo where+        toJSON VolumeAccessInfo'{..}+          = object+              (catMaybes+                 [("webReaderLink" .=) <$> _vaiWebReaderLink,+                  ("country" .=) <$> _vaiCountry,+                  ("driveImportedContentLink" .=) <$>+                    _vaiDriveImportedContentLink,+                  ("explicitOfflineLicenseManagement" .=) <$>+                    _vaiExplicitOfflineLicenseManagement,+                  ("viewability" .=) <$> _vaiViewability,+                  ("quoteSharingAllowed" .=) <$>+                    _vaiQuoteSharingAllowed,+                  ("epub" .=) <$> _vaiEpub, ("pdf" .=) <$> _vaiPdf,+                  ("textToSpeechPermission" .=) <$>+                    _vaiTextToSpeechPermission,+                  ("embeddable" .=) <$> _vaiEmbeddable,+                  ("accessViewStatus" .=) <$> _vaiAccessViewStatus,+                  ("downloadAccess" .=) <$> _vaiDownloadAccess,+                  ("viewOrderUrl" .=) <$> _vaiViewOrderURL,+                  ("publicDomain" .=) <$> _vaiPublicDomain])++-- | A top-level summary of the panelization info in this volume.+--+-- /See:/ 'volumeVolumeInfoPanelizationSummary' smart constructor.+data VolumeVolumeInfoPanelizationSummary =+  VolumeVolumeInfoPanelizationSummary'+    { _vvipsEpubBubbleVersion    :: !(Maybe Text)+    , _vvipsContainsImageBubbles :: !(Maybe Bool)+    , _vvipsContainsEpubBubbles  :: !(Maybe Bool)+    , _vvipsImageBubbleVersion   :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeVolumeInfoPanelizationSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vvipsEpubBubbleVersion'+--+-- * 'vvipsContainsImageBubbles'+--+-- * 'vvipsContainsEpubBubbles'+--+-- * 'vvipsImageBubbleVersion'+volumeVolumeInfoPanelizationSummary+    :: VolumeVolumeInfoPanelizationSummary+volumeVolumeInfoPanelizationSummary =+  VolumeVolumeInfoPanelizationSummary'+    { _vvipsEpubBubbleVersion = Nothing+    , _vvipsContainsImageBubbles = Nothing+    , _vvipsContainsEpubBubbles = Nothing+    , _vvipsImageBubbleVersion = Nothing+    }+++vvipsEpubBubbleVersion :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Text)+vvipsEpubBubbleVersion+  = lens _vvipsEpubBubbleVersion+      (\ s a -> s{_vvipsEpubBubbleVersion = a})++vvipsContainsImageBubbles :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Bool)+vvipsContainsImageBubbles+  = lens _vvipsContainsImageBubbles+      (\ s a -> s{_vvipsContainsImageBubbles = a})++vvipsContainsEpubBubbles :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Bool)+vvipsContainsEpubBubbles+  = lens _vvipsContainsEpubBubbles+      (\ s a -> s{_vvipsContainsEpubBubbles = a})++vvipsImageBubbleVersion :: Lens' VolumeVolumeInfoPanelizationSummary (Maybe Text)+vvipsImageBubbleVersion+  = lens _vvipsImageBubbleVersion+      (\ s a -> s{_vvipsImageBubbleVersion = a})++instance FromJSON VolumeVolumeInfoPanelizationSummary+         where+        parseJSON+          = withObject "VolumeVolumeInfoPanelizationSummary"+              (\ o ->+                 VolumeVolumeInfoPanelizationSummary' <$>+                   (o .:? "epubBubbleVersion") <*>+                     (o .:? "containsImageBubbles")+                     <*> (o .:? "containsEpubBubbles")+                     <*> (o .:? "imageBubbleVersion"))++instance ToJSON VolumeVolumeInfoPanelizationSummary+         where+        toJSON VolumeVolumeInfoPanelizationSummary'{..}+          = object+              (catMaybes+                 [("epubBubbleVersion" .=) <$>+                    _vvipsEpubBubbleVersion,+                  ("containsImageBubbles" .=) <$>+                    _vvipsContainsImageBubbles,+                  ("containsEpubBubbles" .=) <$>+                    _vvipsContainsEpubBubbles,+                  ("imageBubbleVersion" .=) <$>+                    _vvipsImageBubbleVersion])++-- | A list of image links for all the sizes that are available. (In LITE+-- projection.)+--+-- /See:/ 'volumeVolumeInfoImageLinks' smart constructor.+data VolumeVolumeInfoImageLinks =+  VolumeVolumeInfoImageLinks'+    { _vviilThumbnail      :: !(Maybe Text)+    , _vviilSmall          :: !(Maybe Text)+    , _vviilExtraLarge     :: !(Maybe Text)+    , _vviilLarge          :: !(Maybe Text)+    , _vviilMedium         :: !(Maybe Text)+    , _vviilSmallThumbnail :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeVolumeInfoImageLinks' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vviilThumbnail'+--+-- * 'vviilSmall'+--+-- * 'vviilExtraLarge'+--+-- * 'vviilLarge'+--+-- * 'vviilMedium'+--+-- * 'vviilSmallThumbnail'+volumeVolumeInfoImageLinks+    :: VolumeVolumeInfoImageLinks+volumeVolumeInfoImageLinks =+  VolumeVolumeInfoImageLinks'+    { _vviilThumbnail = Nothing+    , _vviilSmall = Nothing+    , _vviilExtraLarge = Nothing+    , _vviilLarge = Nothing+    , _vviilMedium = Nothing+    , _vviilSmallThumbnail = Nothing+    }+++-- | Image link for thumbnail size (width of ~128 pixels). (In LITE+-- projection)+vviilThumbnail :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilThumbnail+  = lens _vviilThumbnail+      (\ s a -> s{_vviilThumbnail = a})++-- | Image link for small size (width of ~300 pixels). (In LITE projection)+vviilSmall :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilSmall+  = lens _vviilSmall (\ s a -> s{_vviilSmall = a})++-- | Image link for extra large size (width of ~1280 pixels). (In LITE+-- projection)+vviilExtraLarge :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilExtraLarge+  = lens _vviilExtraLarge+      (\ s a -> s{_vviilExtraLarge = a})++-- | Image link for large size (width of ~800 pixels). (In LITE projection)+vviilLarge :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilLarge+  = lens _vviilLarge (\ s a -> s{_vviilLarge = a})++-- | Image link for medium size (width of ~575 pixels). (In LITE projection)+vviilMedium :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilMedium+  = lens _vviilMedium (\ s a -> s{_vviilMedium = a})++-- | Image link for small thumbnail size (width of ~80 pixels). (In LITE+-- projection)+vviilSmallThumbnail :: Lens' VolumeVolumeInfoImageLinks (Maybe Text)+vviilSmallThumbnail+  = lens _vviilSmallThumbnail+      (\ s a -> s{_vviilSmallThumbnail = a})++instance FromJSON VolumeVolumeInfoImageLinks where+        parseJSON+          = withObject "VolumeVolumeInfoImageLinks"+              (\ o ->+                 VolumeVolumeInfoImageLinks' <$>+                   (o .:? "thumbnail") <*> (o .:? "small") <*>+                     (o .:? "extraLarge")+                     <*> (o .:? "large")+                     <*> (o .:? "medium")+                     <*> (o .:? "smallThumbnail"))++instance ToJSON VolumeVolumeInfoImageLinks where+        toJSON VolumeVolumeInfoImageLinks'{..}+          = object+              (catMaybes+                 [("thumbnail" .=) <$> _vviilThumbnail,+                  ("small" .=) <$> _vviilSmall,+                  ("extraLarge" .=) <$> _vviilExtraLarge,+                  ("large" .=) <$> _vviilLarge,+                  ("medium" .=) <$> _vviilMedium,+                  ("smallThumbnail" .=) <$> _vviilSmallThumbnail])++--+-- /See:/ 'volumeUserInfoUserUploadedVolumeInfo' smart constructor.+newtype VolumeUserInfoUserUploadedVolumeInfo =+  VolumeUserInfoUserUploadedVolumeInfo'+    { _vuiuuviProcessingState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeUserInfoUserUploadedVolumeInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vuiuuviProcessingState'+volumeUserInfoUserUploadedVolumeInfo+    :: VolumeUserInfoUserUploadedVolumeInfo+volumeUserInfoUserUploadedVolumeInfo =+  VolumeUserInfoUserUploadedVolumeInfo' {_vuiuuviProcessingState = Nothing}+++vuiuuviProcessingState :: Lens' VolumeUserInfoUserUploadedVolumeInfo (Maybe Text)+vuiuuviProcessingState+  = lens _vuiuuviProcessingState+      (\ s a -> s{_vuiuuviProcessingState = a})++instance FromJSON+           VolumeUserInfoUserUploadedVolumeInfo+         where+        parseJSON+          = withObject "VolumeUserInfoUserUploadedVolumeInfo"+              (\ o ->+                 VolumeUserInfoUserUploadedVolumeInfo' <$>+                   (o .:? "processingState"))++instance ToJSON VolumeUserInfoUserUploadedVolumeInfo+         where+        toJSON VolumeUserInfoUserUploadedVolumeInfo'{..}+          = object+              (catMaybes+                 [("processingState" .=) <$> _vuiuuviProcessingState])++-- | Copy\/Paste accounting information.+--+-- /See:/ 'volumeUserInfoCopy' smart constructor.+data VolumeUserInfoCopy =+  VolumeUserInfoCopy'+    { _vuicLimitType               :: !(Maybe Text)+    , _vuicAllowedCharacterCount   :: !(Maybe (Textual Int32))+    , _vuicUpdated                 :: !(Maybe DateTime')+    , _vuicRemainingCharacterCount :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeUserInfoCopy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vuicLimitType'+--+-- * 'vuicAllowedCharacterCount'+--+-- * 'vuicUpdated'+--+-- * 'vuicRemainingCharacterCount'+volumeUserInfoCopy+    :: VolumeUserInfoCopy+volumeUserInfoCopy =+  VolumeUserInfoCopy'+    { _vuicLimitType = Nothing+    , _vuicAllowedCharacterCount = Nothing+    , _vuicUpdated = Nothing+    , _vuicRemainingCharacterCount = Nothing+    }+++vuicLimitType :: Lens' VolumeUserInfoCopy (Maybe Text)+vuicLimitType+  = lens _vuicLimitType+      (\ s a -> s{_vuicLimitType = a})++vuicAllowedCharacterCount :: Lens' VolumeUserInfoCopy (Maybe Int32)+vuicAllowedCharacterCount+  = lens _vuicAllowedCharacterCount+      (\ s a -> s{_vuicAllowedCharacterCount = a})+      . mapping _Coerce++vuicUpdated :: Lens' VolumeUserInfoCopy (Maybe UTCTime)+vuicUpdated+  = lens _vuicUpdated (\ s a -> s{_vuicUpdated = a}) .+      mapping _DateTime++vuicRemainingCharacterCount :: Lens' VolumeUserInfoCopy (Maybe Int32)+vuicRemainingCharacterCount+  = lens _vuicRemainingCharacterCount+      (\ s a -> s{_vuicRemainingCharacterCount = a})+      . mapping _Coerce++instance FromJSON VolumeUserInfoCopy where+        parseJSON+          = withObject "VolumeUserInfoCopy"+              (\ o ->+                 VolumeUserInfoCopy' <$>+                   (o .:? "limitType") <*>+                     (o .:? "allowedCharacterCount")+                     <*> (o .:? "updated")+                     <*> (o .:? "remainingCharacterCount"))++instance ToJSON VolumeUserInfoCopy where+        toJSON VolumeUserInfoCopy'{..}+          = object+              (catMaybes+                 [("limitType" .=) <$> _vuicLimitType,+                  ("allowedCharacterCount" .=) <$>+                    _vuicAllowedCharacterCount,+                  ("updated" .=) <$> _vuicUpdated,+                  ("remainingCharacterCount" .=) <$>+                    _vuicRemainingCharacterCount])++--+-- /See:/ 'booksVolumesRecommendedRateResponse' smart constructor.+newtype BooksVolumesRecommendedRateResponse =+  BooksVolumesRecommendedRateResponse'+    { _bvrrrConsistencyToken :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BooksVolumesRecommendedRateResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bvrrrConsistencyToken'+booksVolumesRecommendedRateResponse+    :: BooksVolumesRecommendedRateResponse+booksVolumesRecommendedRateResponse =+  BooksVolumesRecommendedRateResponse' {_bvrrrConsistencyToken = Nothing}+++bvrrrConsistencyToken :: Lens' BooksVolumesRecommendedRateResponse (Maybe Text)+bvrrrConsistencyToken+  = lens _bvrrrConsistencyToken+      (\ s a -> s{_bvrrrConsistencyToken = a})++instance FromJSON BooksVolumesRecommendedRateResponse+         where+        parseJSON+          = withObject "BooksVolumesRecommendedRateResponse"+              (\ o ->+                 BooksVolumesRecommendedRateResponse' <$>+                   (o .:? "consistency_token"))++instance ToJSON BooksVolumesRecommendedRateResponse+         where+        toJSON BooksVolumesRecommendedRateResponse'{..}+          = object+              (catMaybes+                 [("consistency_token" .=) <$>+                    _bvrrrConsistencyToken])++--+-- /See:/ 'userSettingsNotificationPriceDrop' smart constructor.+newtype UserSettingsNotificationPriceDrop =+  UserSettingsNotificationPriceDrop'+    { _usnpdOptedState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotificationPriceDrop' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnpdOptedState'+userSettingsNotificationPriceDrop+    :: UserSettingsNotificationPriceDrop+userSettingsNotificationPriceDrop =+  UserSettingsNotificationPriceDrop' {_usnpdOptedState = Nothing}+++usnpdOptedState :: Lens' UserSettingsNotificationPriceDrop (Maybe Text)+usnpdOptedState+  = lens _usnpdOptedState+      (\ s a -> s{_usnpdOptedState = a})++instance FromJSON UserSettingsNotificationPriceDrop+         where+        parseJSON+          = withObject "UserSettingsNotificationPriceDrop"+              (\ o ->+                 UserSettingsNotificationPriceDrop' <$>+                   (o .:? "opted_state"))++instance ToJSON UserSettingsNotificationPriceDrop+         where+        toJSON UserSettingsNotificationPriceDrop'{..}+          = object+              (catMaybes [("opted_state" .=) <$> _usnpdOptedState])++--+-- /See:/ 'volumeseriesInfo' smart constructor.+data VolumeseriesInfo =+  VolumeseriesInfo'+    { _viBookDisplayNumber    :: !(Maybe Text)+    , _viKind                 :: !Text+    , _viShortSeriesBookTitle :: !(Maybe Text)+    , _viVolumeSeries         :: !(Maybe [VolumeseriesInfoVolumeSeriesItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeseriesInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'viBookDisplayNumber'+--+-- * 'viKind'+--+-- * 'viShortSeriesBookTitle'+--+-- * 'viVolumeSeries'+volumeseriesInfo+    :: VolumeseriesInfo+volumeseriesInfo =+  VolumeseriesInfo'+    { _viBookDisplayNumber = Nothing+    , _viKind = "books#volume_series_info"+    , _viShortSeriesBookTitle = Nothing+    , _viVolumeSeries = Nothing+    }+++-- | The display number string. This should be used only for display purposes+-- and the actual sequence should be inferred from the below orderNumber.+viBookDisplayNumber :: Lens' VolumeseriesInfo (Maybe Text)+viBookDisplayNumber+  = lens _viBookDisplayNumber+      (\ s a -> s{_viBookDisplayNumber = a})++-- | Resource type.+viKind :: Lens' VolumeseriesInfo Text+viKind = lens _viKind (\ s a -> s{_viKind = a})++-- | Short book title in the context of the series.+viShortSeriesBookTitle :: Lens' VolumeseriesInfo (Maybe Text)+viShortSeriesBookTitle+  = lens _viShortSeriesBookTitle+      (\ s a -> s{_viShortSeriesBookTitle = a})++viVolumeSeries :: Lens' VolumeseriesInfo [VolumeseriesInfoVolumeSeriesItem]+viVolumeSeries+  = lens _viVolumeSeries+      (\ s a -> s{_viVolumeSeries = a})+      . _Default+      . _Coerce++instance FromJSON VolumeseriesInfo where+        parseJSON+          = withObject "VolumeseriesInfo"+              (\ o ->+                 VolumeseriesInfo' <$>+                   (o .:? "bookDisplayNumber") <*>+                     (o .:? "kind" .!= "books#volume_series_info")+                     <*> (o .:? "shortSeriesBookTitle")+                     <*> (o .:? "volumeSeries" .!= mempty))++instance ToJSON VolumeseriesInfo where+        toJSON VolumeseriesInfo'{..}+          = object+              (catMaybes+                 [("bookDisplayNumber" .=) <$> _viBookDisplayNumber,+                  Just ("kind" .= _viKind),+                  ("shortSeriesBookTitle" .=) <$>+                    _viShortSeriesBookTitle,+                  ("volumeSeries" .=) <$> _viVolumeSeries])++--+-- /See:/ 'bookshelf' smart constructor.+data Bookshelf =+  Bookshelf'+    { _bAccess             :: !(Maybe Text)+    , _bVolumesLastUpdated :: !(Maybe DateTime')+    , _bKind               :: !Text+    , _bCreated            :: !(Maybe DateTime')+    , _bVolumeCount        :: !(Maybe (Textual Int32))+    , _bSelfLink           :: !(Maybe Text)+    , _bId                 :: !(Maybe (Textual Int32))+    , _bUpdated            :: !(Maybe DateTime')+    , _bTitle              :: !(Maybe Text)+    , _bDescription        :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Bookshelf' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bAccess'+--+-- * 'bVolumesLastUpdated'+--+-- * 'bKind'+--+-- * 'bCreated'+--+-- * 'bVolumeCount'+--+-- * 'bSelfLink'+--+-- * 'bId'+--+-- * 'bUpdated'+--+-- * 'bTitle'+--+-- * 'bDescription'+bookshelf+    :: Bookshelf+bookshelf =+  Bookshelf'+    { _bAccess = Nothing+    , _bVolumesLastUpdated = Nothing+    , _bKind = "books#bookshelf"+    , _bCreated = Nothing+    , _bVolumeCount = Nothing+    , _bSelfLink = Nothing+    , _bId = Nothing+    , _bUpdated = Nothing+    , _bTitle = Nothing+    , _bDescription = Nothing+    }+++-- | Whether this bookshelf is PUBLIC or PRIVATE.+bAccess :: Lens' Bookshelf (Maybe Text)+bAccess = lens _bAccess (\ s a -> s{_bAccess = a})++-- | Last time a volume was added or removed from this bookshelf (formatted+-- UTC timestamp with millisecond resolution).+bVolumesLastUpdated :: Lens' Bookshelf (Maybe UTCTime)+bVolumesLastUpdated+  = lens _bVolumesLastUpdated+      (\ s a -> s{_bVolumesLastUpdated = a})+      . mapping _DateTime++-- | Resource type for bookshelf metadata.+bKind :: Lens' Bookshelf Text+bKind = lens _bKind (\ s a -> s{_bKind = a})++-- | Created time for this bookshelf (formatted UTC timestamp with+-- millisecond resolution).+bCreated :: Lens' Bookshelf (Maybe UTCTime)+bCreated+  = lens _bCreated (\ s a -> s{_bCreated = a}) .+      mapping _DateTime++-- | Number of volumes in this bookshelf.+bVolumeCount :: Lens' Bookshelf (Maybe Int32)+bVolumeCount+  = lens _bVolumeCount (\ s a -> s{_bVolumeCount = a})+      . mapping _Coerce++-- | URL to this resource.+bSelfLink :: Lens' Bookshelf (Maybe Text)+bSelfLink+  = lens _bSelfLink (\ s a -> s{_bSelfLink = a})++-- | Id of this bookshelf, only unique by user.+bId :: Lens' Bookshelf (Maybe Int32)+bId+  = lens _bId (\ s a -> s{_bId = a}) . mapping _Coerce++-- | Last modified time of this bookshelf (formatted UTC timestamp with+-- millisecond resolution).+bUpdated :: Lens' Bookshelf (Maybe UTCTime)+bUpdated+  = lens _bUpdated (\ s a -> s{_bUpdated = a}) .+      mapping _DateTime++-- | Title of this bookshelf.+bTitle :: Lens' Bookshelf (Maybe Text)+bTitle = lens _bTitle (\ s a -> s{_bTitle = a})++-- | Description of this bookshelf.+bDescription :: Lens' Bookshelf (Maybe Text)+bDescription+  = lens _bDescription (\ s a -> s{_bDescription = a})++instance FromJSON Bookshelf where+        parseJSON+          = withObject "Bookshelf"+              (\ o ->+                 Bookshelf' <$>+                   (o .:? "access") <*> (o .:? "volumesLastUpdated") <*>+                     (o .:? "kind" .!= "books#bookshelf")+                     <*> (o .:? "created")+                     <*> (o .:? "volumeCount")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id")+                     <*> (o .:? "updated")+                     <*> (o .:? "title")+                     <*> (o .:? "description"))++instance ToJSON Bookshelf where+        toJSON Bookshelf'{..}+          = object+              (catMaybes+                 [("access" .=) <$> _bAccess,+                  ("volumesLastUpdated" .=) <$> _bVolumesLastUpdated,+                  Just ("kind" .= _bKind),+                  ("created" .=) <$> _bCreated,+                  ("volumeCount" .=) <$> _bVolumeCount,+                  ("selfLink" .=) <$> _bSelfLink, ("id" .=) <$> _bId,+                  ("updated" .=) <$> _bUpdated,+                  ("title" .=) <$> _bTitle,+                  ("description" .=) <$> _bDescription])++--+-- /See:/ 'notification' smart constructor.+data Notification =+  Notification'+    { _nDocType                        :: !(Maybe Text)+    , _nTargetURL                      :: !(Maybe Text)+    , _nShowNotificationSettingsAction :: !(Maybe Bool)+    , _nDocId                          :: !(Maybe Text)+    , _nKind                           :: !Text+    , _nBody                           :: !(Maybe Text)+    , _nCrmExperimentIds               :: !(Maybe [Textual Int64])+    , _nTimeToExpireMs                 :: !(Maybe (Textual Int64))+    , _nPcampaignId                    :: !(Maybe Text)+    , _nReason                         :: !(Maybe Text)+    , _nIsDocumentMature               :: !(Maybe Bool)+    , _nDontShowNotification           :: !(Maybe Bool)+    , _nNotificationType               :: !(Maybe Text)+    , _nNotificationGroup              :: !(Maybe Text)+    , _nIconURL                        :: !(Maybe Text)+    , _nTitle                          :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Notification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nDocType'+--+-- * 'nTargetURL'+--+-- * 'nShowNotificationSettingsAction'+--+-- * 'nDocId'+--+-- * 'nKind'+--+-- * 'nBody'+--+-- * 'nCrmExperimentIds'+--+-- * 'nTimeToExpireMs'+--+-- * 'nPcampaignId'+--+-- * 'nReason'+--+-- * 'nIsDocumentMature'+--+-- * 'nDontShowNotification'+--+-- * 'nNotificationType'+--+-- * 'nNotificationGroup'+--+-- * 'nIconURL'+--+-- * 'nTitle'+notification+    :: Notification+notification =+  Notification'+    { _nDocType = Nothing+    , _nTargetURL = Nothing+    , _nShowNotificationSettingsAction = Nothing+    , _nDocId = Nothing+    , _nKind = "books#notification"+    , _nBody = Nothing+    , _nCrmExperimentIds = Nothing+    , _nTimeToExpireMs = Nothing+    , _nPcampaignId = Nothing+    , _nReason = Nothing+    , _nIsDocumentMature = Nothing+    , _nDontShowNotification = Nothing+    , _nNotificationType = Nothing+    , _nNotificationGroup = Nothing+    , _nIconURL = Nothing+    , _nTitle = Nothing+    }+++nDocType :: Lens' Notification (Maybe Text)+nDocType = lens _nDocType (\ s a -> s{_nDocType = a})++nTargetURL :: Lens' Notification (Maybe Text)+nTargetURL+  = lens _nTargetURL (\ s a -> s{_nTargetURL = a})++nShowNotificationSettingsAction :: Lens' Notification (Maybe Bool)+nShowNotificationSettingsAction+  = lens _nShowNotificationSettingsAction+      (\ s a -> s{_nShowNotificationSettingsAction = a})++nDocId :: Lens' Notification (Maybe Text)+nDocId = lens _nDocId (\ s a -> s{_nDocId = a})++-- | Resource type.+nKind :: Lens' Notification Text+nKind = lens _nKind (\ s a -> s{_nKind = a})++nBody :: Lens' Notification (Maybe Text)+nBody = lens _nBody (\ s a -> s{_nBody = a})++-- | The list of crm experiment ids.+nCrmExperimentIds :: Lens' Notification [Int64]+nCrmExperimentIds+  = lens _nCrmExperimentIds+      (\ s a -> s{_nCrmExperimentIds = a})+      . _Default+      . _Coerce++nTimeToExpireMs :: Lens' Notification (Maybe Int64)+nTimeToExpireMs+  = lens _nTimeToExpireMs+      (\ s a -> s{_nTimeToExpireMs = a})+      . mapping _Coerce++nPcampaignId :: Lens' Notification (Maybe Text)+nPcampaignId+  = lens _nPcampaignId (\ s a -> s{_nPcampaignId = a})++nReason :: Lens' Notification (Maybe Text)+nReason = lens _nReason (\ s a -> s{_nReason = a})++nIsDocumentMature :: Lens' Notification (Maybe Bool)+nIsDocumentMature+  = lens _nIsDocumentMature+      (\ s a -> s{_nIsDocumentMature = a})++nDontShowNotification :: Lens' Notification (Maybe Bool)+nDontShowNotification+  = lens _nDontShowNotification+      (\ s a -> s{_nDontShowNotification = a})++nNotificationType :: Lens' Notification (Maybe Text)+nNotificationType+  = lens _nNotificationType+      (\ s a -> s{_nNotificationType = a})++nNotificationGroup :: Lens' Notification (Maybe Text)+nNotificationGroup+  = lens _nNotificationGroup+      (\ s a -> s{_nNotificationGroup = a})++nIconURL :: Lens' Notification (Maybe Text)+nIconURL = lens _nIconURL (\ s a -> s{_nIconURL = a})++nTitle :: Lens' Notification (Maybe Text)+nTitle = lens _nTitle (\ s a -> s{_nTitle = a})++instance FromJSON Notification where+        parseJSON+          = withObject "Notification"+              (\ o ->+                 Notification' <$>+                   (o .:? "doc_type") <*> (o .:? "targetUrl") <*>+                     (o .:? "show_notification_settings_action")+                     <*> (o .:? "doc_id")+                     <*> (o .:? "kind" .!= "books#notification")+                     <*> (o .:? "body")+                     <*> (o .:? "crmExperimentIds" .!= mempty)+                     <*> (o .:? "timeToExpireMs")+                     <*> (o .:? "pcampaign_id")+                     <*> (o .:? "reason")+                     <*> (o .:? "is_document_mature")+                     <*> (o .:? "dont_show_notification")+                     <*> (o .:? "notification_type")+                     <*> (o .:? "notificationGroup")+                     <*> (o .:? "iconUrl")+                     <*> (o .:? "title"))++instance ToJSON Notification where+        toJSON Notification'{..}+          = object+              (catMaybes+                 [("doc_type" .=) <$> _nDocType,+                  ("targetUrl" .=) <$> _nTargetURL,+                  ("show_notification_settings_action" .=) <$>+                    _nShowNotificationSettingsAction,+                  ("doc_id" .=) <$> _nDocId, Just ("kind" .= _nKind),+                  ("body" .=) <$> _nBody,+                  ("crmExperimentIds" .=) <$> _nCrmExperimentIds,+                  ("timeToExpireMs" .=) <$> _nTimeToExpireMs,+                  ("pcampaign_id" .=) <$> _nPcampaignId,+                  ("reason" .=) <$> _nReason,+                  ("is_document_mature" .=) <$> _nIsDocumentMature,+                  ("dont_show_notification" .=) <$>+                    _nDontShowNotification,+                  ("notification_type" .=) <$> _nNotificationType,+                  ("notificationGroup" .=) <$> _nNotificationGroup,+                  ("iconUrl" .=) <$> _nIconURL,+                  ("title" .=) <$> _nTitle])++--+-- /See:/ 'annotationsSummaryLayersItem' smart constructor.+data AnnotationsSummaryLayersItem =+  AnnotationsSummaryLayersItem'+    { _asliLimitType               :: !(Maybe Text)+    , _asliAllowedCharacterCount   :: !(Maybe (Textual Int32))+    , _asliUpdated                 :: !(Maybe DateTime')+    , _asliLayerId                 :: !(Maybe Text)+    , _asliRemainingCharacterCount :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationsSummaryLayersItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'asliLimitType'+--+-- * 'asliAllowedCharacterCount'+--+-- * 'asliUpdated'+--+-- * 'asliLayerId'+--+-- * 'asliRemainingCharacterCount'+annotationsSummaryLayersItem+    :: AnnotationsSummaryLayersItem+annotationsSummaryLayersItem =+  AnnotationsSummaryLayersItem'+    { _asliLimitType = Nothing+    , _asliAllowedCharacterCount = Nothing+    , _asliUpdated = Nothing+    , _asliLayerId = Nothing+    , _asliRemainingCharacterCount = Nothing+    }+++asliLimitType :: Lens' AnnotationsSummaryLayersItem (Maybe Text)+asliLimitType+  = lens _asliLimitType+      (\ s a -> s{_asliLimitType = a})++asliAllowedCharacterCount :: Lens' AnnotationsSummaryLayersItem (Maybe Int32)+asliAllowedCharacterCount+  = lens _asliAllowedCharacterCount+      (\ s a -> s{_asliAllowedCharacterCount = a})+      . mapping _Coerce++asliUpdated :: Lens' AnnotationsSummaryLayersItem (Maybe UTCTime)+asliUpdated+  = lens _asliUpdated (\ s a -> s{_asliUpdated = a}) .+      mapping _DateTime++asliLayerId :: Lens' AnnotationsSummaryLayersItem (Maybe Text)+asliLayerId+  = lens _asliLayerId (\ s a -> s{_asliLayerId = a})++asliRemainingCharacterCount :: Lens' AnnotationsSummaryLayersItem (Maybe Int32)+asliRemainingCharacterCount+  = lens _asliRemainingCharacterCount+      (\ s a -> s{_asliRemainingCharacterCount = a})+      . mapping _Coerce++instance FromJSON AnnotationsSummaryLayersItem where+        parseJSON+          = withObject "AnnotationsSummaryLayersItem"+              (\ o ->+                 AnnotationsSummaryLayersItem' <$>+                   (o .:? "limitType") <*>+                     (o .:? "allowedCharacterCount")+                     <*> (o .:? "updated")+                     <*> (o .:? "layerId")+                     <*> (o .:? "remainingCharacterCount"))++instance ToJSON AnnotationsSummaryLayersItem where+        toJSON AnnotationsSummaryLayersItem'{..}+          = object+              (catMaybes+                 [("limitType" .=) <$> _asliLimitType,+                  ("allowedCharacterCount" .=) <$>+                    _asliAllowedCharacterCount,+                  ("updated" .=) <$> _asliUpdated,+                  ("layerId" .=) <$> _asliLayerId,+                  ("remainingCharacterCount" .=) <$>+                    _asliRemainingCharacterCount])++-- | The rental duration (for rental offers only).+--+-- /See:/ 'volumeSaleInfoOffersItemRentalDuration' smart constructor.+data VolumeSaleInfoOffersItemRentalDuration =+  VolumeSaleInfoOffersItemRentalDuration'+    { _vsioirdCount :: !(Maybe (Textual Double))+    , _vsioirdUnit  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoOffersItemRentalDuration' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsioirdCount'+--+-- * 'vsioirdUnit'+volumeSaleInfoOffersItemRentalDuration+    :: VolumeSaleInfoOffersItemRentalDuration+volumeSaleInfoOffersItemRentalDuration =+  VolumeSaleInfoOffersItemRentalDuration'+    {_vsioirdCount = Nothing, _vsioirdUnit = Nothing}+++vsioirdCount :: Lens' VolumeSaleInfoOffersItemRentalDuration (Maybe Double)+vsioirdCount+  = lens _vsioirdCount (\ s a -> s{_vsioirdCount = a})+      . mapping _Coerce++vsioirdUnit :: Lens' VolumeSaleInfoOffersItemRentalDuration (Maybe Text)+vsioirdUnit+  = lens _vsioirdUnit (\ s a -> s{_vsioirdUnit = a})++instance FromJSON+           VolumeSaleInfoOffersItemRentalDuration+         where+        parseJSON+          = withObject "VolumeSaleInfoOffersItemRentalDuration"+              (\ o ->+                 VolumeSaleInfoOffersItemRentalDuration' <$>+                   (o .:? "count") <*> (o .:? "unit"))++instance ToJSON+           VolumeSaleInfoOffersItemRentalDuration+         where+        toJSON VolumeSaleInfoOffersItemRentalDuration'{..}+          = object+              (catMaybes+                 [("count" .=) <$> _vsioirdCount,+                  ("unit" .=) <$> _vsioirdUnit])++--+-- /See:/ 'dictlayerDataDictWordsItemExamplesItem' smart constructor.+data DictlayerDataDictWordsItemExamplesItem =+  DictlayerDataDictWordsItemExamplesItem'+    { _dddwieiText   :: !(Maybe Text)+    , _dddwieiSource :: !(Maybe DictlayerDataDictWordsItemExamplesItemSource)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemExamplesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwieiText'+--+-- * 'dddwieiSource'+dictlayerDataDictWordsItemExamplesItem+    :: DictlayerDataDictWordsItemExamplesItem+dictlayerDataDictWordsItemExamplesItem =+  DictlayerDataDictWordsItemExamplesItem'+    {_dddwieiText = Nothing, _dddwieiSource = Nothing}+++dddwieiText :: Lens' DictlayerDataDictWordsItemExamplesItem (Maybe Text)+dddwieiText+  = lens _dddwieiText (\ s a -> s{_dddwieiText = a})++dddwieiSource :: Lens' DictlayerDataDictWordsItemExamplesItem (Maybe DictlayerDataDictWordsItemExamplesItemSource)+dddwieiSource+  = lens _dddwieiSource+      (\ s a -> s{_dddwieiSource = a})++instance FromJSON+           DictlayerDataDictWordsItemExamplesItem+         where+        parseJSON+          = withObject "DictlayerDataDictWordsItemExamplesItem"+              (\ o ->+                 DictlayerDataDictWordsItemExamplesItem' <$>+                   (o .:? "text") <*> (o .:? "source"))++instance ToJSON+           DictlayerDataDictWordsItemExamplesItem+         where+        toJSON DictlayerDataDictWordsItemExamplesItem'{..}+          = object+              (catMaybes+                 [("text" .=) <$> _dddwieiText,+                  ("source" .=) <$> _dddwieiSource])++--+-- /See:/ 'offersItemsItem' smart constructor.+data OffersItemsItem =+  OffersItemsItem'+    { _oiiItems        :: !(Maybe [OffersItemsItemItemsItem])+    , _oiiArtURL       :: !(Maybe Text)+    , _oiiId           :: !(Maybe Text)+    , _oiiGServicesKey :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'OffersItemsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oiiItems'+--+-- * 'oiiArtURL'+--+-- * 'oiiId'+--+-- * 'oiiGServicesKey'+offersItemsItem+    :: OffersItemsItem+offersItemsItem =+  OffersItemsItem'+    { _oiiItems = Nothing+    , _oiiArtURL = Nothing+    , _oiiId = Nothing+    , _oiiGServicesKey = Nothing+    }+++oiiItems :: Lens' OffersItemsItem [OffersItemsItemItemsItem]+oiiItems+  = lens _oiiItems (\ s a -> s{_oiiItems = a}) .+      _Default+      . _Coerce++oiiArtURL :: Lens' OffersItemsItem (Maybe Text)+oiiArtURL+  = lens _oiiArtURL (\ s a -> s{_oiiArtURL = a})++oiiId :: Lens' OffersItemsItem (Maybe Text)+oiiId = lens _oiiId (\ s a -> s{_oiiId = a})++oiiGServicesKey :: Lens' OffersItemsItem (Maybe Text)+oiiGServicesKey+  = lens _oiiGServicesKey+      (\ s a -> s{_oiiGServicesKey = a})++instance FromJSON OffersItemsItem where+        parseJSON+          = withObject "OffersItemsItem"+              (\ o ->+                 OffersItemsItem' <$>+                   (o .:? "items" .!= mempty) <*> (o .:? "artUrl") <*>+                     (o .:? "id")+                     <*> (o .:? "gservicesKey"))++instance ToJSON OffersItemsItem where+        toJSON OffersItemsItem'{..}+          = object+              (catMaybes+                 [("items" .=) <$> _oiiItems,+                  ("artUrl" .=) <$> _oiiArtURL, ("id" .=) <$> _oiiId,+                  ("gservicesKey" .=) <$> _oiiGServicesKey])++--+-- /See:/ 'annotationLayerSummary' smart constructor.+data AnnotationLayerSummary =+  AnnotationLayerSummary'+    { _alsLimitType               :: !(Maybe Text)+    , _alsAllowedCharacterCount   :: !(Maybe (Textual Int32))+    , _alsRemainingCharacterCount :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationLayerSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'alsLimitType'+--+-- * 'alsAllowedCharacterCount'+--+-- * 'alsRemainingCharacterCount'+annotationLayerSummary+    :: AnnotationLayerSummary+annotationLayerSummary =+  AnnotationLayerSummary'+    { _alsLimitType = Nothing+    , _alsAllowedCharacterCount = Nothing+    , _alsRemainingCharacterCount = Nothing+    }+++-- | Type of limitation on this layer. \"limited\" or \"unlimited\" for the+-- \"copy\" layer.+alsLimitType :: Lens' AnnotationLayerSummary (Maybe Text)+alsLimitType+  = lens _alsLimitType (\ s a -> s{_alsLimitType = a})++-- | Maximum allowed characters on this layer, especially for the \"copy\"+-- layer.+alsAllowedCharacterCount :: Lens' AnnotationLayerSummary (Maybe Int32)+alsAllowedCharacterCount+  = lens _alsAllowedCharacterCount+      (\ s a -> s{_alsAllowedCharacterCount = a})+      . mapping _Coerce++-- | Remaining allowed characters on this layer, especially for the \"copy\"+-- layer.+alsRemainingCharacterCount :: Lens' AnnotationLayerSummary (Maybe Int32)+alsRemainingCharacterCount+  = lens _alsRemainingCharacterCount+      (\ s a -> s{_alsRemainingCharacterCount = a})+      . mapping _Coerce++instance FromJSON AnnotationLayerSummary where+        parseJSON+          = withObject "AnnotationLayerSummary"+              (\ o ->+                 AnnotationLayerSummary' <$>+                   (o .:? "limitType") <*>+                     (o .:? "allowedCharacterCount")+                     <*> (o .:? "remainingCharacterCount"))++instance ToJSON AnnotationLayerSummary where+        toJSON AnnotationLayerSummary'{..}+          = object+              (catMaybes+                 [("limitType" .=) <$> _alsLimitType,+                  ("allowedCharacterCount" .=) <$>+                    _alsAllowedCharacterCount,+                  ("remainingCharacterCount" .=) <$>+                    _alsRemainingCharacterCount])++-- | Search result information related to this volume.+--+-- /See:/ 'volumeSearchInfo' smart constructor.+newtype VolumeSearchInfo =+  VolumeSearchInfo'+    { _vsiTextSnippet :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSearchInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsiTextSnippet'+volumeSearchInfo+    :: VolumeSearchInfo+volumeSearchInfo = VolumeSearchInfo' {_vsiTextSnippet = Nothing}+++-- | A text snippet containing the search query.+vsiTextSnippet :: Lens' VolumeSearchInfo (Maybe Text)+vsiTextSnippet+  = lens _vsiTextSnippet+      (\ s a -> s{_vsiTextSnippet = a})++instance FromJSON VolumeSearchInfo where+        parseJSON+          = withObject "VolumeSearchInfo"+              (\ o -> VolumeSearchInfo' <$> (o .:? "textSnippet"))++instance ToJSON VolumeSearchInfo where+        toJSON VolumeSearchInfo'{..}+          = object+              (catMaybes [("textSnippet" .=) <$> _vsiTextSnippet])++--+-- /See:/ 'annotationsSummary' smart constructor.+data AnnotationsSummary =+  AnnotationsSummary'+    { _asKind   :: !Text+    , _asLayers :: !(Maybe [AnnotationsSummaryLayersItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationsSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'asKind'+--+-- * 'asLayers'+annotationsSummary+    :: AnnotationsSummary+annotationsSummary =+  AnnotationsSummary'+    {_asKind = "books#annotationsSummary", _asLayers = Nothing}+++asKind :: Lens' AnnotationsSummary Text+asKind = lens _asKind (\ s a -> s{_asKind = a})++asLayers :: Lens' AnnotationsSummary [AnnotationsSummaryLayersItem]+asLayers+  = lens _asLayers (\ s a -> s{_asLayers = a}) .+      _Default+      . _Coerce++instance FromJSON AnnotationsSummary where+        parseJSON+          = withObject "AnnotationsSummary"+              (\ o ->+                 AnnotationsSummary' <$>+                   (o .:? "kind" .!= "books#annotationsSummary") <*>+                     (o .:? "layers" .!= mempty))++instance ToJSON AnnotationsSummary where+        toJSON AnnotationsSummary'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _asKind),+                  ("layers" .=) <$> _asLayers])++--+-- /See:/ 'category' smart constructor.+data Category =+  Category'+    { _cKind  :: !Text+    , _cItems :: !(Maybe [CategoryItemsItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Category' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cKind'+--+-- * 'cItems'+category+    :: Category+category = Category' {_cKind = "onboarding#category", _cItems = Nothing}+++-- | Resource type.+cKind :: Lens' Category Text+cKind = lens _cKind (\ s a -> s{_cKind = a})++-- | A list of onboarding categories.+cItems :: Lens' Category [CategoryItemsItem]+cItems+  = lens _cItems (\ s a -> s{_cItems = a}) . _Default .+      _Coerce++instance FromJSON Category where+        parseJSON+          = withObject "Category"+              (\ o ->+                 Category' <$>+                   (o .:? "kind" .!= "onboarding#category") <*>+                     (o .:? "items" .!= mempty))++instance ToJSON Category where+        toJSON Category'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _cKind), ("items" .=) <$> _cItems])++--+-- /See:/ 'discoveryclustersClustersItemBanner_with_content_container' smart constructor.+data DiscoveryclustersClustersItemBanner_with_content_container =+  DiscoveryclustersClustersItemBanner_with_content_container'+    { _dcibFillColorArgb  :: !(Maybe Text)+    , _dcibMoreButtonURL  :: !(Maybe Text)+    , _dcibTextColorArgb  :: !(Maybe Text)+    , _dcibMoreButtonText :: !(Maybe Text)+    , _dcibImageURL       :: !(Maybe Text)+    , _dcibMaskColorArgb  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DiscoveryclustersClustersItemBanner_with_content_container' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcibFillColorArgb'+--+-- * 'dcibMoreButtonURL'+--+-- * 'dcibTextColorArgb'+--+-- * 'dcibMoreButtonText'+--+-- * 'dcibImageURL'+--+-- * 'dcibMaskColorArgb'+discoveryclustersClustersItemBanner_with_content_container+    :: DiscoveryclustersClustersItemBanner_with_content_container+discoveryclustersClustersItemBanner_with_content_container =+  DiscoveryclustersClustersItemBanner_with_content_container'+    { _dcibFillColorArgb = Nothing+    , _dcibMoreButtonURL = Nothing+    , _dcibTextColorArgb = Nothing+    , _dcibMoreButtonText = Nothing+    , _dcibImageURL = Nothing+    , _dcibMaskColorArgb = Nothing+    }+++dcibFillColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibFillColorArgb+  = lens _dcibFillColorArgb+      (\ s a -> s{_dcibFillColorArgb = a})++dcibMoreButtonURL :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibMoreButtonURL+  = lens _dcibMoreButtonURL+      (\ s a -> s{_dcibMoreButtonURL = a})++dcibTextColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibTextColorArgb+  = lens _dcibTextColorArgb+      (\ s a -> s{_dcibTextColorArgb = a})++dcibMoreButtonText :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibMoreButtonText+  = lens _dcibMoreButtonText+      (\ s a -> s{_dcibMoreButtonText = a})++dcibImageURL :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibImageURL+  = lens _dcibImageURL (\ s a -> s{_dcibImageURL = a})++dcibMaskColorArgb :: Lens' DiscoveryclustersClustersItemBanner_with_content_container (Maybe Text)+dcibMaskColorArgb+  = lens _dcibMaskColorArgb+      (\ s a -> s{_dcibMaskColorArgb = a})++instance FromJSON+           DiscoveryclustersClustersItemBanner_with_content_container+         where+        parseJSON+          = withObject+              "DiscoveryclustersClustersItemBannerWithContentContainer"+              (\ o ->+                 DiscoveryclustersClustersItemBanner_with_content_container'+                   <$>+                   (o .:? "fillColorArgb") <*> (o .:? "moreButtonUrl")+                     <*> (o .:? "textColorArgb")+                     <*> (o .:? "moreButtonText")+                     <*> (o .:? "imageUrl")+                     <*> (o .:? "maskColorArgb"))++instance ToJSON+           DiscoveryclustersClustersItemBanner_with_content_container+         where+        toJSON+          DiscoveryclustersClustersItemBanner_with_content_container'{..}+          = object+              (catMaybes+                 [("fillColorArgb" .=) <$> _dcibFillColorArgb,+                  ("moreButtonUrl" .=) <$> _dcibMoreButtonURL,+                  ("textColorArgb" .=) <$> _dcibTextColorArgb,+                  ("moreButtonText" .=) <$> _dcibMoreButtonText,+                  ("imageUrl" .=) <$> _dcibImageURL,+                  ("maskColorArgb" .=) <$> _dcibMaskColorArgb])++--+-- /See:/ 'volume' smart constructor.+data Volume =+  Volume'+    { _vvUserInfo        :: !(Maybe VolumeUserInfo)+    , _vvEtag            :: !(Maybe Text)+    , _vvAccessInfo      :: !(Maybe VolumeAccessInfo)+    , _vvKind            :: !Text+    , _vvSearchInfo      :: !(Maybe VolumeSearchInfo)+    , _vvSelfLink        :: !(Maybe Text)+    , _vvLayerInfo       :: !(Maybe VolumeLayerInfo)+    , _vvSaleInfo        :: !(Maybe VolumeSaleInfo)+    , _vvId              :: !(Maybe Text)+    , _vvRecommendedInfo :: !(Maybe VolumeRecommendedInfo)+    , _vvVolumeInfo      :: !(Maybe VolumeVolumeInfo)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Volume' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vvUserInfo'+--+-- * 'vvEtag'+--+-- * 'vvAccessInfo'+--+-- * 'vvKind'+--+-- * 'vvSearchInfo'+--+-- * 'vvSelfLink'+--+-- * 'vvLayerInfo'+--+-- * 'vvSaleInfo'+--+-- * 'vvId'+--+-- * 'vvRecommendedInfo'+--+-- * 'vvVolumeInfo'+volume+    :: Volume+volume =+  Volume'+    { _vvUserInfo = Nothing+    , _vvEtag = Nothing+    , _vvAccessInfo = Nothing+    , _vvKind = "books#volume"+    , _vvSearchInfo = Nothing+    , _vvSelfLink = Nothing+    , _vvLayerInfo = Nothing+    , _vvSaleInfo = Nothing+    , _vvId = Nothing+    , _vvRecommendedInfo = Nothing+    , _vvVolumeInfo = Nothing+    }+++-- | User specific information related to this volume. (e.g. page this user+-- last read or whether they purchased this book)+vvUserInfo :: Lens' Volume (Maybe VolumeUserInfo)+vvUserInfo+  = lens _vvUserInfo (\ s a -> s{_vvUserInfo = a})++-- | Opaque identifier for a specific version of a volume resource. (In LITE+-- projection)+vvEtag :: Lens' Volume (Maybe Text)+vvEtag = lens _vvEtag (\ s a -> s{_vvEtag = a})++-- | Any information about a volume related to reading or obtaining that+-- volume text. This information can depend on country (books may be public+-- domain in one country but not in another, e.g.).+vvAccessInfo :: Lens' Volume (Maybe VolumeAccessInfo)+vvAccessInfo+  = lens _vvAccessInfo (\ s a -> s{_vvAccessInfo = a})++-- | Resource type for a volume. (In LITE projection.)+vvKind :: Lens' Volume Text+vvKind = lens _vvKind (\ s a -> s{_vvKind = a})++-- | Search result information related to this volume.+vvSearchInfo :: Lens' Volume (Maybe VolumeSearchInfo)+vvSearchInfo+  = lens _vvSearchInfo (\ s a -> s{_vvSearchInfo = a})++-- | URL to this resource. (In LITE projection.)+vvSelfLink :: Lens' Volume (Maybe Text)+vvSelfLink+  = lens _vvSelfLink (\ s a -> s{_vvSelfLink = a})++-- | What layers exist in this volume and high level information about them.+vvLayerInfo :: Lens' Volume (Maybe VolumeLayerInfo)+vvLayerInfo+  = lens _vvLayerInfo (\ s a -> s{_vvLayerInfo = a})++-- | Any information about a volume related to the eBookstore and\/or+-- purchaseability. This information can depend on the country where the+-- request originates from (i.e. books may not be for sale in certain+-- countries).+vvSaleInfo :: Lens' Volume (Maybe VolumeSaleInfo)+vvSaleInfo+  = lens _vvSaleInfo (\ s a -> s{_vvSaleInfo = a})++-- | Unique identifier for a volume. (In LITE projection.)+vvId :: Lens' Volume (Maybe Text)+vvId = lens _vvId (\ s a -> s{_vvId = a})++-- | Recommendation related information for this volume.+vvRecommendedInfo :: Lens' Volume (Maybe VolumeRecommendedInfo)+vvRecommendedInfo+  = lens _vvRecommendedInfo+      (\ s a -> s{_vvRecommendedInfo = a})++-- | General volume information.+vvVolumeInfo :: Lens' Volume (Maybe VolumeVolumeInfo)+vvVolumeInfo+  = lens _vvVolumeInfo (\ s a -> s{_vvVolumeInfo = a})++instance FromJSON Volume where+        parseJSON+          = withObject "Volume"+              (\ o ->+                 Volume' <$>+                   (o .:? "userInfo") <*> (o .:? "etag") <*>+                     (o .:? "accessInfo")+                     <*> (o .:? "kind" .!= "books#volume")+                     <*> (o .:? "searchInfo")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "layerInfo")+                     <*> (o .:? "saleInfo")+                     <*> (o .:? "id")+                     <*> (o .:? "recommendedInfo")+                     <*> (o .:? "volumeInfo"))++instance ToJSON Volume where+        toJSON Volume'{..}+          = object+              (catMaybes+                 [("userInfo" .=) <$> _vvUserInfo,+                  ("etag" .=) <$> _vvEtag,+                  ("accessInfo" .=) <$> _vvAccessInfo,+                  Just ("kind" .= _vvKind),+                  ("searchInfo" .=) <$> _vvSearchInfo,+                  ("selfLink" .=) <$> _vvSelfLink,+                  ("layerInfo" .=) <$> _vvLayerInfo,+                  ("saleInfo" .=) <$> _vvSaleInfo, ("id" .=) <$> _vvId,+                  ("recommendedInfo" .=) <$> _vvRecommendedInfo,+                  ("volumeInfo" .=) <$> _vvVolumeInfo])++--+-- /See:/ 'geolayerDataGeoBoundaryItemItem' smart constructor.+data GeolayerDataGeoBoundaryItemItem =+  GeolayerDataGeoBoundaryItemItem'+    { _gdgbiiLatitude  :: !(Maybe (Textual Word32))+    , _gdgbiiLongitude :: !(Maybe (Textual Word32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataGeoBoundaryItemItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdgbiiLatitude'+--+-- * 'gdgbiiLongitude'+geolayerDataGeoBoundaryItemItem+    :: GeolayerDataGeoBoundaryItemItem+geolayerDataGeoBoundaryItemItem =+  GeolayerDataGeoBoundaryItemItem'+    {_gdgbiiLatitude = Nothing, _gdgbiiLongitude = Nothing}+++gdgbiiLatitude :: Lens' GeolayerDataGeoBoundaryItemItem (Maybe Word32)+gdgbiiLatitude+  = lens _gdgbiiLatitude+      (\ s a -> s{_gdgbiiLatitude = a})+      . mapping _Coerce++gdgbiiLongitude :: Lens' GeolayerDataGeoBoundaryItemItem (Maybe Word32)+gdgbiiLongitude+  = lens _gdgbiiLongitude+      (\ s a -> s{_gdgbiiLongitude = a})+      . mapping _Coerce++instance FromJSON GeolayerDataGeoBoundaryItemItem+         where+        parseJSON+          = withObject "GeolayerDataGeoBoundaryItemItem"+              (\ o ->+                 GeolayerDataGeoBoundaryItemItem' <$>+                   (o .:? "latitude") <*> (o .:? "longitude"))++instance ToJSON GeolayerDataGeoBoundaryItemItem where+        toJSON GeolayerDataGeoBoundaryItemItem'{..}+          = object+              (catMaybes+                 [("latitude" .=) <$> _gdgbiiLatitude,+                  ("longitude" .=) <$> _gdgbiiLongitude])++--+-- /See:/ 'series' smart constructor.+data Series =+  Series'+    { _sKind   :: !Text+    , _sSeries :: !(Maybe [SeriesSeriesItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Series' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sKind'+--+-- * 'sSeries'+series+    :: Series+series = Series' {_sKind = "books#series", _sSeries = Nothing}+++-- | Resource type.+sKind :: Lens' Series Text+sKind = lens _sKind (\ s a -> s{_sKind = a})++sSeries :: Lens' Series [SeriesSeriesItem]+sSeries+  = lens _sSeries (\ s a -> s{_sSeries = a}) . _Default+      . _Coerce++instance FromJSON Series where+        parseJSON+          = withObject "Series"+              (\ o ->+                 Series' <$>+                   (o .:? "kind" .!= "books#series") <*>+                     (o .:? "series" .!= mempty))++instance ToJSON Series where+        toJSON Series'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _sKind),+                  ("series" .=) <$> _sSeries])++--+-- /See:/ 'offersItemsItemItemsItem' smart constructor.+data OffersItemsItemItemsItem =+  OffersItemsItemItemsItem'+    { _oiiiiCanonicalVolumeLink :: !(Maybe Text)+    , _oiiiiCoverURL            :: !(Maybe Text)+    , _oiiiiVolumeId            :: !(Maybe Text)+    , _oiiiiAuthor              :: !(Maybe Text)+    , _oiiiiTitle               :: !(Maybe Text)+    , _oiiiiDescription         :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'OffersItemsItemItemsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oiiiiCanonicalVolumeLink'+--+-- * 'oiiiiCoverURL'+--+-- * 'oiiiiVolumeId'+--+-- * 'oiiiiAuthor'+--+-- * 'oiiiiTitle'+--+-- * 'oiiiiDescription'+offersItemsItemItemsItem+    :: OffersItemsItemItemsItem+offersItemsItemItemsItem =+  OffersItemsItemItemsItem'+    { _oiiiiCanonicalVolumeLink = Nothing+    , _oiiiiCoverURL = Nothing+    , _oiiiiVolumeId = Nothing+    , _oiiiiAuthor = Nothing+    , _oiiiiTitle = Nothing+    , _oiiiiDescription = Nothing+    }+++oiiiiCanonicalVolumeLink :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiCanonicalVolumeLink+  = lens _oiiiiCanonicalVolumeLink+      (\ s a -> s{_oiiiiCanonicalVolumeLink = a})++oiiiiCoverURL :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiCoverURL+  = lens _oiiiiCoverURL+      (\ s a -> s{_oiiiiCoverURL = a})++oiiiiVolumeId :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiVolumeId+  = lens _oiiiiVolumeId+      (\ s a -> s{_oiiiiVolumeId = a})++oiiiiAuthor :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiAuthor+  = lens _oiiiiAuthor (\ s a -> s{_oiiiiAuthor = a})++oiiiiTitle :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiTitle+  = lens _oiiiiTitle (\ s a -> s{_oiiiiTitle = a})++oiiiiDescription :: Lens' OffersItemsItemItemsItem (Maybe Text)+oiiiiDescription+  = lens _oiiiiDescription+      (\ s a -> s{_oiiiiDescription = a})++instance FromJSON OffersItemsItemItemsItem where+        parseJSON+          = withObject "OffersItemsItemItemsItem"+              (\ o ->+                 OffersItemsItemItemsItem' <$>+                   (o .:? "canonicalVolumeLink") <*> (o .:? "coverUrl")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "author")+                     <*> (o .:? "title")+                     <*> (o .:? "description"))++instance ToJSON OffersItemsItemItemsItem where+        toJSON OffersItemsItemItemsItem'{..}+          = object+              (catMaybes+                 [("canonicalVolumeLink" .=) <$>+                    _oiiiiCanonicalVolumeLink,+                  ("coverUrl" .=) <$> _oiiiiCoverURL,+                  ("volumeId" .=) <$> _oiiiiVolumeId,+                  ("author" .=) <$> _oiiiiAuthor,+                  ("title" .=) <$> _oiiiiTitle,+                  ("description" .=) <$> _oiiiiDescription])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource' smart constructor.+data DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource =+  DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'+    { _dddwisidieisURL         :: !(Maybe Text)+    , _dddwisidieisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisidieisURL'+--+-- * 'dddwisidieisAttribution'+dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource+    :: DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource+dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource =+  DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'+    {_dddwisidieisURL = Nothing, _dddwisidieisAttribution = Nothing}+++dddwisidieisURL :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource (Maybe Text)+dddwisidieisURL+  = lens _dddwisidieisURL+      (\ s a -> s{_dddwisidieisURL = a})++dddwisidieisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource (Maybe Text)+dddwisidieisAttribution+  = lens _dddwisidieisAttribution+      (\ s a -> s{_dddwisidieisAttribution = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'+                   <$> (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwisidieisURL,+                  ("attribution" .=) <$> _dddwisidieisAttribution])++--+-- /See:/ 'geolayerDataCommon' smart constructor.+data GeolayerDataCommon =+  GeolayerDataCommon'+    { _gdcSnippet         :: !(Maybe Text)+    , _gdcSnippetURL      :: !(Maybe Text)+    , _gdcLang            :: !(Maybe Text)+    , _gdcTitle           :: !(Maybe Text)+    , _gdcPreviewImageURL :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataCommon' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdcSnippet'+--+-- * 'gdcSnippetURL'+--+-- * 'gdcLang'+--+-- * 'gdcTitle'+--+-- * 'gdcPreviewImageURL'+geolayerDataCommon+    :: GeolayerDataCommon+geolayerDataCommon =+  GeolayerDataCommon'+    { _gdcSnippet = Nothing+    , _gdcSnippetURL = Nothing+    , _gdcLang = Nothing+    , _gdcTitle = Nothing+    , _gdcPreviewImageURL = Nothing+    }+++-- | The description for this location.+gdcSnippet :: Lens' GeolayerDataCommon (Maybe Text)+gdcSnippet+  = lens _gdcSnippet (\ s a -> s{_gdcSnippet = a})++-- | The URL for information for this location. Ex: wikipedia link.+gdcSnippetURL :: Lens' GeolayerDataCommon (Maybe Text)+gdcSnippetURL+  = lens _gdcSnippetURL+      (\ s a -> s{_gdcSnippetURL = a})++-- | The language of the information url and description.+gdcLang :: Lens' GeolayerDataCommon (Maybe Text)+gdcLang = lens _gdcLang (\ s a -> s{_gdcLang = a})++-- | The display title and localized canonical name to use when searching for+-- this entity on Google search.+gdcTitle :: Lens' GeolayerDataCommon (Maybe Text)+gdcTitle = lens _gdcTitle (\ s a -> s{_gdcTitle = a})++-- | The URL for the preview image information.+gdcPreviewImageURL :: Lens' GeolayerDataCommon (Maybe Text)+gdcPreviewImageURL+  = lens _gdcPreviewImageURL+      (\ s a -> s{_gdcPreviewImageURL = a})++instance FromJSON GeolayerDataCommon where+        parseJSON+          = withObject "GeolayerDataCommon"+              (\ o ->+                 GeolayerDataCommon' <$>+                   (o .:? "snippet") <*> (o .:? "snippetUrl") <*>+                     (o .:? "lang")+                     <*> (o .:? "title")+                     <*> (o .:? "previewImageUrl"))++instance ToJSON GeolayerDataCommon where+        toJSON GeolayerDataCommon'{..}+          = object+              (catMaybes+                 [("snippet" .=) <$> _gdcSnippet,+                  ("snippetUrl" .=) <$> _gdcSnippetURL,+                  ("lang" .=) <$> _gdcLang, ("title" .=) <$> _gdcTitle,+                  ("previewImageUrl" .=) <$> _gdcPreviewImageURL])++--+-- /See:/ 'geolayerDataGeo' smart constructor.+data GeolayerDataGeo =+  GeolayerDataGeo'+    { _gdgMapType     :: !(Maybe Text)+    , _gdgCachePolicy :: !(Maybe Text)+    , _gdgViewport    :: !(Maybe GeolayerDataGeoViewport)+    , _gdgBoundary    :: !(Maybe [[GeolayerDataGeoBoundaryItemItem]])+    , _gdgLatitude    :: !(Maybe (Textual Double))+    , _gdgZoom        :: !(Maybe (Textual Int32))+    , _gdgCountryCode :: !(Maybe Text)+    , _gdgLongitude   :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataGeo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdgMapType'+--+-- * 'gdgCachePolicy'+--+-- * 'gdgViewport'+--+-- * 'gdgBoundary'+--+-- * 'gdgLatitude'+--+-- * 'gdgZoom'+--+-- * 'gdgCountryCode'+--+-- * 'gdgLongitude'+geolayerDataGeo+    :: GeolayerDataGeo+geolayerDataGeo =+  GeolayerDataGeo'+    { _gdgMapType = Nothing+    , _gdgCachePolicy = Nothing+    , _gdgViewport = Nothing+    , _gdgBoundary = Nothing+    , _gdgLatitude = Nothing+    , _gdgZoom = Nothing+    , _gdgCountryCode = Nothing+    , _gdgLongitude = Nothing+    }+++-- | The type of map that should be used for this location. EX: HYBRID,+-- ROADMAP, SATELLITE, TERRAIN+gdgMapType :: Lens' GeolayerDataGeo (Maybe Text)+gdgMapType+  = lens _gdgMapType (\ s a -> s{_gdgMapType = a})++-- | The cache policy active for this data. EX: UNRESTRICTED, RESTRICTED,+-- NEVER+gdgCachePolicy :: Lens' GeolayerDataGeo (Maybe Text)+gdgCachePolicy+  = lens _gdgCachePolicy+      (\ s a -> s{_gdgCachePolicy = a})++-- | The viewport for showing this location. This is a latitude, longitude+-- rectangle.+gdgViewport :: Lens' GeolayerDataGeo (Maybe GeolayerDataGeoViewport)+gdgViewport+  = lens _gdgViewport (\ s a -> s{_gdgViewport = a})++-- | The boundary of the location as a set of loops containing pairs of+-- latitude, longitude coordinates.+gdgBoundary :: Lens' GeolayerDataGeo [[GeolayerDataGeoBoundaryItemItem]]+gdgBoundary+  = lens _gdgBoundary (\ s a -> s{_gdgBoundary = a}) .+      _Default+      . _Coerce++-- | The latitude of the location.+gdgLatitude :: Lens' GeolayerDataGeo (Maybe Double)+gdgLatitude+  = lens _gdgLatitude (\ s a -> s{_gdgLatitude = a}) .+      mapping _Coerce++-- | The Zoom level to use for the map. Zoom levels between 0 (the lowest+-- zoom level, in which the entire world can be seen on one map) to 21++-- (down to individual buildings). See:+-- https:\/\/developers.google.com\/maps\/documentation\/staticmaps\/#Zoomlevels+gdgZoom :: Lens' GeolayerDataGeo (Maybe Int32)+gdgZoom+  = lens _gdgZoom (\ s a -> s{_gdgZoom = a}) .+      mapping _Coerce++-- | The country code of the location.+gdgCountryCode :: Lens' GeolayerDataGeo (Maybe Text)+gdgCountryCode+  = lens _gdgCountryCode+      (\ s a -> s{_gdgCountryCode = a})++-- | The longitude of the location.+gdgLongitude :: Lens' GeolayerDataGeo (Maybe Double)+gdgLongitude+  = lens _gdgLongitude (\ s a -> s{_gdgLongitude = a})+      . mapping _Coerce++instance FromJSON GeolayerDataGeo where+        parseJSON+          = withObject "GeolayerDataGeo"+              (\ o ->+                 GeolayerDataGeo' <$>+                   (o .:? "mapType") <*> (o .:? "cachePolicy") <*>+                     (o .:? "viewport")+                     <*> (o .:? "boundary" .!= mempty)+                     <*> (o .:? "latitude")+                     <*> (o .:? "zoom")+                     <*> (o .:? "countryCode")+                     <*> (o .:? "longitude"))++instance ToJSON GeolayerDataGeo where+        toJSON GeolayerDataGeo'{..}+          = object+              (catMaybes+                 [("mapType" .=) <$> _gdgMapType,+                  ("cachePolicy" .=) <$> _gdgCachePolicy,+                  ("viewport" .=) <$> _gdgViewport,+                  ("boundary" .=) <$> _gdgBoundary,+                  ("latitude" .=) <$> _gdgLatitude,+                  ("zoom" .=) <$> _gdgZoom,+                  ("countryCode" .=) <$> _gdgCountryCode,+                  ("longitude" .=) <$> _gdgLongitude])++--+-- /See:/ 'dictlayerDataDictWordsItem' smart constructor.+data DictlayerDataDictWordsItem =+  DictlayerDataDictWordsItem'+    { _dddwiSenses      :: !(Maybe [DictlayerDataDictWordsItemSensesItem])+    , _dddwiSource      :: !(Maybe DictlayerDataDictWordsItemSource)+    , _dddwiDerivatives :: !(Maybe [DictlayerDataDictWordsItemDerivativesItem])+    , _dddwiExamples    :: !(Maybe [DictlayerDataDictWordsItemExamplesItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwiSenses'+--+-- * 'dddwiSource'+--+-- * 'dddwiDerivatives'+--+-- * 'dddwiExamples'+dictlayerDataDictWordsItem+    :: DictlayerDataDictWordsItem+dictlayerDataDictWordsItem =+  DictlayerDataDictWordsItem'+    { _dddwiSenses = Nothing+    , _dddwiSource = Nothing+    , _dddwiDerivatives = Nothing+    , _dddwiExamples = Nothing+    }+++dddwiSenses :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemSensesItem]+dddwiSenses+  = lens _dddwiSenses (\ s a -> s{_dddwiSenses = a}) .+      _Default+      . _Coerce++-- | The words with different meanings but not related words, e.g. \"go\"+-- (game) and \"go\" (verb).+dddwiSource :: Lens' DictlayerDataDictWordsItem (Maybe DictlayerDataDictWordsItemSource)+dddwiSource+  = lens _dddwiSource (\ s a -> s{_dddwiSource = a})++dddwiDerivatives :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemDerivativesItem]+dddwiDerivatives+  = lens _dddwiDerivatives+      (\ s a -> s{_dddwiDerivatives = a})+      . _Default+      . _Coerce++dddwiExamples :: Lens' DictlayerDataDictWordsItem [DictlayerDataDictWordsItemExamplesItem]+dddwiExamples+  = lens _dddwiExamples+      (\ s a -> s{_dddwiExamples = a})+      . _Default+      . _Coerce++instance FromJSON DictlayerDataDictWordsItem where+        parseJSON+          = withObject "DictlayerDataDictWordsItem"+              (\ o ->+                 DictlayerDataDictWordsItem' <$>+                   (o .:? "senses" .!= mempty) <*> (o .:? "source") <*>+                     (o .:? "derivatives" .!= mempty)+                     <*> (o .:? "examples" .!= mempty))++instance ToJSON DictlayerDataDictWordsItem where+        toJSON DictlayerDataDictWordsItem'{..}+          = object+              (catMaybes+                 [("senses" .=) <$> _dddwiSenses,+                  ("source" .=) <$> _dddwiSource,+                  ("derivatives" .=) <$> _dddwiDerivatives,+                  ("examples" .=) <$> _dddwiExamples])++--+-- /See:/ 'categoryItemsItem' smart constructor.+data CategoryItemsItem =+  CategoryItemsItem'+    { _ciiName       :: !(Maybe Text)+    , _ciiCategoryId :: !(Maybe Text)+    , _ciiBadgeURL   :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CategoryItemsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ciiName'+--+-- * 'ciiCategoryId'+--+-- * 'ciiBadgeURL'+categoryItemsItem+    :: CategoryItemsItem+categoryItemsItem =+  CategoryItemsItem'+    {_ciiName = Nothing, _ciiCategoryId = Nothing, _ciiBadgeURL = Nothing}+++ciiName :: Lens' CategoryItemsItem (Maybe Text)+ciiName = lens _ciiName (\ s a -> s{_ciiName = a})++ciiCategoryId :: Lens' CategoryItemsItem (Maybe Text)+ciiCategoryId+  = lens _ciiCategoryId+      (\ s a -> s{_ciiCategoryId = a})++ciiBadgeURL :: Lens' CategoryItemsItem (Maybe Text)+ciiBadgeURL+  = lens _ciiBadgeURL (\ s a -> s{_ciiBadgeURL = a})++instance FromJSON CategoryItemsItem where+        parseJSON+          = withObject "CategoryItemsItem"+              (\ o ->+                 CategoryItemsItem' <$>+                   (o .:? "name") <*> (o .:? "categoryId") <*>+                     (o .:? "badgeUrl"))++instance ToJSON CategoryItemsItem where+        toJSON CategoryItemsItem'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _ciiName,+                  ("categoryId" .=) <$> _ciiCategoryId,+                  ("badgeUrl" .=) <$> _ciiBadgeURL])++--+-- /See:/ 'dictlayerDataDictWordsItemDerivativesItemSource' smart constructor.+data DictlayerDataDictWordsItemDerivativesItemSource =+  DictlayerDataDictWordsItemDerivativesItemSource'+    { _dddwidisURL         :: !(Maybe Text)+    , _dddwidisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemDerivativesItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwidisURL'+--+-- * 'dddwidisAttribution'+dictlayerDataDictWordsItemDerivativesItemSource+    :: DictlayerDataDictWordsItemDerivativesItemSource+dictlayerDataDictWordsItemDerivativesItemSource =+  DictlayerDataDictWordsItemDerivativesItemSource'+    {_dddwidisURL = Nothing, _dddwidisAttribution = Nothing}+++dddwidisURL :: Lens' DictlayerDataDictWordsItemDerivativesItemSource (Maybe Text)+dddwidisURL+  = lens _dddwidisURL (\ s a -> s{_dddwidisURL = a})++dddwidisAttribution :: Lens' DictlayerDataDictWordsItemDerivativesItemSource (Maybe Text)+dddwidisAttribution+  = lens _dddwidisAttribution+      (\ s a -> s{_dddwidisAttribution = a})++instance FromJSON+           DictlayerDataDictWordsItemDerivativesItemSource+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemDerivativesItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemDerivativesItemSource' <$>+                   (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON+           DictlayerDataDictWordsItemDerivativesItemSource+         where+        toJSON+          DictlayerDataDictWordsItemDerivativesItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwidisURL,+                  ("attribution" .=) <$> _dddwidisAttribution])++--+-- /See:/ 'geolayerData' smart constructor.+data GeolayerData =+  GeolayerData'+    { _gdKind   :: !Text+    , _gdGeo    :: !(Maybe GeolayerDataGeo)+    , _gdCommon :: !(Maybe GeolayerDataCommon)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdKind'+--+-- * 'gdGeo'+--+-- * 'gdCommon'+geolayerData+    :: GeolayerData+geolayerData =+  GeolayerData'+    {_gdKind = "books#geolayerdata", _gdGeo = Nothing, _gdCommon = Nothing}+++gdKind :: Lens' GeolayerData Text+gdKind = lens _gdKind (\ s a -> s{_gdKind = a})++gdGeo :: Lens' GeolayerData (Maybe GeolayerDataGeo)+gdGeo = lens _gdGeo (\ s a -> s{_gdGeo = a})++gdCommon :: Lens' GeolayerData (Maybe GeolayerDataCommon)+gdCommon = lens _gdCommon (\ s a -> s{_gdCommon = a})++instance FromJSON GeolayerData where+        parseJSON+          = withObject "GeolayerData"+              (\ o ->+                 GeolayerData' <$>+                   (o .:? "kind" .!= "books#geolayerdata") <*>+                     (o .:? "geo")+                     <*> (o .:? "common"))++instance ToJSON GeolayerData where+        toJSON GeolayerData'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _gdKind), ("geo" .=) <$> _gdGeo,+                  ("common" .=) <$> _gdCommon])++-- | The words with different meanings but not related words, e.g. \"go\"+-- (game) and \"go\" (verb).+--+-- /See:/ 'dictlayerDataDictWordsItemSource' smart constructor.+data DictlayerDataDictWordsItemSource =+  DictlayerDataDictWordsItemSource'+    { _dddwisURL         :: !(Maybe Text)+    , _dddwisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisURL'+--+-- * 'dddwisAttribution'+dictlayerDataDictWordsItemSource+    :: DictlayerDataDictWordsItemSource+dictlayerDataDictWordsItemSource =+  DictlayerDataDictWordsItemSource'+    {_dddwisURL = Nothing, _dddwisAttribution = Nothing}+++dddwisURL :: Lens' DictlayerDataDictWordsItemSource (Maybe Text)+dddwisURL+  = lens _dddwisURL (\ s a -> s{_dddwisURL = a})++dddwisAttribution :: Lens' DictlayerDataDictWordsItemSource (Maybe Text)+dddwisAttribution+  = lens _dddwisAttribution+      (\ s a -> s{_dddwisAttribution = a})++instance FromJSON DictlayerDataDictWordsItemSource+         where+        parseJSON+          = withObject "DictlayerDataDictWordsItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemSource' <$>+                   (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON DictlayerDataDictWordsItemSource+         where+        toJSON DictlayerDataDictWordsItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwisURL,+                  ("attribution" .=) <$> _dddwisAttribution])++--+-- /See:/ 'dictlayerDataDictWordsItemDerivativesItem' smart constructor.+data DictlayerDataDictWordsItemDerivativesItem =+  DictlayerDataDictWordsItemDerivativesItem'+    { _dddwidiText   :: !(Maybe Text)+    , _dddwidiSource :: !(Maybe DictlayerDataDictWordsItemDerivativesItemSource)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemDerivativesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwidiText'+--+-- * 'dddwidiSource'+dictlayerDataDictWordsItemDerivativesItem+    :: DictlayerDataDictWordsItemDerivativesItem+dictlayerDataDictWordsItemDerivativesItem =+  DictlayerDataDictWordsItemDerivativesItem'+    {_dddwidiText = Nothing, _dddwidiSource = Nothing}+++dddwidiText :: Lens' DictlayerDataDictWordsItemDerivativesItem (Maybe Text)+dddwidiText+  = lens _dddwidiText (\ s a -> s{_dddwidiText = a})++dddwidiSource :: Lens' DictlayerDataDictWordsItemDerivativesItem (Maybe DictlayerDataDictWordsItemDerivativesItemSource)+dddwidiSource+  = lens _dddwidiSource+      (\ s a -> s{_dddwidiSource = a})++instance FromJSON+           DictlayerDataDictWordsItemDerivativesItem+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemDerivativesItem"+              (\ o ->+                 DictlayerDataDictWordsItemDerivativesItem' <$>+                   (o .:? "text") <*> (o .:? "source"))++instance ToJSON+           DictlayerDataDictWordsItemDerivativesItem+         where+        toJSON DictlayerDataDictWordsItemDerivativesItem'{..}+          = object+              (catMaybes+                 [("text" .=) <$> _dddwidiText,+                  ("source" .=) <$> _dddwidiSource])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem' smart constructor.+data DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem =+  DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'+    { _dddwisidieiText   :: !(Maybe Text)+    , _dddwisidieiSource :: !(Maybe DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisidieiText'+--+-- * 'dddwisidieiSource'+dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem+    :: DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem+dictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem =+  DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'+    {_dddwisidieiText = Nothing, _dddwisidieiSource = Nothing}+++dddwisidieiText :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem (Maybe Text)+dddwisidieiText+  = lens _dddwisidieiText+      (\ s a -> s{_dddwisidieiText = a})++dddwisidieiSource :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem (Maybe DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItemSource)+dddwisidieiSource+  = lens _dddwisidieiSource+      (\ s a -> s{_dddwisidieiSource = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'+                   <$> (o .:? "text") <*> (o .:? "source"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem'{..}+          = object+              (catMaybes+                 [("text" .=) <$> _dddwisidieiText,+                  ("source" .=) <$> _dddwisidieiSource])++--+-- /See:/ 'userSettingsNotificationRewardExpirations' smart constructor.+newtype UserSettingsNotificationRewardExpirations =+  UserSettingsNotificationRewardExpirations'+    { _usnreOptedState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotificationRewardExpirations' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnreOptedState'+userSettingsNotificationRewardExpirations+    :: UserSettingsNotificationRewardExpirations+userSettingsNotificationRewardExpirations =+  UserSettingsNotificationRewardExpirations' {_usnreOptedState = Nothing}+++usnreOptedState :: Lens' UserSettingsNotificationRewardExpirations (Maybe Text)+usnreOptedState+  = lens _usnreOptedState+      (\ s a -> s{_usnreOptedState = a})++instance FromJSON+           UserSettingsNotificationRewardExpirations+         where+        parseJSON+          = withObject+              "UserSettingsNotificationRewardExpirations"+              (\ o ->+                 UserSettingsNotificationRewardExpirations' <$>+                   (o .:? "opted_state"))++instance ToJSON+           UserSettingsNotificationRewardExpirations+         where+        toJSON UserSettingsNotificationRewardExpirations'{..}+          = object+              (catMaybes [("opted_state" .=) <$> _usnreOptedState])++--+-- /See:/ 'dictlayerData' smart constructor.+data DictlayerData =+  DictlayerData'+    { _ddKind   :: !Text+    , _ddDict   :: !(Maybe DictlayerDataDict)+    , _ddCommon :: !(Maybe DictlayerDataCommon)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddKind'+--+-- * 'ddDict'+--+-- * 'ddCommon'+dictlayerData+    :: DictlayerData+dictlayerData =+  DictlayerData'+    {_ddKind = "books#dictlayerdata", _ddDict = Nothing, _ddCommon = Nothing}+++ddKind :: Lens' DictlayerData Text+ddKind = lens _ddKind (\ s a -> s{_ddKind = a})++ddDict :: Lens' DictlayerData (Maybe DictlayerDataDict)+ddDict = lens _ddDict (\ s a -> s{_ddDict = a})++ddCommon :: Lens' DictlayerData (Maybe DictlayerDataCommon)+ddCommon = lens _ddCommon (\ s a -> s{_ddCommon = a})++instance FromJSON DictlayerData where+        parseJSON+          = withObject "DictlayerData"+              (\ o ->+                 DictlayerData' <$>+                   (o .:? "kind" .!= "books#dictlayerdata") <*>+                     (o .:? "dict")+                     <*> (o .:? "common"))++instance ToJSON DictlayerData where+        toJSON DictlayerData'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _ddKind), ("dict" .=) <$> _ddDict,+                  ("common" .=) <$> _ddCommon])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemSynonymsItemSource' smart constructor.+data DictlayerDataDictWordsItemSensesItemSynonymsItemSource =+  DictlayerDataDictWordsItemSensesItemSynonymsItemSource'+    { _dddwisisisURL         :: !(Maybe Text)+    , _dddwisisisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSynonymsItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisisisURL'+--+-- * 'dddwisisisAttribution'+dictlayerDataDictWordsItemSensesItemSynonymsItemSource+    :: DictlayerDataDictWordsItemSensesItemSynonymsItemSource+dictlayerDataDictWordsItemSensesItemSynonymsItemSource =+  DictlayerDataDictWordsItemSensesItemSynonymsItemSource'+    {_dddwisisisURL = Nothing, _dddwisisisAttribution = Nothing}+++dddwisisisURL :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItemSource (Maybe Text)+dddwisisisURL+  = lens _dddwisisisURL+      (\ s a -> s{_dddwisisisURL = a})++dddwisisisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItemSource (Maybe Text)+dddwisisisAttribution+  = lens _dddwisisisAttribution+      (\ s a -> s{_dddwisisisAttribution = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemSynonymsItemSource+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemSynonymsItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemSynonymsItemSource'+                   <$> (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemSynonymsItemSource+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemSynonymsItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwisisisURL,+                  ("attribution" .=) <$> _dddwisisisAttribution])++--+-- /See:/ 'seriesmembership' smart constructor.+data Seriesmembership =+  Seriesmembership'+    { _serNextPageToken :: !(Maybe Text)+    , _serKind          :: !Text+    , _serMember        :: !(Maybe [Volume])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Seriesmembership' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'serNextPageToken'+--+-- * 'serKind'+--+-- * 'serMember'+seriesmembership+    :: Seriesmembership+seriesmembership =+  Seriesmembership'+    { _serNextPageToken = Nothing+    , _serKind = "books#series#membership"+    , _serMember = Nothing+    }+++serNextPageToken :: Lens' Seriesmembership (Maybe Text)+serNextPageToken+  = lens _serNextPageToken+      (\ s a -> s{_serNextPageToken = a})++-- | Resorce type.+serKind :: Lens' Seriesmembership Text+serKind = lens _serKind (\ s a -> s{_serKind = a})++serMember :: Lens' Seriesmembership [Volume]+serMember+  = lens _serMember (\ s a -> s{_serMember = a}) .+      _Default+      . _Coerce++instance FromJSON Seriesmembership where+        parseJSON+          = withObject "Seriesmembership"+              (\ o ->+                 Seriesmembership' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "books#series#membership")+                     <*> (o .:? "member" .!= mempty))++instance ToJSON Seriesmembership where+        toJSON Seriesmembership'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _serNextPageToken,+                  Just ("kind" .= _serKind),+                  ("member" .=) <$> _serMember])++--+-- /See:/ 'userSettingsNotification' smart constructor.+data UserSettingsNotification =+  UserSettingsNotification'+    { _usnRewardExpirations :: !(Maybe UserSettingsNotificationRewardExpirations)+    , _usnPriceDrop         :: !(Maybe UserSettingsNotificationPriceDrop)+    , _usnMatchMyInterests  :: !(Maybe UserSettingsNotificationMatchMyInterests)+    , _usnMoreFromAuthors   :: !(Maybe UserSettingsNotificationMoreFromAuthors)+    , _usnMoreFromSeries    :: !(Maybe UserSettingsNotificationMoreFromSeries)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnRewardExpirations'+--+-- * 'usnPriceDrop'+--+-- * 'usnMatchMyInterests'+--+-- * 'usnMoreFromAuthors'+--+-- * 'usnMoreFromSeries'+userSettingsNotification+    :: UserSettingsNotification+userSettingsNotification =+  UserSettingsNotification'+    { _usnRewardExpirations = Nothing+    , _usnPriceDrop = Nothing+    , _usnMatchMyInterests = Nothing+    , _usnMoreFromAuthors = Nothing+    , _usnMoreFromSeries = Nothing+    }+++usnRewardExpirations :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationRewardExpirations)+usnRewardExpirations+  = lens _usnRewardExpirations+      (\ s a -> s{_usnRewardExpirations = a})++usnPriceDrop :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationPriceDrop)+usnPriceDrop+  = lens _usnPriceDrop (\ s a -> s{_usnPriceDrop = a})++usnMatchMyInterests :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMatchMyInterests)+usnMatchMyInterests+  = lens _usnMatchMyInterests+      (\ s a -> s{_usnMatchMyInterests = a})++usnMoreFromAuthors :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMoreFromAuthors)+usnMoreFromAuthors+  = lens _usnMoreFromAuthors+      (\ s a -> s{_usnMoreFromAuthors = a})++usnMoreFromSeries :: Lens' UserSettingsNotification (Maybe UserSettingsNotificationMoreFromSeries)+usnMoreFromSeries+  = lens _usnMoreFromSeries+      (\ s a -> s{_usnMoreFromSeries = a})++instance FromJSON UserSettingsNotification where+        parseJSON+          = withObject "UserSettingsNotification"+              (\ o ->+                 UserSettingsNotification' <$>+                   (o .:? "rewardExpirations") <*> (o .:? "priceDrop")+                     <*> (o .:? "matchMyInterests")+                     <*> (o .:? "moreFromAuthors")+                     <*> (o .:? "moreFromSeries"))++instance ToJSON UserSettingsNotification where+        toJSON UserSettingsNotification'{..}+          = object+              (catMaybes+                 [("rewardExpirations" .=) <$> _usnRewardExpirations,+                  ("priceDrop" .=) <$> _usnPriceDrop,+                  ("matchMyInterests" .=) <$> _usnMatchMyInterests,+                  ("moreFromAuthors" .=) <$> _usnMoreFromAuthors,+                  ("moreFromSeries" .=) <$> _usnMoreFromSeries])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemSynonymsItem' smart constructor.+data DictlayerDataDictWordsItemSensesItemSynonymsItem =+  DictlayerDataDictWordsItemSensesItemSynonymsItem'+    { _dddwisisiText   :: !(Maybe Text)+    , _dddwisisiSource :: !(Maybe DictlayerDataDictWordsItemSensesItemSynonymsItemSource)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSynonymsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisisiText'+--+-- * 'dddwisisiSource'+dictlayerDataDictWordsItemSensesItemSynonymsItem+    :: DictlayerDataDictWordsItemSensesItemSynonymsItem+dictlayerDataDictWordsItemSensesItemSynonymsItem =+  DictlayerDataDictWordsItemSensesItemSynonymsItem'+    {_dddwisisiText = Nothing, _dddwisisiSource = Nothing}+++dddwisisiText :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItem (Maybe Text)+dddwisisiText+  = lens _dddwisisiText+      (\ s a -> s{_dddwisisiText = a})++dddwisisiSource :: Lens' DictlayerDataDictWordsItemSensesItemSynonymsItem (Maybe DictlayerDataDictWordsItemSensesItemSynonymsItemSource)+dddwisisiSource+  = lens _dddwisisiSource+      (\ s a -> s{_dddwisisiSource = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemSynonymsItem+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemSynonymsItem"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemSynonymsItem' <$>+                   (o .:? "text") <*> (o .:? "source"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemSynonymsItem+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemSynonymsItem'{..}+          = object+              (catMaybes+                 [("text" .=) <$> _dddwisisiText,+                  ("source" .=) <$> _dddwisisiSource])++--+-- /See:/ 'geolayerDataGeoViewportLo' smart constructor.+data GeolayerDataGeoViewportLo =+  GeolayerDataGeoViewportLo'+    { _gdgvlLatitude  :: !(Maybe (Textual Double))+    , _gdgvlLongitude :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataGeoViewportLo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdgvlLatitude'+--+-- * 'gdgvlLongitude'+geolayerDataGeoViewportLo+    :: GeolayerDataGeoViewportLo+geolayerDataGeoViewportLo =+  GeolayerDataGeoViewportLo'+    {_gdgvlLatitude = Nothing, _gdgvlLongitude = Nothing}+++gdgvlLatitude :: Lens' GeolayerDataGeoViewportLo (Maybe Double)+gdgvlLatitude+  = lens _gdgvlLatitude+      (\ s a -> s{_gdgvlLatitude = a})+      . mapping _Coerce++gdgvlLongitude :: Lens' GeolayerDataGeoViewportLo (Maybe Double)+gdgvlLongitude+  = lens _gdgvlLongitude+      (\ s a -> s{_gdgvlLongitude = a})+      . mapping _Coerce++instance FromJSON GeolayerDataGeoViewportLo where+        parseJSON+          = withObject "GeolayerDataGeoViewportLo"+              (\ o ->+                 GeolayerDataGeoViewportLo' <$>+                   (o .:? "latitude") <*> (o .:? "longitude"))++instance ToJSON GeolayerDataGeoViewportLo where+        toJSON GeolayerDataGeoViewportLo'{..}+          = object+              (catMaybes+                 [("latitude" .=) <$> _gdgvlLatitude,+                  ("longitude" .=) <$> _gdgvlLongitude])++-- | Offer list (=undiscounted) price in Micros.+--+-- /See:/ 'volumeSaleInfoOffersItemListPrice' smart constructor.+data VolumeSaleInfoOffersItemListPrice =+  VolumeSaleInfoOffersItemListPrice'+    { _vsioilpCurrencyCode   :: !(Maybe Text)+    , _vsioilpAmountInMicros :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoOffersItemListPrice' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsioilpCurrencyCode'+--+-- * 'vsioilpAmountInMicros'+volumeSaleInfoOffersItemListPrice+    :: VolumeSaleInfoOffersItemListPrice+volumeSaleInfoOffersItemListPrice =+  VolumeSaleInfoOffersItemListPrice'+    {_vsioilpCurrencyCode = Nothing, _vsioilpAmountInMicros = Nothing}+++vsioilpCurrencyCode :: Lens' VolumeSaleInfoOffersItemListPrice (Maybe Text)+vsioilpCurrencyCode+  = lens _vsioilpCurrencyCode+      (\ s a -> s{_vsioilpCurrencyCode = a})++vsioilpAmountInMicros :: Lens' VolumeSaleInfoOffersItemListPrice (Maybe Double)+vsioilpAmountInMicros+  = lens _vsioilpAmountInMicros+      (\ s a -> s{_vsioilpAmountInMicros = a})+      . mapping _Coerce++instance FromJSON VolumeSaleInfoOffersItemListPrice+         where+        parseJSON+          = withObject "VolumeSaleInfoOffersItemListPrice"+              (\ o ->+                 VolumeSaleInfoOffersItemListPrice' <$>+                   (o .:? "currencyCode") <*> (o .:? "amountInMicros"))++instance ToJSON VolumeSaleInfoOffersItemListPrice+         where+        toJSON VolumeSaleInfoOffersItemListPrice'{..}+          = object+              (catMaybes+                 [("currencyCode" .=) <$> _vsioilpCurrencyCode,+                  ("amountInMicros" .=) <$> _vsioilpAmountInMicros])++--+-- /See:/ 'downloadAccessRestriction' smart constructor.+data DownloadAccessRestriction =+  DownloadAccessRestriction'+    { _darJustAcquired       :: !(Maybe Bool)+    , _darSignature          :: !(Maybe Text)+    , _darKind               :: !Text+    , _darMaxDownloadDevices :: !(Maybe (Textual Int32))+    , _darDownloadsAcquired  :: !(Maybe (Textual Int32))+    , _darReasonCode         :: !(Maybe Text)+    , _darVolumeId           :: !(Maybe Text)+    , _darRestricted         :: !(Maybe Bool)+    , _darSource             :: !(Maybe Text)+    , _darDeviceAllowed      :: !(Maybe Bool)+    , _darMessage            :: !(Maybe Text)+    , _darNonce              :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DownloadAccessRestriction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'darJustAcquired'+--+-- * 'darSignature'+--+-- * 'darKind'+--+-- * 'darMaxDownloadDevices'+--+-- * 'darDownloadsAcquired'+--+-- * 'darReasonCode'+--+-- * 'darVolumeId'+--+-- * 'darRestricted'+--+-- * 'darSource'+--+-- * 'darDeviceAllowed'+--+-- * 'darMessage'+--+-- * 'darNonce'+downloadAccessRestriction+    :: DownloadAccessRestriction+downloadAccessRestriction =+  DownloadAccessRestriction'+    { _darJustAcquired = Nothing+    , _darSignature = Nothing+    , _darKind = "books#downloadAccessRestriction"+    , _darMaxDownloadDevices = Nothing+    , _darDownloadsAcquired = Nothing+    , _darReasonCode = Nothing+    , _darVolumeId = Nothing+    , _darRestricted = Nothing+    , _darSource = Nothing+    , _darDeviceAllowed = Nothing+    , _darMessage = Nothing+    , _darNonce = Nothing+    }+++-- | If deviceAllowed, whether access was just acquired with this request.+darJustAcquired :: Lens' DownloadAccessRestriction (Maybe Bool)+darJustAcquired+  = lens _darJustAcquired+      (\ s a -> s{_darJustAcquired = a})++-- | Response signature.+darSignature :: Lens' DownloadAccessRestriction (Maybe Text)+darSignature+  = lens _darSignature (\ s a -> s{_darSignature = a})++-- | Resource type.+darKind :: Lens' DownloadAccessRestriction Text+darKind = lens _darKind (\ s a -> s{_darKind = a})++-- | If restricted, the maximum number of content download licenses for this+-- volume.+darMaxDownloadDevices :: Lens' DownloadAccessRestriction (Maybe Int32)+darMaxDownloadDevices+  = lens _darMaxDownloadDevices+      (\ s a -> s{_darMaxDownloadDevices = a})+      . mapping _Coerce++-- | If restricted, the number of content download licenses already acquired+-- (including the requesting client, if licensed).+darDownloadsAcquired :: Lens' DownloadAccessRestriction (Maybe Int32)+darDownloadsAcquired+  = lens _darDownloadsAcquired+      (\ s a -> s{_darDownloadsAcquired = a})+      . mapping _Coerce++-- | Error\/warning reason code. Additional codes may be added in the future.+-- 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200+-- WARNING_USED_LAST_ACCESS+darReasonCode :: Lens' DownloadAccessRestriction (Maybe Text)+darReasonCode+  = lens _darReasonCode+      (\ s a -> s{_darReasonCode = a})++-- | Identifies the volume for which this entry applies.+darVolumeId :: Lens' DownloadAccessRestriction (Maybe Text)+darVolumeId+  = lens _darVolumeId (\ s a -> s{_darVolumeId = a})++-- | Whether this volume has any download access restrictions.+darRestricted :: Lens' DownloadAccessRestriction (Maybe Bool)+darRestricted+  = lens _darRestricted+      (\ s a -> s{_darRestricted = a})++-- | Client app identifier for verification. Download access and+-- client-validation only.+darSource :: Lens' DownloadAccessRestriction (Maybe Text)+darSource+  = lens _darSource (\ s a -> s{_darSource = a})++-- | If restricted, whether access is granted for this (user, device,+-- volume).+darDeviceAllowed :: Lens' DownloadAccessRestriction (Maybe Bool)+darDeviceAllowed+  = lens _darDeviceAllowed+      (\ s a -> s{_darDeviceAllowed = a})++-- | Error\/warning message.+darMessage :: Lens' DownloadAccessRestriction (Maybe Text)+darMessage+  = lens _darMessage (\ s a -> s{_darMessage = a})++-- | Client nonce for verification. Download access and client-validation+-- only.+darNonce :: Lens' DownloadAccessRestriction (Maybe Text)+darNonce = lens _darNonce (\ s a -> s{_darNonce = a})++instance FromJSON DownloadAccessRestriction where+        parseJSON+          = withObject "DownloadAccessRestriction"+              (\ o ->+                 DownloadAccessRestriction' <$>+                   (o .:? "justAcquired") <*> (o .:? "signature") <*>+                     (o .:? "kind" .!= "books#downloadAccessRestriction")+                     <*> (o .:? "maxDownloadDevices")+                     <*> (o .:? "downloadsAcquired")+                     <*> (o .:? "reasonCode")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "restricted")+                     <*> (o .:? "source")+                     <*> (o .:? "deviceAllowed")+                     <*> (o .:? "message")+                     <*> (o .:? "nonce"))++instance ToJSON DownloadAccessRestriction where+        toJSON DownloadAccessRestriction'{..}+          = object+              (catMaybes+                 [("justAcquired" .=) <$> _darJustAcquired,+                  ("signature" .=) <$> _darSignature,+                  Just ("kind" .= _darKind),+                  ("maxDownloadDevices" .=) <$> _darMaxDownloadDevices,+                  ("downloadsAcquired" .=) <$> _darDownloadsAcquired,+                  ("reasonCode" .=) <$> _darReasonCode,+                  ("volumeId" .=) <$> _darVolumeId,+                  ("restricted" .=) <$> _darRestricted,+                  ("source" .=) <$> _darSource,+                  ("deviceAllowed" .=) <$> _darDeviceAllowed,+                  ("message" .=) <$> _darMessage,+                  ("nonce" .=) <$> _darNonce])++--+-- /See:/ 'dictlayerDataCommon' smart constructor.+newtype DictlayerDataCommon =+  DictlayerDataCommon'+    { _ddcTitle :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataCommon' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddcTitle'+dictlayerDataCommon+    :: DictlayerDataCommon+dictlayerDataCommon = DictlayerDataCommon' {_ddcTitle = Nothing}+++-- | The display title and localized canonical name to use when searching for+-- this entity on Google search.+ddcTitle :: Lens' DictlayerDataCommon (Maybe Text)+ddcTitle = lens _ddcTitle (\ s a -> s{_ddcTitle = a})++instance FromJSON DictlayerDataCommon where+        parseJSON+          = withObject "DictlayerDataCommon"+              (\ o -> DictlayerDataCommon' <$> (o .:? "title"))++instance ToJSON DictlayerDataCommon where+        toJSON DictlayerDataCommon'{..}+          = object (catMaybes [("title" .=) <$> _ddcTitle])++--+-- /See:/ 'discoveryclustersClustersItem' smart constructor.+data DiscoveryclustersClustersItem =+  DiscoveryclustersClustersItem'+    { _dciBannerWithContentContainer :: !(Maybe DiscoveryclustersClustersItemBanner_with_content_container)+    , _dciUid                        :: !(Maybe Text)+    , _dciTotalVolumes               :: !(Maybe (Textual Int32))+    , _dciSubTitle                   :: !(Maybe Text)+    , _dciTitle                      :: !(Maybe Text)+    , _dciVolumes                    :: !(Maybe [Volume])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DiscoveryclustersClustersItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dciBannerWithContentContainer'+--+-- * 'dciUid'+--+-- * 'dciTotalVolumes'+--+-- * 'dciSubTitle'+--+-- * 'dciTitle'+--+-- * 'dciVolumes'+discoveryclustersClustersItem+    :: DiscoveryclustersClustersItem+discoveryclustersClustersItem =+  DiscoveryclustersClustersItem'+    { _dciBannerWithContentContainer = Nothing+    , _dciUid = Nothing+    , _dciTotalVolumes = Nothing+    , _dciSubTitle = Nothing+    , _dciTitle = Nothing+    , _dciVolumes = Nothing+    }+++dciBannerWithContentContainer :: Lens' DiscoveryclustersClustersItem (Maybe DiscoveryclustersClustersItemBanner_with_content_container)+dciBannerWithContentContainer+  = lens _dciBannerWithContentContainer+      (\ s a -> s{_dciBannerWithContentContainer = a})++dciUid :: Lens' DiscoveryclustersClustersItem (Maybe Text)+dciUid = lens _dciUid (\ s a -> s{_dciUid = a})++dciTotalVolumes :: Lens' DiscoveryclustersClustersItem (Maybe Int32)+dciTotalVolumes+  = lens _dciTotalVolumes+      (\ s a -> s{_dciTotalVolumes = a})+      . mapping _Coerce++dciSubTitle :: Lens' DiscoveryclustersClustersItem (Maybe Text)+dciSubTitle+  = lens _dciSubTitle (\ s a -> s{_dciSubTitle = a})++dciTitle :: Lens' DiscoveryclustersClustersItem (Maybe Text)+dciTitle = lens _dciTitle (\ s a -> s{_dciTitle = a})++dciVolumes :: Lens' DiscoveryclustersClustersItem [Volume]+dciVolumes+  = lens _dciVolumes (\ s a -> s{_dciVolumes = a}) .+      _Default+      . _Coerce++instance FromJSON DiscoveryclustersClustersItem where+        parseJSON+          = withObject "DiscoveryclustersClustersItem"+              (\ o ->+                 DiscoveryclustersClustersItem' <$>+                   (o .:? "banner_with_content_container") <*>+                     (o .:? "uid")+                     <*> (o .:? "totalVolumes")+                     <*> (o .:? "subTitle")+                     <*> (o .:? "title")+                     <*> (o .:? "volumes" .!= mempty))++instance ToJSON DiscoveryclustersClustersItem where+        toJSON DiscoveryclustersClustersItem'{..}+          = object+              (catMaybes+                 [("banner_with_content_container" .=) <$>+                    _dciBannerWithContentContainer,+                  ("uid" .=) <$> _dciUid,+                  ("totalVolumes" .=) <$> _dciTotalVolumes,+                  ("subTitle" .=) <$> _dciSubTitle,+                  ("title" .=) <$> _dciTitle,+                  ("volumes" .=) <$> _dciVolumes])++-- | The actual selling price of the book. This is the same as the suggested+-- retail or list price unless there are offers or discounts on this+-- volume. (In LITE projection.)+--+-- /See:/ 'volumeSaleInfoRetailPrice' smart constructor.+data VolumeSaleInfoRetailPrice =+  VolumeSaleInfoRetailPrice'+    { _vsirpAmount       :: !(Maybe (Textual Double))+    , _vsirpCurrencyCode :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoRetailPrice' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsirpAmount'+--+-- * 'vsirpCurrencyCode'+volumeSaleInfoRetailPrice+    :: VolumeSaleInfoRetailPrice+volumeSaleInfoRetailPrice =+  VolumeSaleInfoRetailPrice'+    {_vsirpAmount = Nothing, _vsirpCurrencyCode = Nothing}+++-- | Amount in the currency listed below. (In LITE projection.)+vsirpAmount :: Lens' VolumeSaleInfoRetailPrice (Maybe Double)+vsirpAmount+  = lens _vsirpAmount (\ s a -> s{_vsirpAmount = a}) .+      mapping _Coerce++-- | An ISO 4217, three-letter currency code. (In LITE projection.)+vsirpCurrencyCode :: Lens' VolumeSaleInfoRetailPrice (Maybe Text)+vsirpCurrencyCode+  = lens _vsirpCurrencyCode+      (\ s a -> s{_vsirpCurrencyCode = a})++instance FromJSON VolumeSaleInfoRetailPrice where+        parseJSON+          = withObject "VolumeSaleInfoRetailPrice"+              (\ o ->+                 VolumeSaleInfoRetailPrice' <$>+                   (o .:? "amount") <*> (o .:? "currencyCode"))++instance ToJSON VolumeSaleInfoRetailPrice where+        toJSON VolumeSaleInfoRetailPrice'{..}+          = object+              (catMaybes+                 [("amount" .=) <$> _vsirpAmount,+                  ("currencyCode" .=) <$> _vsirpCurrencyCode])++-- | Suggested retail price. (In LITE projection.)+--+-- /See:/ 'volumeSaleInfoListPrice' smart constructor.+data VolumeSaleInfoListPrice =+  VolumeSaleInfoListPrice'+    { _vsilpAmount       :: !(Maybe (Textual Double))+    , _vsilpCurrencyCode :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoListPrice' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsilpAmount'+--+-- * 'vsilpCurrencyCode'+volumeSaleInfoListPrice+    :: VolumeSaleInfoListPrice+volumeSaleInfoListPrice =+  VolumeSaleInfoListPrice'+    {_vsilpAmount = Nothing, _vsilpCurrencyCode = Nothing}+++-- | Amount in the currency listed below. (In LITE projection.)+vsilpAmount :: Lens' VolumeSaleInfoListPrice (Maybe Double)+vsilpAmount+  = lens _vsilpAmount (\ s a -> s{_vsilpAmount = a}) .+      mapping _Coerce++-- | An ISO 4217, three-letter currency code. (In LITE projection.)+vsilpCurrencyCode :: Lens' VolumeSaleInfoListPrice (Maybe Text)+vsilpCurrencyCode+  = lens _vsilpCurrencyCode+      (\ s a -> s{_vsilpCurrencyCode = a})++instance FromJSON VolumeSaleInfoListPrice where+        parseJSON+          = withObject "VolumeSaleInfoListPrice"+              (\ o ->+                 VolumeSaleInfoListPrice' <$>+                   (o .:? "amount") <*> (o .:? "currencyCode"))++instance ToJSON VolumeSaleInfoListPrice where+        toJSON VolumeSaleInfoListPrice'{..}+          = object+              (catMaybes+                 [("amount" .=) <$> _vsilpAmount,+                  ("currencyCode" .=) <$> _vsilpCurrencyCode])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemConjugationsItem' smart constructor.+data DictlayerDataDictWordsItemSensesItemConjugationsItem =+  DictlayerDataDictWordsItemSensesItemConjugationsItem'+    { _dddwisiciValue :: !(Maybe Text)+    , _dddwisiciType  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemConjugationsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisiciValue'+--+-- * 'dddwisiciType'+dictlayerDataDictWordsItemSensesItemConjugationsItem+    :: DictlayerDataDictWordsItemSensesItemConjugationsItem+dictlayerDataDictWordsItemSensesItemConjugationsItem =+  DictlayerDataDictWordsItemSensesItemConjugationsItem'+    {_dddwisiciValue = Nothing, _dddwisiciType = Nothing}+++dddwisiciValue :: Lens' DictlayerDataDictWordsItemSensesItemConjugationsItem (Maybe Text)+dddwisiciValue+  = lens _dddwisiciValue+      (\ s a -> s{_dddwisiciValue = a})++dddwisiciType :: Lens' DictlayerDataDictWordsItemSensesItemConjugationsItem (Maybe Text)+dddwisiciType+  = lens _dddwisiciType+      (\ s a -> s{_dddwisiciType = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemConjugationsItem+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemConjugationsItem"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemConjugationsItem'+                   <$> (o .:? "value") <*> (o .:? "type"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemConjugationsItem+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemConjugationsItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _dddwisiciValue,+                  ("type" .=) <$> _dddwisiciType])++-- | Family membership info of the user that made the request.+--+-- /See:/ 'familyInfoMembership' smart constructor.+data FamilyInfoMembership =+  FamilyInfoMembership'+    { _fimAllowedMaturityRating :: !(Maybe Text)+    , _fimAcquirePermission     :: !(Maybe Text)+    , _fimRole                  :: !(Maybe Text)+    , _fimAgeGroup              :: !(Maybe Text)+    , _fimIsInFamily            :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'FamilyInfoMembership' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fimAllowedMaturityRating'+--+-- * 'fimAcquirePermission'+--+-- * 'fimRole'+--+-- * 'fimAgeGroup'+--+-- * 'fimIsInFamily'+familyInfoMembership+    :: FamilyInfoMembership+familyInfoMembership =+  FamilyInfoMembership'+    { _fimAllowedMaturityRating = Nothing+    , _fimAcquirePermission = Nothing+    , _fimRole = Nothing+    , _fimAgeGroup = Nothing+    , _fimIsInFamily = Nothing+    }+++-- | The maximum allowed maturity rating for the user.+fimAllowedMaturityRating :: Lens' FamilyInfoMembership (Maybe Text)+fimAllowedMaturityRating+  = lens _fimAllowedMaturityRating+      (\ s a -> s{_fimAllowedMaturityRating = a})++-- | Restrictions on user buying and acquiring content.+fimAcquirePermission :: Lens' FamilyInfoMembership (Maybe Text)+fimAcquirePermission+  = lens _fimAcquirePermission+      (\ s a -> s{_fimAcquirePermission = a})++-- | The role of the user in the family.+fimRole :: Lens' FamilyInfoMembership (Maybe Text)+fimRole = lens _fimRole (\ s a -> s{_fimRole = a})++-- | The age group of the user.+fimAgeGroup :: Lens' FamilyInfoMembership (Maybe Text)+fimAgeGroup+  = lens _fimAgeGroup (\ s a -> s{_fimAgeGroup = a})++fimIsInFamily :: Lens' FamilyInfoMembership (Maybe Bool)+fimIsInFamily+  = lens _fimIsInFamily+      (\ s a -> s{_fimIsInFamily = a})++instance FromJSON FamilyInfoMembership where+        parseJSON+          = withObject "FamilyInfoMembership"+              (\ o ->+                 FamilyInfoMembership' <$>+                   (o .:? "allowedMaturityRating") <*>+                     (o .:? "acquirePermission")+                     <*> (o .:? "role")+                     <*> (o .:? "ageGroup")+                     <*> (o .:? "isInFamily"))++instance ToJSON FamilyInfoMembership where+        toJSON FamilyInfoMembership'{..}+          = object+              (catMaybes+                 [("allowedMaturityRating" .=) <$>+                    _fimAllowedMaturityRating,+                  ("acquirePermission" .=) <$> _fimAcquirePermission,+                  ("role" .=) <$> _fimRole,+                  ("ageGroup" .=) <$> _fimAgeGroup,+                  ("isInFamily" .=) <$> _fimIsInFamily])++--+-- /See:/ 'volume2' smart constructor.+data Volume2 =+  Volume2'+    { _voloNextPageToken :: !(Maybe Text)+    , _voloKind          :: !Text+    , _voloItems         :: !(Maybe [Volume])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Volume2' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'voloNextPageToken'+--+-- * 'voloKind'+--+-- * 'voloItems'+volume2+    :: Volume2+volume2 =+  Volume2'+    { _voloNextPageToken = Nothing+    , _voloKind = "onboarding#volume"+    , _voloItems = Nothing+    }+++voloNextPageToken :: Lens' Volume2 (Maybe Text)+voloNextPageToken+  = lens _voloNextPageToken+      (\ s a -> s{_voloNextPageToken = a})++-- | Resource type.+voloKind :: Lens' Volume2 Text+voloKind = lens _voloKind (\ s a -> s{_voloKind = a})++-- | A list of volumes.+voloItems :: Lens' Volume2 [Volume]+voloItems+  = lens _voloItems (\ s a -> s{_voloItems = a}) .+      _Default+      . _Coerce++instance FromJSON Volume2 where+        parseJSON+          = withObject "Volume2"+              (\ o ->+                 Volume2' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "onboarding#volume")+                     <*> (o .:? "items" .!= mempty))++instance ToJSON Volume2 where+        toJSON Volume2'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _voloNextPageToken,+                  Just ("kind" .= _voloKind),+                  ("items" .=) <$> _voloItems])++--+-- /See:/ 'review' smart constructor.+data Review =+  Review'+    { _rRating      :: !(Maybe Text)+    , _rKind        :: !Text+    , _rContent     :: !(Maybe Text)+    , _rDate        :: !(Maybe Text)+    , _rVolumeId    :: !(Maybe Text)+    , _rAuthor      :: !(Maybe ReviewAuthor)+    , _rSource      :: !(Maybe ReviewSource)+    , _rFullTextURL :: !(Maybe Text)+    , _rTitle       :: !(Maybe Text)+    , _rType        :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Review' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rRating'+--+-- * 'rKind'+--+-- * 'rContent'+--+-- * 'rDate'+--+-- * 'rVolumeId'+--+-- * 'rAuthor'+--+-- * 'rSource'+--+-- * 'rFullTextURL'+--+-- * 'rTitle'+--+-- * 'rType'+review+    :: Review+review =+  Review'+    { _rRating = Nothing+    , _rKind = "books#review"+    , _rContent = Nothing+    , _rDate = Nothing+    , _rVolumeId = Nothing+    , _rAuthor = Nothing+    , _rSource = Nothing+    , _rFullTextURL = Nothing+    , _rTitle = Nothing+    , _rType = Nothing+    }+++-- | Star rating for this review. Possible values are ONE, TWO, THREE, FOUR,+-- FIVE or NOT_RATED.+rRating :: Lens' Review (Maybe Text)+rRating = lens _rRating (\ s a -> s{_rRating = a})++-- | Resource type for a review.+rKind :: Lens' Review Text+rKind = lens _rKind (\ s a -> s{_rKind = a})++-- | Review text.+rContent :: Lens' Review (Maybe Text)+rContent = lens _rContent (\ s a -> s{_rContent = a})++-- | Date of this review.+rDate :: Lens' Review (Maybe Text)+rDate = lens _rDate (\ s a -> s{_rDate = a})++-- | Volume that this review is for.+rVolumeId :: Lens' Review (Maybe Text)+rVolumeId+  = lens _rVolumeId (\ s a -> s{_rVolumeId = a})++-- | Author of this review.+rAuthor :: Lens' Review (Maybe ReviewAuthor)+rAuthor = lens _rAuthor (\ s a -> s{_rAuthor = a})++-- | Information regarding the source of this review, when the review is not+-- from a Google Books user.+rSource :: Lens' Review (Maybe ReviewSource)+rSource = lens _rSource (\ s a -> s{_rSource = a})++-- | URL for the full review text, for reviews gathered from the web.+rFullTextURL :: Lens' Review (Maybe Text)+rFullTextURL+  = lens _rFullTextURL (\ s a -> s{_rFullTextURL = a})++-- | Title for this review.+rTitle :: Lens' Review (Maybe Text)+rTitle = lens _rTitle (\ s a -> s{_rTitle = a})++-- | Source type for this review. Possible values are EDITORIAL, WEB_USER or+-- GOOGLE_USER.+rType :: Lens' Review (Maybe Text)+rType = lens _rType (\ s a -> s{_rType = a})++instance FromJSON Review where+        parseJSON+          = withObject "Review"+              (\ o ->+                 Review' <$>+                   (o .:? "rating") <*>+                     (o .:? "kind" .!= "books#review")+                     <*> (o .:? "content")+                     <*> (o .:? "date")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "author")+                     <*> (o .:? "source")+                     <*> (o .:? "fullTextUrl")+                     <*> (o .:? "title")+                     <*> (o .:? "type"))++instance ToJSON Review where+        toJSON Review'{..}+          = object+              (catMaybes+                 [("rating" .=) <$> _rRating, Just ("kind" .= _rKind),+                  ("content" .=) <$> _rContent, ("date" .=) <$> _rDate,+                  ("volumeId" .=) <$> _rVolumeId,+                  ("author" .=) <$> _rAuthor,+                  ("source" .=) <$> _rSource,+                  ("fullTextUrl" .=) <$> _rFullTextURL,+                  ("title" .=) <$> _rTitle, ("type" .=) <$> _rType])++-- | Period during this book is\/was a valid rental.+--+-- /See:/ 'volumeUserInfoRentalPeriod' smart constructor.+data VolumeUserInfoRentalPeriod =+  VolumeUserInfoRentalPeriod'+    { _vuirpEndUtcSec   :: !(Maybe (Textual Int64))+    , _vuirpStartUtcSec :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeUserInfoRentalPeriod' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vuirpEndUtcSec'+--+-- * 'vuirpStartUtcSec'+volumeUserInfoRentalPeriod+    :: VolumeUserInfoRentalPeriod+volumeUserInfoRentalPeriod =+  VolumeUserInfoRentalPeriod'+    {_vuirpEndUtcSec = Nothing, _vuirpStartUtcSec = Nothing}+++vuirpEndUtcSec :: Lens' VolumeUserInfoRentalPeriod (Maybe Int64)+vuirpEndUtcSec+  = lens _vuirpEndUtcSec+      (\ s a -> s{_vuirpEndUtcSec = a})+      . mapping _Coerce++vuirpStartUtcSec :: Lens' VolumeUserInfoRentalPeriod (Maybe Int64)+vuirpStartUtcSec+  = lens _vuirpStartUtcSec+      (\ s a -> s{_vuirpStartUtcSec = a})+      . mapping _Coerce++instance FromJSON VolumeUserInfoRentalPeriod where+        parseJSON+          = withObject "VolumeUserInfoRentalPeriod"+              (\ o ->+                 VolumeUserInfoRentalPeriod' <$>+                   (o .:? "endUtcSec") <*> (o .:? "startUtcSec"))++instance ToJSON VolumeUserInfoRentalPeriod where+        toJSON VolumeUserInfoRentalPeriod'{..}+          = object+              (catMaybes+                 [("endUtcSec" .=) <$> _vuirpEndUtcSec,+                  ("startUtcSec" .=) <$> _vuirpStartUtcSec])++-- | Any information about a volume related to the eBookstore and\/or+-- purchaseability. This information can depend on the country where the+-- request originates from (i.e. books may not be for sale in certain+-- countries).+--+-- /See:/ 'volumeSaleInfo' smart constructor.+data VolumeSaleInfo =+  VolumeSaleInfo'+    { _vsiCountry     :: !(Maybe Text)+    , _vsiOnSaleDate  :: !(Maybe DateTime')+    , _vsiListPrice   :: !(Maybe VolumeSaleInfoListPrice)+    , _vsiRetailPrice :: !(Maybe VolumeSaleInfoRetailPrice)+    , _vsiOffers      :: !(Maybe [VolumeSaleInfoOffersItem])+    , _vsiBuyLink     :: !(Maybe Text)+    , _vsiIsEbook     :: !(Maybe Bool)+    , _vsiSaleability :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsiCountry'+--+-- * 'vsiOnSaleDate'+--+-- * 'vsiListPrice'+--+-- * 'vsiRetailPrice'+--+-- * 'vsiOffers'+--+-- * 'vsiBuyLink'+--+-- * 'vsiIsEbook'+--+-- * 'vsiSaleability'+volumeSaleInfo+    :: VolumeSaleInfo+volumeSaleInfo =+  VolumeSaleInfo'+    { _vsiCountry = Nothing+    , _vsiOnSaleDate = Nothing+    , _vsiListPrice = Nothing+    , _vsiRetailPrice = Nothing+    , _vsiOffers = Nothing+    , _vsiBuyLink = Nothing+    , _vsiIsEbook = Nothing+    , _vsiSaleability = Nothing+    }+++-- | The two-letter ISO_3166-1 country code for which this sale information+-- is valid. (In LITE projection.)+vsiCountry :: Lens' VolumeSaleInfo (Maybe Text)+vsiCountry+  = lens _vsiCountry (\ s a -> s{_vsiCountry = a})++-- | The date on which this book is available for sale.+vsiOnSaleDate :: Lens' VolumeSaleInfo (Maybe UTCTime)+vsiOnSaleDate+  = lens _vsiOnSaleDate+      (\ s a -> s{_vsiOnSaleDate = a})+      . mapping _DateTime++-- | Suggested retail price. (In LITE projection.)+vsiListPrice :: Lens' VolumeSaleInfo (Maybe VolumeSaleInfoListPrice)+vsiListPrice+  = lens _vsiListPrice (\ s a -> s{_vsiListPrice = a})++-- | The actual selling price of the book. This is the same as the suggested+-- retail or list price unless there are offers or discounts on this+-- volume. (In LITE projection.)+vsiRetailPrice :: Lens' VolumeSaleInfo (Maybe VolumeSaleInfoRetailPrice)+vsiRetailPrice+  = lens _vsiRetailPrice+      (\ s a -> s{_vsiRetailPrice = a})++-- | Offers available for this volume (sales and rentals).+vsiOffers :: Lens' VolumeSaleInfo [VolumeSaleInfoOffersItem]+vsiOffers+  = lens _vsiOffers (\ s a -> s{_vsiOffers = a}) .+      _Default+      . _Coerce++-- | URL to purchase this volume on the Google Books site. (In LITE+-- projection)+vsiBuyLink :: Lens' VolumeSaleInfo (Maybe Text)+vsiBuyLink+  = lens _vsiBuyLink (\ s a -> s{_vsiBuyLink = a})++-- | Whether or not this volume is an eBook (can be added to the My eBooks+-- shelf).+vsiIsEbook :: Lens' VolumeSaleInfo (Maybe Bool)+vsiIsEbook+  = lens _vsiIsEbook (\ s a -> s{_vsiIsEbook = a})++-- | Whether or not this book is available for sale or offered for free in+-- the Google eBookstore for the country listed above. Possible values are+-- FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or+-- FOR_PREORDER.+vsiSaleability :: Lens' VolumeSaleInfo (Maybe Text)+vsiSaleability+  = lens _vsiSaleability+      (\ s a -> s{_vsiSaleability = a})++instance FromJSON VolumeSaleInfo where+        parseJSON+          = withObject "VolumeSaleInfo"+              (\ o ->+                 VolumeSaleInfo' <$>+                   (o .:? "country") <*> (o .:? "onSaleDate") <*>+                     (o .:? "listPrice")+                     <*> (o .:? "retailPrice")+                     <*> (o .:? "offers" .!= mempty)+                     <*> (o .:? "buyLink")+                     <*> (o .:? "isEbook")+                     <*> (o .:? "saleability"))++instance ToJSON VolumeSaleInfo where+        toJSON VolumeSaleInfo'{..}+          = object+              (catMaybes+                 [("country" .=) <$> _vsiCountry,+                  ("onSaleDate" .=) <$> _vsiOnSaleDate,+                  ("listPrice" .=) <$> _vsiListPrice,+                  ("retailPrice" .=) <$> _vsiRetailPrice,+                  ("offers" .=) <$> _vsiOffers,+                  ("buyLink" .=) <$> _vsiBuyLink,+                  ("isEbook" .=) <$> _vsiIsEbook,+                  ("saleability" .=) <$> _vsiSaleability])++--+-- /See:/ 'seriesSeriesItem' smart constructor.+data SeriesSeriesItem =+  SeriesSeriesItem'+    { _ssiSeriesId       :: !(Maybe Text)+    , _ssiImageURL       :: !(Maybe Text)+    , _ssiBannerImageURL :: !(Maybe Text)+    , _ssiTitle          :: !(Maybe Text)+    , _ssiSeriesType     :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SeriesSeriesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssiSeriesId'+--+-- * 'ssiImageURL'+--+-- * 'ssiBannerImageURL'+--+-- * 'ssiTitle'+--+-- * 'ssiSeriesType'+seriesSeriesItem+    :: SeriesSeriesItem+seriesSeriesItem =+  SeriesSeriesItem'+    { _ssiSeriesId = Nothing+    , _ssiImageURL = Nothing+    , _ssiBannerImageURL = Nothing+    , _ssiTitle = Nothing+    , _ssiSeriesType = Nothing+    }+++ssiSeriesId :: Lens' SeriesSeriesItem (Maybe Text)+ssiSeriesId+  = lens _ssiSeriesId (\ s a -> s{_ssiSeriesId = a})++ssiImageURL :: Lens' SeriesSeriesItem (Maybe Text)+ssiImageURL+  = lens _ssiImageURL (\ s a -> s{_ssiImageURL = a})++ssiBannerImageURL :: Lens' SeriesSeriesItem (Maybe Text)+ssiBannerImageURL+  = lens _ssiBannerImageURL+      (\ s a -> s{_ssiBannerImageURL = a})++ssiTitle :: Lens' SeriesSeriesItem (Maybe Text)+ssiTitle = lens _ssiTitle (\ s a -> s{_ssiTitle = a})++ssiSeriesType :: Lens' SeriesSeriesItem (Maybe Text)+ssiSeriesType+  = lens _ssiSeriesType+      (\ s a -> s{_ssiSeriesType = a})++instance FromJSON SeriesSeriesItem where+        parseJSON+          = withObject "SeriesSeriesItem"+              (\ o ->+                 SeriesSeriesItem' <$>+                   (o .:? "seriesId") <*> (o .:? "imageUrl") <*>+                     (o .:? "bannerImageUrl")+                     <*> (o .:? "title")+                     <*> (o .:? "seriesType"))++instance ToJSON SeriesSeriesItem where+        toJSON SeriesSeriesItem'{..}+          = object+              (catMaybes+                 [("seriesId" .=) <$> _ssiSeriesId,+                  ("imageUrl" .=) <$> _ssiImageURL,+                  ("bannerImageUrl" .=) <$> _ssiBannerImageURL,+                  ("title" .=) <$> _ssiTitle,+                  ("seriesType" .=) <$> _ssiSeriesType])++--+-- /See:/ 'metadata' smart constructor.+data Metadata =+  Metadata'+    { _mKind  :: !Text+    , _mItems :: !(Maybe [MetadataItemsItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Metadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mKind'+--+-- * 'mItems'+metadata+    :: Metadata+metadata = Metadata' {_mKind = "dictionary#metadata", _mItems = Nothing}+++-- | Resource type.+mKind :: Lens' Metadata Text+mKind = lens _mKind (\ s a -> s{_mKind = a})++-- | A list of offline dictionary metadata.+mItems :: Lens' Metadata [MetadataItemsItem]+mItems+  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .+      _Coerce++instance FromJSON Metadata where+        parseJSON+          = withObject "Metadata"+              (\ o ->+                 Metadata' <$>+                   (o .:? "kind" .!= "dictionary#metadata") <*>+                     (o .:? "items" .!= mempty))++instance ToJSON Metadata where+        toJSON Metadata'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _mKind), ("items" .=) <$> _mItems])++-- | What layers exist in this volume and high level information about them.+--+-- /See:/ 'volumeLayerInfo' smart constructor.+newtype VolumeLayerInfo =+  VolumeLayerInfo'+    { _vliLayers :: Maybe [VolumeLayerInfoLayersItem]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeLayerInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vliLayers'+volumeLayerInfo+    :: VolumeLayerInfo+volumeLayerInfo = VolumeLayerInfo' {_vliLayers = Nothing}+++-- | A layer should appear here if and only if the layer exists for this+-- book.+vliLayers :: Lens' VolumeLayerInfo [VolumeLayerInfoLayersItem]+vliLayers+  = lens _vliLayers (\ s a -> s{_vliLayers = a}) .+      _Default+      . _Coerce++instance FromJSON VolumeLayerInfo where+        parseJSON+          = withObject "VolumeLayerInfo"+              (\ o ->+                 VolumeLayerInfo' <$> (o .:? "layers" .!= mempty))++instance ToJSON VolumeLayerInfo where+        toJSON VolumeLayerInfo'{..}+          = object (catMaybes [("layers" .=) <$> _vliLayers])++-- | Physical dimensions of this volume.+--+-- /See:/ 'volumeVolumeInfoDimensions' smart constructor.+data VolumeVolumeInfoDimensions =+  VolumeVolumeInfoDimensions'+    { _vvidHeight    :: !(Maybe Text)+    , _vvidWidth     :: !(Maybe Text)+    , _vvidThickness :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeVolumeInfoDimensions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vvidHeight'+--+-- * 'vvidWidth'+--+-- * 'vvidThickness'+volumeVolumeInfoDimensions+    :: VolumeVolumeInfoDimensions+volumeVolumeInfoDimensions =+  VolumeVolumeInfoDimensions'+    {_vvidHeight = Nothing, _vvidWidth = Nothing, _vvidThickness = Nothing}+++-- | Height or length of this volume (in cm).+vvidHeight :: Lens' VolumeVolumeInfoDimensions (Maybe Text)+vvidHeight+  = lens _vvidHeight (\ s a -> s{_vvidHeight = a})++-- | Width of this volume (in cm).+vvidWidth :: Lens' VolumeVolumeInfoDimensions (Maybe Text)+vvidWidth+  = lens _vvidWidth (\ s a -> s{_vvidWidth = a})++-- | Thickness of this volume (in cm).+vvidThickness :: Lens' VolumeVolumeInfoDimensions (Maybe Text)+vvidThickness+  = lens _vvidThickness+      (\ s a -> s{_vvidThickness = a})++instance FromJSON VolumeVolumeInfoDimensions where+        parseJSON+          = withObject "VolumeVolumeInfoDimensions"+              (\ o ->+                 VolumeVolumeInfoDimensions' <$>+                   (o .:? "height") <*> (o .:? "width") <*>+                     (o .:? "thickness"))++instance ToJSON VolumeVolumeInfoDimensions where+        toJSON VolumeVolumeInfoDimensions'{..}+          = object+              (catMaybes+                 [("height" .=) <$> _vvidHeight,+                  ("width" .=) <$> _vvidWidth,+                  ("thickness" .=) <$> _vvidThickness])++--+-- /See:/ 'requestAccess' smart constructor.+data RequestAccess =+  RequestAccess'+    { _raConcurrentAccess :: !(Maybe ConcurrentAccessRestriction)+    , _raKind             :: !Text+    , _raDownloadAccess   :: !(Maybe DownloadAccessRestriction)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RequestAccess' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'raConcurrentAccess'+--+-- * 'raKind'+--+-- * 'raDownloadAccess'+requestAccess+    :: RequestAccess+requestAccess =+  RequestAccess'+    { _raConcurrentAccess = Nothing+    , _raKind = "books#requestAccess"+    , _raDownloadAccess = Nothing+    }+++-- | A concurrent access response.+raConcurrentAccess :: Lens' RequestAccess (Maybe ConcurrentAccessRestriction)+raConcurrentAccess+  = lens _raConcurrentAccess+      (\ s a -> s{_raConcurrentAccess = a})++-- | Resource type.+raKind :: Lens' RequestAccess Text+raKind = lens _raKind (\ s a -> s{_raKind = a})++-- | A download access response.+raDownloadAccess :: Lens' RequestAccess (Maybe DownloadAccessRestriction)+raDownloadAccess+  = lens _raDownloadAccess+      (\ s a -> s{_raDownloadAccess = a})++instance FromJSON RequestAccess where+        parseJSON+          = withObject "RequestAccess"+              (\ o ->+                 RequestAccess' <$>+                   (o .:? "concurrentAccess") <*>+                     (o .:? "kind" .!= "books#requestAccess")+                     <*> (o .:? "downloadAccess"))++instance ToJSON RequestAccess where+        toJSON RequestAccess'{..}+          = object+              (catMaybes+                 [("concurrentAccess" .=) <$> _raConcurrentAccess,+                  Just ("kind" .= _raKind),+                  ("downloadAccess" .=) <$> _raDownloadAccess])++--+-- /See:/ 'familyInfo' smart constructor.+data FamilyInfo =+  FamilyInfo'+    { _fiMembership :: !(Maybe FamilyInfoMembership)+    , _fiKind       :: !Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'FamilyInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fiMembership'+--+-- * 'fiKind'+familyInfo+    :: FamilyInfo+familyInfo = FamilyInfo' {_fiMembership = Nothing, _fiKind = "books#familyInfo"}+++-- | Family membership info of the user that made the request.+fiMembership :: Lens' FamilyInfo (Maybe FamilyInfoMembership)+fiMembership+  = lens _fiMembership (\ s a -> s{_fiMembership = a})++-- | Resource type.+fiKind :: Lens' FamilyInfo Text+fiKind = lens _fiKind (\ s a -> s{_fiKind = a})++instance FromJSON FamilyInfo where+        parseJSON+          = withObject "FamilyInfo"+              (\ o ->+                 FamilyInfo' <$>+                   (o .:? "membership") <*>+                     (o .:? "kind" .!= "books#familyInfo"))++instance ToJSON FamilyInfo where+        toJSON FamilyInfo'{..}+          = object+              (catMaybes+                 [("membership" .=) <$> _fiMembership,+                  Just ("kind" .= _fiKind)])++-- | Selection ranges sent from the client.+--+-- /See:/ 'annotationClientVersionRanges' smart constructor.+data AnnotationClientVersionRanges =+  AnnotationClientVersionRanges'+    { _acvrGbImageRange   :: !(Maybe BooksAnnotationsRange)+    , _acvrContentVersion :: !(Maybe Text)+    , _acvrImageCfiRange  :: !(Maybe BooksAnnotationsRange)+    , _acvrGbTextRange    :: !(Maybe BooksAnnotationsRange)+    , _acvrCfiRange       :: !(Maybe BooksAnnotationsRange)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationClientVersionRanges' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acvrGbImageRange'+--+-- * 'acvrContentVersion'+--+-- * 'acvrImageCfiRange'+--+-- * 'acvrGbTextRange'+--+-- * 'acvrCfiRange'+annotationClientVersionRanges+    :: AnnotationClientVersionRanges+annotationClientVersionRanges =+  AnnotationClientVersionRanges'+    { _acvrGbImageRange = Nothing+    , _acvrContentVersion = Nothing+    , _acvrImageCfiRange = Nothing+    , _acvrGbTextRange = Nothing+    , _acvrCfiRange = Nothing+    }+++-- | Range in GB image format for this annotation sent by client.+acvrGbImageRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)+acvrGbImageRange+  = lens _acvrGbImageRange+      (\ s a -> s{_acvrGbImageRange = a})++-- | Content version the client sent in.+acvrContentVersion :: Lens' AnnotationClientVersionRanges (Maybe Text)+acvrContentVersion+  = lens _acvrContentVersion+      (\ s a -> s{_acvrContentVersion = a})++-- | Range in image CFI format for this annotation sent by client.+acvrImageCfiRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)+acvrImageCfiRange+  = lens _acvrImageCfiRange+      (\ s a -> s{_acvrImageCfiRange = a})++-- | Range in GB text format for this annotation sent by client.+acvrGbTextRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)+acvrGbTextRange+  = lens _acvrGbTextRange+      (\ s a -> s{_acvrGbTextRange = a})++-- | Range in CFI format for this annotation sent by client.+acvrCfiRange :: Lens' AnnotationClientVersionRanges (Maybe BooksAnnotationsRange)+acvrCfiRange+  = lens _acvrCfiRange (\ s a -> s{_acvrCfiRange = a})++instance FromJSON AnnotationClientVersionRanges where+        parseJSON+          = withObject "AnnotationClientVersionRanges"+              (\ o ->+                 AnnotationClientVersionRanges' <$>+                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")+                     <*> (o .:? "imageCfiRange")+                     <*> (o .:? "gbTextRange")+                     <*> (o .:? "cfiRange"))++instance ToJSON AnnotationClientVersionRanges where+        toJSON AnnotationClientVersionRanges'{..}+          = object+              (catMaybes+                 [("gbImageRange" .=) <$> _acvrGbImageRange,+                  ("contentVersion" .=) <$> _acvrContentVersion,+                  ("imageCfiRange" .=) <$> _acvrImageCfiRange,+                  ("gbTextRange" .=) <$> _acvrGbTextRange,+                  ("cfiRange" .=) <$> _acvrCfiRange])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemDefinitionsItem' smart constructor.+data DictlayerDataDictWordsItemSensesItemDefinitionsItem =+  DictlayerDataDictWordsItemSensesItemDefinitionsItem'+    { _dddwisidiDefinition :: !(Maybe Text)+    , _dddwisidiExamples   :: !(Maybe [DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemDefinitionsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisidiDefinition'+--+-- * 'dddwisidiExamples'+dictlayerDataDictWordsItemSensesItemDefinitionsItem+    :: DictlayerDataDictWordsItemSensesItemDefinitionsItem+dictlayerDataDictWordsItemSensesItemDefinitionsItem =+  DictlayerDataDictWordsItemSensesItemDefinitionsItem'+    {_dddwisidiDefinition = Nothing, _dddwisidiExamples = Nothing}+++dddwisidiDefinition :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItem (Maybe Text)+dddwisidiDefinition+  = lens _dddwisidiDefinition+      (\ s a -> s{_dddwisidiDefinition = a})++dddwisidiExamples :: Lens' DictlayerDataDictWordsItemSensesItemDefinitionsItem [DictlayerDataDictWordsItemSensesItemDefinitionsItemExamplesItem]+dddwisidiExamples+  = lens _dddwisidiExamples+      (\ s a -> s{_dddwisidiExamples = a})+      . _Default+      . _Coerce++instance FromJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItem+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemDefinitionsItem"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemDefinitionsItem'+                   <$>+                   (o .:? "definition") <*>+                     (o .:? "examples" .!= mempty))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemDefinitionsItem+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemDefinitionsItem'{..}+          = object+              (catMaybes+                 [("definition" .=) <$> _dddwisidiDefinition,+                  ("examples" .=) <$> _dddwisidiExamples])++--+-- /See:/ 'volumeLayerInfoLayersItem' smart constructor.+data VolumeLayerInfoLayersItem =+  VolumeLayerInfoLayersItem'+    { _vliliVolumeAnnotationsVersion :: !(Maybe Text)+    , _vliliLayerId                  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeLayerInfoLayersItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vliliVolumeAnnotationsVersion'+--+-- * 'vliliLayerId'+volumeLayerInfoLayersItem+    :: VolumeLayerInfoLayersItem+volumeLayerInfoLayersItem =+  VolumeLayerInfoLayersItem'+    {_vliliVolumeAnnotationsVersion = Nothing, _vliliLayerId = Nothing}+++-- | The current version of this layer\'s volume annotations. Note that this+-- version applies only to the data in the books.layers.volumeAnnotations.*+-- responses. The actual annotation data is versioned separately.+vliliVolumeAnnotationsVersion :: Lens' VolumeLayerInfoLayersItem (Maybe Text)+vliliVolumeAnnotationsVersion+  = lens _vliliVolumeAnnotationsVersion+      (\ s a -> s{_vliliVolumeAnnotationsVersion = a})++-- | The layer id of this layer (e.g. \"geo\").+vliliLayerId :: Lens' VolumeLayerInfoLayersItem (Maybe Text)+vliliLayerId+  = lens _vliliLayerId (\ s a -> s{_vliliLayerId = a})++instance FromJSON VolumeLayerInfoLayersItem where+        parseJSON+          = withObject "VolumeLayerInfoLayersItem"+              (\ o ->+                 VolumeLayerInfoLayersItem' <$>+                   (o .:? "volumeAnnotationsVersion") <*>+                     (o .:? "layerId"))++instance ToJSON VolumeLayerInfoLayersItem where+        toJSON VolumeLayerInfoLayersItem'{..}+          = object+              (catMaybes+                 [("volumeAnnotationsVersion" .=) <$>+                    _vliliVolumeAnnotationsVersion,+                  ("layerId" .=) <$> _vliliLayerId])++-- | Selection ranges for the most recent content version.+--+-- /See:/ 'annotationCurrentVersionRanges' smart constructor.+data AnnotationCurrentVersionRanges =+  AnnotationCurrentVersionRanges'+    { _aGbImageRange   :: !(Maybe BooksAnnotationsRange)+    , _aContentVersion :: !(Maybe Text)+    , _aImageCfiRange  :: !(Maybe BooksAnnotationsRange)+    , _aGbTextRange    :: !(Maybe BooksAnnotationsRange)+    , _aCfiRange       :: !(Maybe BooksAnnotationsRange)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AnnotationCurrentVersionRanges' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aGbImageRange'+--+-- * 'aContentVersion'+--+-- * 'aImageCfiRange'+--+-- * 'aGbTextRange'+--+-- * 'aCfiRange'+annotationCurrentVersionRanges+    :: AnnotationCurrentVersionRanges+annotationCurrentVersionRanges =+  AnnotationCurrentVersionRanges'+    { _aGbImageRange = Nothing+    , _aContentVersion = Nothing+    , _aImageCfiRange = Nothing+    , _aGbTextRange = Nothing+    , _aCfiRange = Nothing+    }+++-- | Range in GB image format for this annotation for version above.+aGbImageRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)+aGbImageRange+  = lens _aGbImageRange+      (\ s a -> s{_aGbImageRange = a})++-- | Content version applicable to ranges below.+aContentVersion :: Lens' AnnotationCurrentVersionRanges (Maybe Text)+aContentVersion+  = lens _aContentVersion+      (\ s a -> s{_aContentVersion = a})++-- | Range in image CFI format for this annotation for version above.+aImageCfiRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)+aImageCfiRange+  = lens _aImageCfiRange+      (\ s a -> s{_aImageCfiRange = a})++-- | Range in GB text format for this annotation for version above.+aGbTextRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)+aGbTextRange+  = lens _aGbTextRange (\ s a -> s{_aGbTextRange = a})++-- | Range in CFI format for this annotation for version above.+aCfiRange :: Lens' AnnotationCurrentVersionRanges (Maybe BooksAnnotationsRange)+aCfiRange+  = lens _aCfiRange (\ s a -> s{_aCfiRange = a})++instance FromJSON AnnotationCurrentVersionRanges+         where+        parseJSON+          = withObject "AnnotationCurrentVersionRanges"+              (\ o ->+                 AnnotationCurrentVersionRanges' <$>+                   (o .:? "gbImageRange") <*> (o .:? "contentVersion")+                     <*> (o .:? "imageCfiRange")+                     <*> (o .:? "gbTextRange")+                     <*> (o .:? "cfiRange"))++instance ToJSON AnnotationCurrentVersionRanges where+        toJSON AnnotationCurrentVersionRanges'{..}+          = object+              (catMaybes+                 [("gbImageRange" .=) <$> _aGbImageRange,+                  ("contentVersion" .=) <$> _aContentVersion,+                  ("imageCfiRange" .=) <$> _aImageCfiRange,+                  ("gbTextRange" .=) <$> _aGbTextRange,+                  ("cfiRange" .=) <$> _aCfiRange])++-- | Information about pdf content. (In LITE projection.)+--+-- /See:/ 'volumeAccessInfoPdf' smart constructor.+data VolumeAccessInfoPdf =+  VolumeAccessInfoPdf'+    { _vaipAcsTokenLink :: !(Maybe Text)+    , _vaipIsAvailable  :: !(Maybe Bool)+    , _vaipDownloadLink :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeAccessInfoPdf' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vaipAcsTokenLink'+--+-- * 'vaipIsAvailable'+--+-- * 'vaipDownloadLink'+volumeAccessInfoPdf+    :: VolumeAccessInfoPdf+volumeAccessInfoPdf =+  VolumeAccessInfoPdf'+    { _vaipAcsTokenLink = Nothing+    , _vaipIsAvailable = Nothing+    , _vaipDownloadLink = Nothing+    }+++-- | URL to retrieve ACS token for pdf download. (In LITE projection.)+vaipAcsTokenLink :: Lens' VolumeAccessInfoPdf (Maybe Text)+vaipAcsTokenLink+  = lens _vaipAcsTokenLink+      (\ s a -> s{_vaipAcsTokenLink = a})++-- | Is a scanned image pdf available either as public domain or for+-- purchase. (In LITE projection.)+vaipIsAvailable :: Lens' VolumeAccessInfoPdf (Maybe Bool)+vaipIsAvailable+  = lens _vaipIsAvailable+      (\ s a -> s{_vaipIsAvailable = a})++-- | URL to download pdf. (In LITE projection.)+vaipDownloadLink :: Lens' VolumeAccessInfoPdf (Maybe Text)+vaipDownloadLink+  = lens _vaipDownloadLink+      (\ s a -> s{_vaipDownloadLink = a})++instance FromJSON VolumeAccessInfoPdf where+        parseJSON+          = withObject "VolumeAccessInfoPdf"+              (\ o ->+                 VolumeAccessInfoPdf' <$>+                   (o .:? "acsTokenLink") <*> (o .:? "isAvailable") <*>+                     (o .:? "downloadLink"))++instance ToJSON VolumeAccessInfoPdf where+        toJSON VolumeAccessInfoPdf'{..}+          = object+              (catMaybes+                 [("acsTokenLink" .=) <$> _vaipAcsTokenLink,+                  ("isAvailable" .=) <$> _vaipIsAvailable,+                  ("downloadLink" .=) <$> _vaipDownloadLink])++--+-- /See:/ 'dictlayerDataDictWordsItemExamplesItemSource' smart constructor.+data DictlayerDataDictWordsItemExamplesItemSource =+  DictlayerDataDictWordsItemExamplesItemSource'+    { _dddwieisURL         :: !(Maybe Text)+    , _dddwieisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemExamplesItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwieisURL'+--+-- * 'dddwieisAttribution'+dictlayerDataDictWordsItemExamplesItemSource+    :: DictlayerDataDictWordsItemExamplesItemSource+dictlayerDataDictWordsItemExamplesItemSource =+  DictlayerDataDictWordsItemExamplesItemSource'+    {_dddwieisURL = Nothing, _dddwieisAttribution = Nothing}+++dddwieisURL :: Lens' DictlayerDataDictWordsItemExamplesItemSource (Maybe Text)+dddwieisURL+  = lens _dddwieisURL (\ s a -> s{_dddwieisURL = a})++dddwieisAttribution :: Lens' DictlayerDataDictWordsItemExamplesItemSource (Maybe Text)+dddwieisAttribution+  = lens _dddwieisAttribution+      (\ s a -> s{_dddwieisAttribution = a})++instance FromJSON+           DictlayerDataDictWordsItemExamplesItemSource+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemExamplesItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemExamplesItemSource' <$>+                   (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON+           DictlayerDataDictWordsItemExamplesItemSource+         where+        toJSON+          DictlayerDataDictWordsItemExamplesItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwieisURL,+                  ("attribution" .=) <$> _dddwieisAttribution])++-- | Information about epub content. (In LITE projection.)+--+-- /See:/ 'volumeAccessInfoEpub' smart constructor.+data VolumeAccessInfoEpub =+  VolumeAccessInfoEpub'+    { _vaieAcsTokenLink :: !(Maybe Text)+    , _vaieIsAvailable  :: !(Maybe Bool)+    , _vaieDownloadLink :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeAccessInfoEpub' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vaieAcsTokenLink'+--+-- * 'vaieIsAvailable'+--+-- * 'vaieDownloadLink'+volumeAccessInfoEpub+    :: VolumeAccessInfoEpub+volumeAccessInfoEpub =+  VolumeAccessInfoEpub'+    { _vaieAcsTokenLink = Nothing+    , _vaieIsAvailable = Nothing+    , _vaieDownloadLink = Nothing+    }+++-- | URL to retrieve ACS token for epub download. (In LITE projection.)+vaieAcsTokenLink :: Lens' VolumeAccessInfoEpub (Maybe Text)+vaieAcsTokenLink+  = lens _vaieAcsTokenLink+      (\ s a -> s{_vaieAcsTokenLink = a})++-- | Is a flowing text epub available either as public domain or for+-- purchase. (In LITE projection.)+vaieIsAvailable :: Lens' VolumeAccessInfoEpub (Maybe Bool)+vaieIsAvailable+  = lens _vaieIsAvailable+      (\ s a -> s{_vaieIsAvailable = a})++-- | URL to download epub. (In LITE projection.)+vaieDownloadLink :: Lens' VolumeAccessInfoEpub (Maybe Text)+vaieDownloadLink+  = lens _vaieDownloadLink+      (\ s a -> s{_vaieDownloadLink = a})++instance FromJSON VolumeAccessInfoEpub where+        parseJSON+          = withObject "VolumeAccessInfoEpub"+              (\ o ->+                 VolumeAccessInfoEpub' <$>+                   (o .:? "acsTokenLink") <*> (o .:? "isAvailable") <*>+                     (o .:? "downloadLink"))++instance ToJSON VolumeAccessInfoEpub where+        toJSON VolumeAccessInfoEpub'{..}+          = object+              (catMaybes+                 [("acsTokenLink" .=) <$> _vaieAcsTokenLink,+                  ("isAvailable" .=) <$> _vaieIsAvailable,+                  ("downloadLink" .=) <$> _vaieDownloadLink])++--+-- /See:/ 'readingPosition' smart constructor.+data ReadingPosition =+  ReadingPosition'+    { _rpEpubCfiPosition :: !(Maybe Text)+    , _rpKind            :: !Text+    , _rpGbImagePosition :: !(Maybe Text)+    , _rpPdfPosition     :: !(Maybe Text)+    , _rpVolumeId        :: !(Maybe Text)+    , _rpUpdated         :: !(Maybe DateTime')+    , _rpGbTextPosition  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ReadingPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rpEpubCfiPosition'+--+-- * 'rpKind'+--+-- * 'rpGbImagePosition'+--+-- * 'rpPdfPosition'+--+-- * 'rpVolumeId'+--+-- * 'rpUpdated'+--+-- * 'rpGbTextPosition'+readingPosition+    :: ReadingPosition+readingPosition =+  ReadingPosition'+    { _rpEpubCfiPosition = Nothing+    , _rpKind = "books#readingPosition"+    , _rpGbImagePosition = Nothing+    , _rpPdfPosition = Nothing+    , _rpVolumeId = Nothing+    , _rpUpdated = Nothing+    , _rpGbTextPosition = Nothing+    }+++-- | Position in an EPUB as a CFI.+rpEpubCfiPosition :: Lens' ReadingPosition (Maybe Text)+rpEpubCfiPosition+  = lens _rpEpubCfiPosition+      (\ s a -> s{_rpEpubCfiPosition = a})++-- | Resource type for a reading position.+rpKind :: Lens' ReadingPosition Text+rpKind = lens _rpKind (\ s a -> s{_rpKind = a})++-- | Position in a volume for image-based content.+rpGbImagePosition :: Lens' ReadingPosition (Maybe Text)+rpGbImagePosition+  = lens _rpGbImagePosition+      (\ s a -> s{_rpGbImagePosition = a})++-- | Position in a PDF file.+rpPdfPosition :: Lens' ReadingPosition (Maybe Text)+rpPdfPosition+  = lens _rpPdfPosition+      (\ s a -> s{_rpPdfPosition = a})++-- | Volume id associated with this reading position.+rpVolumeId :: Lens' ReadingPosition (Maybe Text)+rpVolumeId+  = lens _rpVolumeId (\ s a -> s{_rpVolumeId = a})++-- | Timestamp when this reading position was last updated (formatted UTC+-- timestamp with millisecond resolution).+rpUpdated :: Lens' ReadingPosition (Maybe UTCTime)+rpUpdated+  = lens _rpUpdated (\ s a -> s{_rpUpdated = a}) .+      mapping _DateTime++-- | Position in a volume for text-based content.+rpGbTextPosition :: Lens' ReadingPosition (Maybe Text)+rpGbTextPosition+  = lens _rpGbTextPosition+      (\ s a -> s{_rpGbTextPosition = a})++instance FromJSON ReadingPosition where+        parseJSON+          = withObject "ReadingPosition"+              (\ o ->+                 ReadingPosition' <$>+                   (o .:? "epubCfiPosition") <*>+                     (o .:? "kind" .!= "books#readingPosition")+                     <*> (o .:? "gbImagePosition")+                     <*> (o .:? "pdfPosition")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "updated")+                     <*> (o .:? "gbTextPosition"))++instance ToJSON ReadingPosition where+        toJSON ReadingPosition'{..}+          = object+              (catMaybes+                 [("epubCfiPosition" .=) <$> _rpEpubCfiPosition,+                  Just ("kind" .= _rpKind),+                  ("gbImagePosition" .=) <$> _rpGbImagePosition,+                  ("pdfPosition" .=) <$> _rpPdfPosition,+                  ("volumeId" .=) <$> _rpVolumeId,+                  ("updated" .=) <$> _rpUpdated,+                  ("gbTextPosition" .=) <$> _rpGbTextPosition])++--+-- /See:/ 'volumeSaleInfoOffersItem' smart constructor.+data VolumeSaleInfoOffersItem =+  VolumeSaleInfoOffersItem'+    { _vsioiFinskyOfferType :: !(Maybe (Textual Int32))+    , _vsioiRentalDuration  :: !(Maybe VolumeSaleInfoOffersItemRentalDuration)+    , _vsioiListPrice       :: !(Maybe VolumeSaleInfoOffersItemListPrice)+    , _vsioiRetailPrice     :: !(Maybe VolumeSaleInfoOffersItemRetailPrice)+    , _vsioiGiftable        :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoOffersItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsioiFinskyOfferType'+--+-- * 'vsioiRentalDuration'+--+-- * 'vsioiListPrice'+--+-- * 'vsioiRetailPrice'+--+-- * 'vsioiGiftable'+volumeSaleInfoOffersItem+    :: VolumeSaleInfoOffersItem+volumeSaleInfoOffersItem =+  VolumeSaleInfoOffersItem'+    { _vsioiFinskyOfferType = Nothing+    , _vsioiRentalDuration = Nothing+    , _vsioiListPrice = Nothing+    , _vsioiRetailPrice = Nothing+    , _vsioiGiftable = Nothing+    }+++-- | The finsky offer type (e.g., PURCHASE=0 RENTAL=3)+vsioiFinskyOfferType :: Lens' VolumeSaleInfoOffersItem (Maybe Int32)+vsioiFinskyOfferType+  = lens _vsioiFinskyOfferType+      (\ s a -> s{_vsioiFinskyOfferType = a})+      . mapping _Coerce++-- | The rental duration (for rental offers only).+vsioiRentalDuration :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemRentalDuration)+vsioiRentalDuration+  = lens _vsioiRentalDuration+      (\ s a -> s{_vsioiRentalDuration = a})++-- | Offer list (=undiscounted) price in Micros.+vsioiListPrice :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemListPrice)+vsioiListPrice+  = lens _vsioiListPrice+      (\ s a -> s{_vsioiListPrice = a})++-- | Offer retail (=discounted) price in Micros+vsioiRetailPrice :: Lens' VolumeSaleInfoOffersItem (Maybe VolumeSaleInfoOffersItemRetailPrice)+vsioiRetailPrice+  = lens _vsioiRetailPrice+      (\ s a -> s{_vsioiRetailPrice = a})++-- | Indicates whether the offer is giftable.+vsioiGiftable :: Lens' VolumeSaleInfoOffersItem (Maybe Bool)+vsioiGiftable+  = lens _vsioiGiftable+      (\ s a -> s{_vsioiGiftable = a})++instance FromJSON VolumeSaleInfoOffersItem where+        parseJSON+          = withObject "VolumeSaleInfoOffersItem"+              (\ o ->+                 VolumeSaleInfoOffersItem' <$>+                   (o .:? "finskyOfferType") <*>+                     (o .:? "rentalDuration")+                     <*> (o .:? "listPrice")+                     <*> (o .:? "retailPrice")+                     <*> (o .:? "giftable"))++instance ToJSON VolumeSaleInfoOffersItem where+        toJSON VolumeSaleInfoOffersItem'{..}+          = object+              (catMaybes+                 [("finskyOfferType" .=) <$> _vsioiFinskyOfferType,+                  ("rentalDuration" .=) <$> _vsioiRentalDuration,+                  ("listPrice" .=) <$> _vsioiListPrice,+                  ("retailPrice" .=) <$> _vsioiRetailPrice,+                  ("giftable" .=) <$> _vsioiGiftable])++--+-- /See:/ 'dictlayerDataDict' smart constructor.+data DictlayerDataDict =+  DictlayerDataDict'+    { _dddSource :: !(Maybe DictlayerDataDictSource)+    , _dddWords  :: !(Maybe [DictlayerDataDictWordsItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDict' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddSource'+--+-- * 'dddWords'+dictlayerDataDict+    :: DictlayerDataDict+dictlayerDataDict =+  DictlayerDataDict' {_dddSource = Nothing, _dddWords = Nothing}+++-- | The source, url and attribution for this dictionary data.+dddSource :: Lens' DictlayerDataDict (Maybe DictlayerDataDictSource)+dddSource+  = lens _dddSource (\ s a -> s{_dddSource = a})++dddWords :: Lens' DictlayerDataDict [DictlayerDataDictWordsItem]+dddWords+  = lens _dddWords (\ s a -> s{_dddWords = a}) .+      _Default+      . _Coerce++instance FromJSON DictlayerDataDict where+        parseJSON+          = withObject "DictlayerDataDict"+              (\ o ->+                 DictlayerDataDict' <$>+                   (o .:? "source") <*> (o .:? "words" .!= mempty))++instance ToJSON DictlayerDataDict where+        toJSON DictlayerDataDict'{..}+          = object+              (catMaybes+                 [("source" .=) <$> _dddSource,+                  ("words" .=) <$> _dddWords])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItem' smart constructor.+data DictlayerDataDictWordsItemSensesItem =+  DictlayerDataDictWordsItemSensesItem'+    { _dddwisiPronunciationURL :: !(Maybe Text)+    , _dddwisiConjugations     :: !(Maybe [DictlayerDataDictWordsItemSensesItemConjugationsItem])+    , _dddwisiPronunciation    :: !(Maybe Text)+    , _dddwisiSynonyms         :: !(Maybe [DictlayerDataDictWordsItemSensesItemSynonymsItem])+    , _dddwisiSource           :: !(Maybe DictlayerDataDictWordsItemSensesItemSource)+    , _dddwisiPartOfSpeech     :: !(Maybe Text)+    , _dddwisiDefinitions      :: !(Maybe [DictlayerDataDictWordsItemSensesItemDefinitionsItem])+    , _dddwisiSyllabification  :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisiPronunciationURL'+--+-- * 'dddwisiConjugations'+--+-- * 'dddwisiPronunciation'+--+-- * 'dddwisiSynonyms'+--+-- * 'dddwisiSource'+--+-- * 'dddwisiPartOfSpeech'+--+-- * 'dddwisiDefinitions'+--+-- * 'dddwisiSyllabification'+dictlayerDataDictWordsItemSensesItem+    :: DictlayerDataDictWordsItemSensesItem+dictlayerDataDictWordsItemSensesItem =+  DictlayerDataDictWordsItemSensesItem'+    { _dddwisiPronunciationURL = Nothing+    , _dddwisiConjugations = Nothing+    , _dddwisiPronunciation = Nothing+    , _dddwisiSynonyms = Nothing+    , _dddwisiSource = Nothing+    , _dddwisiPartOfSpeech = Nothing+    , _dddwisiDefinitions = Nothing+    , _dddwisiSyllabification = Nothing+    }+++dddwisiPronunciationURL :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)+dddwisiPronunciationURL+  = lens _dddwisiPronunciationURL+      (\ s a -> s{_dddwisiPronunciationURL = a})++dddwisiConjugations :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemConjugationsItem]+dddwisiConjugations+  = lens _dddwisiConjugations+      (\ s a -> s{_dddwisiConjugations = a})+      . _Default+      . _Coerce++dddwisiPronunciation :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)+dddwisiPronunciation+  = lens _dddwisiPronunciation+      (\ s a -> s{_dddwisiPronunciation = a})++dddwisiSynonyms :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemSynonymsItem]+dddwisiSynonyms+  = lens _dddwisiSynonyms+      (\ s a -> s{_dddwisiSynonyms = a})+      . _Default+      . _Coerce++dddwisiSource :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe DictlayerDataDictWordsItemSensesItemSource)+dddwisiSource+  = lens _dddwisiSource+      (\ s a -> s{_dddwisiSource = a})++dddwisiPartOfSpeech :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)+dddwisiPartOfSpeech+  = lens _dddwisiPartOfSpeech+      (\ s a -> s{_dddwisiPartOfSpeech = a})++dddwisiDefinitions :: Lens' DictlayerDataDictWordsItemSensesItem [DictlayerDataDictWordsItemSensesItemDefinitionsItem]+dddwisiDefinitions+  = lens _dddwisiDefinitions+      (\ s a -> s{_dddwisiDefinitions = a})+      . _Default+      . _Coerce++dddwisiSyllabification :: Lens' DictlayerDataDictWordsItemSensesItem (Maybe Text)+dddwisiSyllabification+  = lens _dddwisiSyllabification+      (\ s a -> s{_dddwisiSyllabification = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItem+         where+        parseJSON+          = withObject "DictlayerDataDictWordsItemSensesItem"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItem' <$>+                   (o .:? "pronunciationUrl") <*>+                     (o .:? "conjugations" .!= mempty)+                     <*> (o .:? "pronunciation")+                     <*> (o .:? "synonyms" .!= mempty)+                     <*> (o .:? "source")+                     <*> (o .:? "partOfSpeech")+                     <*> (o .:? "definitions" .!= mempty)+                     <*> (o .:? "syllabification"))++instance ToJSON DictlayerDataDictWordsItemSensesItem+         where+        toJSON DictlayerDataDictWordsItemSensesItem'{..}+          = object+              (catMaybes+                 [("pronunciationUrl" .=) <$>+                    _dddwisiPronunciationURL,+                  ("conjugations" .=) <$> _dddwisiConjugations,+                  ("pronunciation" .=) <$> _dddwisiPronunciation,+                  ("synonyms" .=) <$> _dddwisiSynonyms,+                  ("source" .=) <$> _dddwisiSource,+                  ("partOfSpeech" .=) <$> _dddwisiPartOfSpeech,+                  ("definitions" .=) <$> _dddwisiDefinitions,+                  ("syllabification" .=) <$> _dddwisiSyllabification])++-- | Recommendation related information for this volume.+--+-- /See:/ 'volumeRecommendedInfo' smart constructor.+newtype VolumeRecommendedInfo =+  VolumeRecommendedInfo'+    { _vriExplanation :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeRecommendedInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vriExplanation'+volumeRecommendedInfo+    :: VolumeRecommendedInfo+volumeRecommendedInfo = VolumeRecommendedInfo' {_vriExplanation = Nothing}+++-- | A text explaining why this volume is recommended.+vriExplanation :: Lens' VolumeRecommendedInfo (Maybe Text)+vriExplanation+  = lens _vriExplanation+      (\ s a -> s{_vriExplanation = a})++instance FromJSON VolumeRecommendedInfo where+        parseJSON+          = withObject "VolumeRecommendedInfo"+              (\ o ->+                 VolumeRecommendedInfo' <$> (o .:? "explanation"))++instance ToJSON VolumeRecommendedInfo where+        toJSON VolumeRecommendedInfo'{..}+          = object+              (catMaybes [("explanation" .=) <$> _vriExplanation])++--+-- /See:/ 'offers' smart constructor.+data Offers =+  Offers'+    { _oKind  :: !Text+    , _oItems :: !(Maybe [OffersItemsItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Offers' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oKind'+--+-- * 'oItems'+offers+    :: Offers+offers = Offers' {_oKind = "promooffer#offers", _oItems = Nothing}+++-- | Resource type.+oKind :: Lens' Offers Text+oKind = lens _oKind (\ s a -> s{_oKind = a})++-- | A list of offers.+oItems :: Lens' Offers [OffersItemsItem]+oItems+  = lens _oItems (\ s a -> s{_oItems = a}) . _Default .+      _Coerce++instance FromJSON Offers where+        parseJSON+          = withObject "Offers"+              (\ o ->+                 Offers' <$>+                   (o .:? "kind" .!= "promooffer#offers") <*>+                     (o .:? "items" .!= mempty))++instance ToJSON Offers where+        toJSON Offers'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _oKind), ("items" .=) <$> _oItems])++--+-- /See:/ 'discoveryclusters' smart constructor.+data Discoveryclusters =+  Discoveryclusters'+    { _dKind          :: !Text+    , _dTotalClusters :: !(Maybe (Textual Int32))+    , _dClusters      :: !(Maybe [DiscoveryclustersClustersItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Discoveryclusters' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dKind'+--+-- * 'dTotalClusters'+--+-- * 'dClusters'+discoveryclusters+    :: Discoveryclusters+discoveryclusters =+  Discoveryclusters'+    { _dKind = "books#discovery#clusters"+    , _dTotalClusters = Nothing+    , _dClusters = Nothing+    }+++-- | Resorce type.+dKind :: Lens' Discoveryclusters Text+dKind = lens _dKind (\ s a -> s{_dKind = a})++dTotalClusters :: Lens' Discoveryclusters (Maybe Int32)+dTotalClusters+  = lens _dTotalClusters+      (\ s a -> s{_dTotalClusters = a})+      . mapping _Coerce++dClusters :: Lens' Discoveryclusters [DiscoveryclustersClustersItem]+dClusters+  = lens _dClusters (\ s a -> s{_dClusters = a}) .+      _Default+      . _Coerce++instance FromJSON Discoveryclusters where+        parseJSON+          = withObject "Discoveryclusters"+              (\ o ->+                 Discoveryclusters' <$>+                   (o .:? "kind" .!= "books#discovery#clusters") <*>+                     (o .:? "totalClusters")+                     <*> (o .:? "clusters" .!= mempty))++instance ToJSON Discoveryclusters where+        toJSON Discoveryclusters'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _dKind),+                  ("totalClusters" .=) <$> _dTotalClusters,+                  ("clusters" .=) <$> _dClusters])++--+-- /See:/ 'volumeseriesInfoVolumeSeriesItem' smart constructor.+data VolumeseriesInfoVolumeSeriesItem =+  VolumeseriesInfoVolumeSeriesItem'+    { _vivsiSeriesId       :: !(Maybe Text)+    , _vivsiSeriesBookType :: !(Maybe Text)+    , _vivsiOrderNumber    :: !(Maybe (Textual Int32))+    , _vivsiIssue          :: !(Maybe [VolumeseriesInfoVolumeSeriesItemIssueItem])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeseriesInfoVolumeSeriesItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vivsiSeriesId'+--+-- * 'vivsiSeriesBookType'+--+-- * 'vivsiOrderNumber'+--+-- * 'vivsiIssue'+volumeseriesInfoVolumeSeriesItem+    :: VolumeseriesInfoVolumeSeriesItem+volumeseriesInfoVolumeSeriesItem =+  VolumeseriesInfoVolumeSeriesItem'+    { _vivsiSeriesId = Nothing+    , _vivsiSeriesBookType = Nothing+    , _vivsiOrderNumber = Nothing+    , _vivsiIssue = Nothing+    }+++-- | The series id.+vivsiSeriesId :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Text)+vivsiSeriesId+  = lens _vivsiSeriesId+      (\ s a -> s{_vivsiSeriesId = a})++-- | The book type in the context of series. Examples - Single Issue,+-- Collection Edition, etc.+vivsiSeriesBookType :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Text)+vivsiSeriesBookType+  = lens _vivsiSeriesBookType+      (\ s a -> s{_vivsiSeriesBookType = a})++-- | The book order number in the series.+vivsiOrderNumber :: Lens' VolumeseriesInfoVolumeSeriesItem (Maybe Int32)+vivsiOrderNumber+  = lens _vivsiOrderNumber+      (\ s a -> s{_vivsiOrderNumber = a})+      . mapping _Coerce++-- | List of issues. Applicable only for Collection Edition and Omnibus.+vivsiIssue :: Lens' VolumeseriesInfoVolumeSeriesItem [VolumeseriesInfoVolumeSeriesItemIssueItem]+vivsiIssue+  = lens _vivsiIssue (\ s a -> s{_vivsiIssue = a}) .+      _Default+      . _Coerce++instance FromJSON VolumeseriesInfoVolumeSeriesItem+         where+        parseJSON+          = withObject "VolumeseriesInfoVolumeSeriesItem"+              (\ o ->+                 VolumeseriesInfoVolumeSeriesItem' <$>+                   (o .:? "seriesId") <*> (o .:? "seriesBookType") <*>+                     (o .:? "orderNumber")+                     <*> (o .:? "issue" .!= mempty))++instance ToJSON VolumeseriesInfoVolumeSeriesItem+         where+        toJSON VolumeseriesInfoVolumeSeriesItem'{..}+          = object+              (catMaybes+                 [("seriesId" .=) <$> _vivsiSeriesId,+                  ("seriesBookType" .=) <$> _vivsiSeriesBookType,+                  ("orderNumber" .=) <$> _vivsiOrderNumber,+                  ("issue" .=) <$> _vivsiIssue])++-- | User settings in sub-objects, each for different purposes.+--+-- /See:/ 'userSettingsNotesExport' smart constructor.+data UserSettingsNotesExport =+  UserSettingsNotesExport'+    { _usneFolderName :: !(Maybe Text)+    , _usneIsEnabled  :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotesExport' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usneFolderName'+--+-- * 'usneIsEnabled'+userSettingsNotesExport+    :: UserSettingsNotesExport+userSettingsNotesExport =+  UserSettingsNotesExport' {_usneFolderName = Nothing, _usneIsEnabled = Nothing}+++usneFolderName :: Lens' UserSettingsNotesExport (Maybe Text)+usneFolderName+  = lens _usneFolderName+      (\ s a -> s{_usneFolderName = a})++usneIsEnabled :: Lens' UserSettingsNotesExport (Maybe Bool)+usneIsEnabled+  = lens _usneIsEnabled+      (\ s a -> s{_usneIsEnabled = a})++instance FromJSON UserSettingsNotesExport where+        parseJSON+          = withObject "UserSettingsNotesExport"+              (\ o ->+                 UserSettingsNotesExport' <$>+                   (o .:? "folderName") <*> (o .:? "isEnabled"))++instance ToJSON UserSettingsNotesExport where+        toJSON UserSettingsNotesExport'{..}+          = object+              (catMaybes+                 [("folderName" .=) <$> _usneFolderName,+                  ("isEnabled" .=) <$> _usneIsEnabled])++--+-- /See:/ 'concurrentAccessRestriction' smart constructor.+data ConcurrentAccessRestriction =+  ConcurrentAccessRestriction'+    { _carMaxConcurrentDevices :: !(Maybe (Textual Int32))+    , _carSignature            :: !(Maybe Text)+    , _carTimeWindowSeconds    :: !(Maybe (Textual Int32))+    , _carKind                 :: !Text+    , _carReasonCode           :: !(Maybe Text)+    , _carVolumeId             :: !(Maybe Text)+    , _carRestricted           :: !(Maybe Bool)+    , _carSource               :: !(Maybe Text)+    , _carDeviceAllowed        :: !(Maybe Bool)+    , _carMessage              :: !(Maybe Text)+    , _carNonce                :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ConcurrentAccessRestriction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'carMaxConcurrentDevices'+--+-- * 'carSignature'+--+-- * 'carTimeWindowSeconds'+--+-- * 'carKind'+--+-- * 'carReasonCode'+--+-- * 'carVolumeId'+--+-- * 'carRestricted'+--+-- * 'carSource'+--+-- * 'carDeviceAllowed'+--+-- * 'carMessage'+--+-- * 'carNonce'+concurrentAccessRestriction+    :: ConcurrentAccessRestriction+concurrentAccessRestriction =+  ConcurrentAccessRestriction'+    { _carMaxConcurrentDevices = Nothing+    , _carSignature = Nothing+    , _carTimeWindowSeconds = Nothing+    , _carKind = "books#concurrentAccessRestriction"+    , _carReasonCode = Nothing+    , _carVolumeId = Nothing+    , _carRestricted = Nothing+    , _carSource = Nothing+    , _carDeviceAllowed = Nothing+    , _carMessage = Nothing+    , _carNonce = Nothing+    }+++-- | The maximum number of concurrent access licenses for this volume.+carMaxConcurrentDevices :: Lens' ConcurrentAccessRestriction (Maybe Int32)+carMaxConcurrentDevices+  = lens _carMaxConcurrentDevices+      (\ s a -> s{_carMaxConcurrentDevices = a})+      . mapping _Coerce++-- | Response signature.+carSignature :: Lens' ConcurrentAccessRestriction (Maybe Text)+carSignature+  = lens _carSignature (\ s a -> s{_carSignature = a})++-- | Time in seconds for license auto-expiration.+carTimeWindowSeconds :: Lens' ConcurrentAccessRestriction (Maybe Int32)+carTimeWindowSeconds+  = lens _carTimeWindowSeconds+      (\ s a -> s{_carTimeWindowSeconds = a})+      . mapping _Coerce++-- | Resource type.+carKind :: Lens' ConcurrentAccessRestriction Text+carKind = lens _carKind (\ s a -> s{_carKind = a})++-- | Error\/warning reason code.+carReasonCode :: Lens' ConcurrentAccessRestriction (Maybe Text)+carReasonCode+  = lens _carReasonCode+      (\ s a -> s{_carReasonCode = a})++-- | Identifies the volume for which this entry applies.+carVolumeId :: Lens' ConcurrentAccessRestriction (Maybe Text)+carVolumeId+  = lens _carVolumeId (\ s a -> s{_carVolumeId = a})++-- | Whether this volume has any concurrent access restrictions.+carRestricted :: Lens' ConcurrentAccessRestriction (Maybe Bool)+carRestricted+  = lens _carRestricted+      (\ s a -> s{_carRestricted = a})++-- | Client app identifier for verification. Download access and+-- client-validation only.+carSource :: Lens' ConcurrentAccessRestriction (Maybe Text)+carSource+  = lens _carSource (\ s a -> s{_carSource = a})++-- | Whether access is granted for this (user, device, volume).+carDeviceAllowed :: Lens' ConcurrentAccessRestriction (Maybe Bool)+carDeviceAllowed+  = lens _carDeviceAllowed+      (\ s a -> s{_carDeviceAllowed = a})++-- | Error\/warning message.+carMessage :: Lens' ConcurrentAccessRestriction (Maybe Text)+carMessage+  = lens _carMessage (\ s a -> s{_carMessage = a})++-- | Client nonce for verification. Download access and client-validation+-- only.+carNonce :: Lens' ConcurrentAccessRestriction (Maybe Text)+carNonce = lens _carNonce (\ s a -> s{_carNonce = a})++instance FromJSON ConcurrentAccessRestriction where+        parseJSON+          = withObject "ConcurrentAccessRestriction"+              (\ o ->+                 ConcurrentAccessRestriction' <$>+                   (o .:? "maxConcurrentDevices") <*>+                     (o .:? "signature")+                     <*> (o .:? "timeWindowSeconds")+                     <*>+                     (o .:? "kind" .!=+                        "books#concurrentAccessRestriction")+                     <*> (o .:? "reasonCode")+                     <*> (o .:? "volumeId")+                     <*> (o .:? "restricted")+                     <*> (o .:? "source")+                     <*> (o .:? "deviceAllowed")+                     <*> (o .:? "message")+                     <*> (o .:? "nonce"))++instance ToJSON ConcurrentAccessRestriction where+        toJSON ConcurrentAccessRestriction'{..}+          = object+              (catMaybes+                 [("maxConcurrentDevices" .=) <$>+                    _carMaxConcurrentDevices,+                  ("signature" .=) <$> _carSignature,+                  ("timeWindowSeconds" .=) <$> _carTimeWindowSeconds,+                  Just ("kind" .= _carKind),+                  ("reasonCode" .=) <$> _carReasonCode,+                  ("volumeId" .=) <$> _carVolumeId,+                  ("restricted" .=) <$> _carRestricted,+                  ("source" .=) <$> _carSource,+                  ("deviceAllowed" .=) <$> _carDeviceAllowed,+                  ("message" .=) <$> _carMessage,+                  ("nonce" .=) <$> _carNonce])++--+-- /See:/ 'volumes' smart constructor.+data Volumes =+  Volumes'+    { _v1TotalItems :: !(Maybe (Textual Int32))+    , _v1Kind       :: !Text+    , _v1Items      :: !(Maybe [Volume])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Volumes' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'v1TotalItems'+--+-- * 'v1Kind'+--+-- * 'v1Items'+volumes+    :: Volumes+volumes =+  Volumes'+    {_v1TotalItems = Nothing, _v1Kind = "books#volumes", _v1Items = Nothing}+++-- | Total number of volumes found. This might be greater than the number of+-- volumes returned in this response if results have been paginated.+v1TotalItems :: Lens' Volumes (Maybe Int32)+v1TotalItems+  = lens _v1TotalItems (\ s a -> s{_v1TotalItems = a})+      . mapping _Coerce++-- | Resource type.+v1Kind :: Lens' Volumes Text+v1Kind = lens _v1Kind (\ s a -> s{_v1Kind = a})++-- | A list of volumes.+v1Items :: Lens' Volumes [Volume]+v1Items+  = lens _v1Items (\ s a -> s{_v1Items = a}) . _Default+      . _Coerce++instance FromJSON Volumes where+        parseJSON+          = withObject "Volumes"+              (\ o ->+                 Volumes' <$>+                   (o .:? "totalItems") <*>+                     (o .:? "kind" .!= "books#volumes")+                     <*> (o .:? "items" .!= mempty))++instance ToJSON Volumes where+        toJSON Volumes'{..}+          = object+              (catMaybes+                 [("totalItems" .=) <$> _v1TotalItems,+                  Just ("kind" .= _v1Kind), ("items" .=) <$> _v1Items])++--+-- /See:/ 'userSettingsNotificationMatchMyInterests' smart constructor.+newtype UserSettingsNotificationMatchMyInterests =+  UserSettingsNotificationMatchMyInterests'+    { _usnmmiOptedState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotificationMatchMyInterests' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnmmiOptedState'+userSettingsNotificationMatchMyInterests+    :: UserSettingsNotificationMatchMyInterests+userSettingsNotificationMatchMyInterests =+  UserSettingsNotificationMatchMyInterests' {_usnmmiOptedState = Nothing}+++usnmmiOptedState :: Lens' UserSettingsNotificationMatchMyInterests (Maybe Text)+usnmmiOptedState+  = lens _usnmmiOptedState+      (\ s a -> s{_usnmmiOptedState = a})++instance FromJSON+           UserSettingsNotificationMatchMyInterests+         where+        parseJSON+          = withObject+              "UserSettingsNotificationMatchMyInterests"+              (\ o ->+                 UserSettingsNotificationMatchMyInterests' <$>+                   (o .:? "opted_state"))++instance ToJSON+           UserSettingsNotificationMatchMyInterests+         where+        toJSON UserSettingsNotificationMatchMyInterests'{..}+          = object+              (catMaybes+                 [("opted_state" .=) <$> _usnmmiOptedState])++--+-- /See:/ 'bookshelves' smart constructor.+data Bookshelves =+  Bookshelves'+    { _booKind  :: !Text+    , _booItems :: !(Maybe [Bookshelf])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Bookshelves' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'booKind'+--+-- * 'booItems'+bookshelves+    :: Bookshelves+bookshelves = Bookshelves' {_booKind = "books#bookshelves", _booItems = Nothing}+++-- | Resource type.+booKind :: Lens' Bookshelves Text+booKind = lens _booKind (\ s a -> s{_booKind = a})++-- | A list of bookshelves.+booItems :: Lens' Bookshelves [Bookshelf]+booItems+  = lens _booItems (\ s a -> s{_booItems = a}) .+      _Default+      . _Coerce++instance FromJSON Bookshelves where+        parseJSON+          = withObject "Bookshelves"+              (\ o ->+                 Bookshelves' <$>+                   (o .:? "kind" .!= "books#bookshelves") <*>+                     (o .:? "items" .!= mempty))++instance ToJSON Bookshelves where+        toJSON Bookshelves'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _booKind),+                  ("items" .=) <$> _booItems])++-- | The source, url and attribution for this dictionary data.+--+-- /See:/ 'dictlayerDataDictSource' smart constructor.+data DictlayerDataDictSource =+  DictlayerDataDictSource'+    { _dddsURL         :: !(Maybe Text)+    , _dddsAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddsURL'+--+-- * 'dddsAttribution'+dictlayerDataDictSource+    :: DictlayerDataDictSource+dictlayerDataDictSource =+  DictlayerDataDictSource' {_dddsURL = Nothing, _dddsAttribution = Nothing}+++dddsURL :: Lens' DictlayerDataDictSource (Maybe Text)+dddsURL = lens _dddsURL (\ s a -> s{_dddsURL = a})++dddsAttribution :: Lens' DictlayerDataDictSource (Maybe Text)+dddsAttribution+  = lens _dddsAttribution+      (\ s a -> s{_dddsAttribution = a})++instance FromJSON DictlayerDataDictSource where+        parseJSON+          = withObject "DictlayerDataDictSource"+              (\ o ->+                 DictlayerDataDictSource' <$>+                   (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON DictlayerDataDictSource where+        toJSON DictlayerDataDictSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddsURL,+                  ("attribution" .=) <$> _dddsAttribution])++--+-- /See:/ 'downloadAccesses' smart constructor.+data DownloadAccesses =+  DownloadAccesses'+    { _daKind               :: !Text+    , _daDownloadAccessList :: !(Maybe [DownloadAccessRestriction])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DownloadAccesses' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'daKind'+--+-- * 'daDownloadAccessList'+downloadAccesses+    :: DownloadAccesses+downloadAccesses =+  DownloadAccesses'+    {_daKind = "books#downloadAccesses", _daDownloadAccessList = Nothing}+++-- | Resource type.+daKind :: Lens' DownloadAccesses Text+daKind = lens _daKind (\ s a -> s{_daKind = a})++-- | A list of download access responses.+daDownloadAccessList :: Lens' DownloadAccesses [DownloadAccessRestriction]+daDownloadAccessList+  = lens _daDownloadAccessList+      (\ s a -> s{_daDownloadAccessList = a})+      . _Default+      . _Coerce++instance FromJSON DownloadAccesses where+        parseJSON+          = withObject "DownloadAccesses"+              (\ o ->+                 DownloadAccesses' <$>+                   (o .:? "kind" .!= "books#downloadAccesses") <*>+                     (o .:? "downloadAccessList" .!= mempty))++instance ToJSON DownloadAccesses where+        toJSON DownloadAccesses'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _daKind),+                  ("downloadAccessList" .=) <$> _daDownloadAccessList])++--+-- /See:/ 'geolayerDataGeoViewportHi' smart constructor.+data GeolayerDataGeoViewportHi =+  GeolayerDataGeoViewportHi'+    { _gdgvhLatitude  :: !(Maybe (Textual Double))+    , _gdgvhLongitude :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeolayerDataGeoViewportHi' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gdgvhLatitude'+--+-- * 'gdgvhLongitude'+geolayerDataGeoViewportHi+    :: GeolayerDataGeoViewportHi+geolayerDataGeoViewportHi =+  GeolayerDataGeoViewportHi'+    {_gdgvhLatitude = Nothing, _gdgvhLongitude = Nothing}+++gdgvhLatitude :: Lens' GeolayerDataGeoViewportHi (Maybe Double)+gdgvhLatitude+  = lens _gdgvhLatitude+      (\ s a -> s{_gdgvhLatitude = a})+      . mapping _Coerce++gdgvhLongitude :: Lens' GeolayerDataGeoViewportHi (Maybe Double)+gdgvhLongitude+  = lens _gdgvhLongitude+      (\ s a -> s{_gdgvhLongitude = a})+      . mapping _Coerce++instance FromJSON GeolayerDataGeoViewportHi where+        parseJSON+          = withObject "GeolayerDataGeoViewportHi"+              (\ o ->+                 GeolayerDataGeoViewportHi' <$>+                   (o .:? "latitude") <*> (o .:? "longitude"))++instance ToJSON GeolayerDataGeoViewportHi where+        toJSON GeolayerDataGeoViewportHi'{..}+          = object+              (catMaybes+                 [("latitude" .=) <$> _gdgvhLatitude,+                  ("longitude" .=) <$> _gdgvhLongitude])++-- | General volume information.+--+-- /See:/ 'volumeVolumeInfo' smart constructor.+data VolumeVolumeInfo =+  VolumeVolumeInfo'+    { _vviImageLinks          :: !(Maybe VolumeVolumeInfoImageLinks)+    , _vviPanelizationSummary :: !(Maybe VolumeVolumeInfoPanelizationSummary)+    , _vviAverageRating       :: !(Maybe (Textual Double))+    , _vviRatingsCount        :: !(Maybe (Textual Int32))+    , _vviCanonicalVolumeLink :: !(Maybe Text)+    , _vviReadingModes        :: !(Maybe JSONValue)+    , _vviIndustryIdentifiers :: !(Maybe [VolumeVolumeInfoIndustryIdentifiersItem])+    , _vviSeriesInfo          :: !(Maybe VolumeseriesInfo)+    , _vviPrintedPageCount    :: !(Maybe (Textual Int32))+    , _vviMainCategory        :: !(Maybe Text)+    , _vviContentVersion      :: !(Maybe Text)+    , _vviSamplePageCount     :: !(Maybe (Textual Int32))+    , _vviCategories          :: !(Maybe [Text])+    , _vviAuthors             :: !(Maybe [Text])+    , _vviComicsContent       :: !(Maybe Bool)+    , _vviAllowAnonLogging    :: !(Maybe Bool)+    , _vviSubtitle            :: !(Maybe Text)+    , _vviPublishedDate       :: !(Maybe Text)+    , _vviMaturityRating      :: !(Maybe Text)+    , _vviPreviewLink         :: !(Maybe Text)+    , _vviLanguage            :: !(Maybe Text)+    , _vviTitle               :: !(Maybe Text)+    , _vviPageCount           :: !(Maybe (Textual Int32))+    , _vviDimensions          :: !(Maybe VolumeVolumeInfoDimensions)+    , _vviInfoLink            :: !(Maybe Text)+    , _vviPublisher           :: !(Maybe Text)+    , _vviDescription         :: !(Maybe Text)+    , _vviPrintType           :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeVolumeInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vviImageLinks'+--+-- * 'vviPanelizationSummary'+--+-- * 'vviAverageRating'+--+-- * 'vviRatingsCount'+--+-- * 'vviCanonicalVolumeLink'+--+-- * 'vviReadingModes'+--+-- * 'vviIndustryIdentifiers'+--+-- * 'vviSeriesInfo'+--+-- * 'vviPrintedPageCount'+--+-- * 'vviMainCategory'+--+-- * 'vviContentVersion'+--+-- * 'vviSamplePageCount'+--+-- * 'vviCategories'+--+-- * 'vviAuthors'+--+-- * 'vviComicsContent'+--+-- * 'vviAllowAnonLogging'+--+-- * 'vviSubtitle'+--+-- * 'vviPublishedDate'+--+-- * 'vviMaturityRating'+--+-- * 'vviPreviewLink'+--+-- * 'vviLanguage'+--+-- * 'vviTitle'+--+-- * 'vviPageCount'+--+-- * 'vviDimensions'+--+-- * 'vviInfoLink'+--+-- * 'vviPublisher'+--+-- * 'vviDescription'+--+-- * 'vviPrintType'+volumeVolumeInfo+    :: VolumeVolumeInfo+volumeVolumeInfo =+  VolumeVolumeInfo'+    { _vviImageLinks = Nothing+    , _vviPanelizationSummary = Nothing+    , _vviAverageRating = Nothing+    , _vviRatingsCount = Nothing+    , _vviCanonicalVolumeLink = Nothing+    , _vviReadingModes = Nothing+    , _vviIndustryIdentifiers = Nothing+    , _vviSeriesInfo = Nothing+    , _vviPrintedPageCount = Nothing+    , _vviMainCategory = Nothing+    , _vviContentVersion = Nothing+    , _vviSamplePageCount = Nothing+    , _vviCategories = Nothing+    , _vviAuthors = Nothing+    , _vviComicsContent = Nothing+    , _vviAllowAnonLogging = Nothing+    , _vviSubtitle = Nothing+    , _vviPublishedDate = Nothing+    , _vviMaturityRating = Nothing+    , _vviPreviewLink = Nothing+    , _vviLanguage = Nothing+    , _vviTitle = Nothing+    , _vviPageCount = Nothing+    , _vviDimensions = Nothing+    , _vviInfoLink = Nothing+    , _vviPublisher = Nothing+    , _vviDescription = Nothing+    , _vviPrintType = Nothing+    }+++-- | A list of image links for all the sizes that are available. (In LITE+-- projection.)+vviImageLinks :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoImageLinks)+vviImageLinks+  = lens _vviImageLinks+      (\ s a -> s{_vviImageLinks = a})++-- | A top-level summary of the panelization info in this volume.+vviPanelizationSummary :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoPanelizationSummary)+vviPanelizationSummary+  = lens _vviPanelizationSummary+      (\ s a -> s{_vviPanelizationSummary = a})++-- | The mean review rating for this volume. (min = 1.0, max = 5.0)+vviAverageRating :: Lens' VolumeVolumeInfo (Maybe Double)+vviAverageRating+  = lens _vviAverageRating+      (\ s a -> s{_vviAverageRating = a})+      . mapping _Coerce++-- | The number of review ratings for this volume.+vviRatingsCount :: Lens' VolumeVolumeInfo (Maybe Int32)+vviRatingsCount+  = lens _vviRatingsCount+      (\ s a -> s{_vviRatingsCount = a})+      . mapping _Coerce++-- | Canonical URL for a volume. (In LITE projection.)+vviCanonicalVolumeLink :: Lens' VolumeVolumeInfo (Maybe Text)+vviCanonicalVolumeLink+  = lens _vviCanonicalVolumeLink+      (\ s a -> s{_vviCanonicalVolumeLink = a})++-- | The reading modes available for this volume.+vviReadingModes :: Lens' VolumeVolumeInfo (Maybe JSONValue)+vviReadingModes+  = lens _vviReadingModes+      (\ s a -> s{_vviReadingModes = a})++-- | Industry standard identifiers for this volume.+vviIndustryIdentifiers :: Lens' VolumeVolumeInfo [VolumeVolumeInfoIndustryIdentifiersItem]+vviIndustryIdentifiers+  = lens _vviIndustryIdentifiers+      (\ s a -> s{_vviIndustryIdentifiers = a})+      . _Default+      . _Coerce++vviSeriesInfo :: Lens' VolumeVolumeInfo (Maybe VolumeseriesInfo)+vviSeriesInfo+  = lens _vviSeriesInfo+      (\ s a -> s{_vviSeriesInfo = a})++-- | Total number of printed pages in generated pdf representation.+vviPrintedPageCount :: Lens' VolumeVolumeInfo (Maybe Int32)+vviPrintedPageCount+  = lens _vviPrintedPageCount+      (\ s a -> s{_vviPrintedPageCount = a})+      . mapping _Coerce++-- | The main category to which this volume belongs. It will be the category+-- from the categories list returned below that has the highest weight.+vviMainCategory :: Lens' VolumeVolumeInfo (Maybe Text)+vviMainCategory+  = lens _vviMainCategory+      (\ s a -> s{_vviMainCategory = a})++-- | An identifier for the version of the volume content (text & images). (In+-- LITE projection)+vviContentVersion :: Lens' VolumeVolumeInfo (Maybe Text)+vviContentVersion+  = lens _vviContentVersion+      (\ s a -> s{_vviContentVersion = a})++-- | Total number of sample pages as per publisher metadata.+vviSamplePageCount :: Lens' VolumeVolumeInfo (Maybe Int32)+vviSamplePageCount+  = lens _vviSamplePageCount+      (\ s a -> s{_vviSamplePageCount = a})+      . mapping _Coerce++-- | A list of subject categories, such as \"Fiction\", \"Suspense\", etc.+vviCategories :: Lens' VolumeVolumeInfo [Text]+vviCategories+  = lens _vviCategories+      (\ s a -> s{_vviCategories = a})+      . _Default+      . _Coerce++-- | The names of the authors and\/or editors for this volume. (In LITE+-- projection)+vviAuthors :: Lens' VolumeVolumeInfo [Text]+vviAuthors+  = lens _vviAuthors (\ s a -> s{_vviAuthors = a}) .+      _Default+      . _Coerce++-- | Whether the volume has comics content.+vviComicsContent :: Lens' VolumeVolumeInfo (Maybe Bool)+vviComicsContent+  = lens _vviComicsContent+      (\ s a -> s{_vviComicsContent = a})++-- | Whether anonymous logging should be allowed.+vviAllowAnonLogging :: Lens' VolumeVolumeInfo (Maybe Bool)+vviAllowAnonLogging+  = lens _vviAllowAnonLogging+      (\ s a -> s{_vviAllowAnonLogging = a})++-- | Volume subtitle. (In LITE projection.)+vviSubtitle :: Lens' VolumeVolumeInfo (Maybe Text)+vviSubtitle+  = lens _vviSubtitle (\ s a -> s{_vviSubtitle = a})++-- | Date of publication. (In LITE projection.)+vviPublishedDate :: Lens' VolumeVolumeInfo (Maybe Text)+vviPublishedDate+  = lens _vviPublishedDate+      (\ s a -> s{_vviPublishedDate = a})++vviMaturityRating :: Lens' VolumeVolumeInfo (Maybe Text)+vviMaturityRating+  = lens _vviMaturityRating+      (\ s a -> s{_vviMaturityRating = a})++-- | URL to preview this volume on the Google Books site.+vviPreviewLink :: Lens' VolumeVolumeInfo (Maybe Text)+vviPreviewLink+  = lens _vviPreviewLink+      (\ s a -> s{_vviPreviewLink = a})++-- | Best language for this volume (based on content). It is the two-letter+-- ISO 639-1 code such as \'fr\', \'en\', etc.+vviLanguage :: Lens' VolumeVolumeInfo (Maybe Text)+vviLanguage+  = lens _vviLanguage (\ s a -> s{_vviLanguage = a})++-- | Volume title. (In LITE projection.)+vviTitle :: Lens' VolumeVolumeInfo (Maybe Text)+vviTitle = lens _vviTitle (\ s a -> s{_vviTitle = a})++-- | Total number of pages as per publisher metadata.+vviPageCount :: Lens' VolumeVolumeInfo (Maybe Int32)+vviPageCount+  = lens _vviPageCount (\ s a -> s{_vviPageCount = a})+      . mapping _Coerce++-- | Physical dimensions of this volume.+vviDimensions :: Lens' VolumeVolumeInfo (Maybe VolumeVolumeInfoDimensions)+vviDimensions+  = lens _vviDimensions+      (\ s a -> s{_vviDimensions = a})++-- | URL to view information about this volume on the Google Books site. (In+-- LITE projection)+vviInfoLink :: Lens' VolumeVolumeInfo (Maybe Text)+vviInfoLink+  = lens _vviInfoLink (\ s a -> s{_vviInfoLink = a})++-- | Publisher of this volume. (In LITE projection.)+vviPublisher :: Lens' VolumeVolumeInfo (Maybe Text)+vviPublisher+  = lens _vviPublisher (\ s a -> s{_vviPublisher = a})++-- | A synopsis of the volume. The text of the description is formatted in+-- HTML and includes simple formatting elements, such as b, i, and br tags.+-- (In LITE projection.)+vviDescription :: Lens' VolumeVolumeInfo (Maybe Text)+vviDescription+  = lens _vviDescription+      (\ s a -> s{_vviDescription = a})++-- | Type of publication of this volume. Possible values are BOOK or+-- MAGAZINE.+vviPrintType :: Lens' VolumeVolumeInfo (Maybe Text)+vviPrintType+  = lens _vviPrintType (\ s a -> s{_vviPrintType = a})++instance FromJSON VolumeVolumeInfo where+        parseJSON+          = withObject "VolumeVolumeInfo"+              (\ o ->+                 VolumeVolumeInfo' <$>+                   (o .:? "imageLinks") <*>+                     (o .:? "panelizationSummary")+                     <*> (o .:? "averageRating")+                     <*> (o .:? "ratingsCount")+                     <*> (o .:? "canonicalVolumeLink")+                     <*> (o .:? "readingModes")+                     <*> (o .:? "industryIdentifiers" .!= mempty)+                     <*> (o .:? "seriesInfo")+                     <*> (o .:? "printedPageCount")+                     <*> (o .:? "mainCategory")+                     <*> (o .:? "contentVersion")+                     <*> (o .:? "samplePageCount")+                     <*> (o .:? "categories" .!= mempty)+                     <*> (o .:? "authors" .!= mempty)+                     <*> (o .:? "comicsContent")+                     <*> (o .:? "allowAnonLogging")+                     <*> (o .:? "subtitle")+                     <*> (o .:? "publishedDate")+                     <*> (o .:? "maturityRating")+                     <*> (o .:? "previewLink")+                     <*> (o .:? "language")+                     <*> (o .:? "title")+                     <*> (o .:? "pageCount")+                     <*> (o .:? "dimensions")+                     <*> (o .:? "infoLink")+                     <*> (o .:? "publisher")+                     <*> (o .:? "description")+                     <*> (o .:? "printType"))++instance ToJSON VolumeVolumeInfo where+        toJSON VolumeVolumeInfo'{..}+          = object+              (catMaybes+                 [("imageLinks" .=) <$> _vviImageLinks,+                  ("panelizationSummary" .=) <$>+                    _vviPanelizationSummary,+                  ("averageRating" .=) <$> _vviAverageRating,+                  ("ratingsCount" .=) <$> _vviRatingsCount,+                  ("canonicalVolumeLink" .=) <$>+                    _vviCanonicalVolumeLink,+                  ("readingModes" .=) <$> _vviReadingModes,+                  ("industryIdentifiers" .=) <$>+                    _vviIndustryIdentifiers,+                  ("seriesInfo" .=) <$> _vviSeriesInfo,+                  ("printedPageCount" .=) <$> _vviPrintedPageCount,+                  ("mainCategory" .=) <$> _vviMainCategory,+                  ("contentVersion" .=) <$> _vviContentVersion,+                  ("samplePageCount" .=) <$> _vviSamplePageCount,+                  ("categories" .=) <$> _vviCategories,+                  ("authors" .=) <$> _vviAuthors,+                  ("comicsContent" .=) <$> _vviComicsContent,+                  ("allowAnonLogging" .=) <$> _vviAllowAnonLogging,+                  ("subtitle" .=) <$> _vviSubtitle,+                  ("publishedDate" .=) <$> _vviPublishedDate,+                  ("maturityRating" .=) <$> _vviMaturityRating,+                  ("previewLink" .=) <$> _vviPreviewLink,+                  ("language" .=) <$> _vviLanguage,+                  ("title" .=) <$> _vviTitle,+                  ("pageCount" .=) <$> _vviPageCount,+                  ("dimensions" .=) <$> _vviDimensions,+                  ("infoLink" .=) <$> _vviInfoLink,+                  ("publisher" .=) <$> _vviPublisher,+                  ("description" .=) <$> _vviDescription,+                  ("printType" .=) <$> _vviPrintType])++--+-- /See:/ 'metadataItemsItem' smart constructor.+data MetadataItemsItem =+  MetadataItemsItem'+    { _miiSize         :: !(Maybe (Textual Int64))+    , _miiVersion      :: !(Maybe (Textual Int64))+    , _miiLanguage     :: !(Maybe Text)+    , _miiDownloadURL  :: !(Maybe Text)+    , _miiEncryptedKey :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'miiSize'+--+-- * 'miiVersion'+--+-- * 'miiLanguage'+--+-- * 'miiDownloadURL'+--+-- * 'miiEncryptedKey'+metadataItemsItem+    :: MetadataItemsItem+metadataItemsItem =+  MetadataItemsItem'+    { _miiSize = Nothing+    , _miiVersion = Nothing+    , _miiLanguage = Nothing+    , _miiDownloadURL = Nothing+    , _miiEncryptedKey = Nothing+    }+++miiSize :: Lens' MetadataItemsItem (Maybe Int64)+miiSize+  = lens _miiSize (\ s a -> s{_miiSize = a}) .+      mapping _Coerce++miiVersion :: Lens' MetadataItemsItem (Maybe Int64)+miiVersion+  = lens _miiVersion (\ s a -> s{_miiVersion = a}) .+      mapping _Coerce++miiLanguage :: Lens' MetadataItemsItem (Maybe Text)+miiLanguage+  = lens _miiLanguage (\ s a -> s{_miiLanguage = a})++miiDownloadURL :: Lens' MetadataItemsItem (Maybe Text)+miiDownloadURL+  = lens _miiDownloadURL+      (\ s a -> s{_miiDownloadURL = a})++miiEncryptedKey :: Lens' MetadataItemsItem (Maybe Text)+miiEncryptedKey+  = lens _miiEncryptedKey+      (\ s a -> s{_miiEncryptedKey = a})++instance FromJSON MetadataItemsItem where+        parseJSON+          = withObject "MetadataItemsItem"+              (\ o ->+                 MetadataItemsItem' <$>+                   (o .:? "size") <*> (o .:? "version") <*>+                     (o .:? "language")+                     <*> (o .:? "download_url")+                     <*> (o .:? "encrypted_key"))++instance ToJSON MetadataItemsItem where+        toJSON MetadataItemsItem'{..}+          = object+              (catMaybes+                 [("size" .=) <$> _miiSize,+                  ("version" .=) <$> _miiVersion,+                  ("language" .=) <$> _miiLanguage,+                  ("download_url" .=) <$> _miiDownloadURL,+                  ("encrypted_key" .=) <$> _miiEncryptedKey])++--+-- /See:/ 'dictlayerDataDictWordsItemSensesItemSource' smart constructor.+data DictlayerDataDictWordsItemSensesItemSource =+  DictlayerDataDictWordsItemSensesItemSource'+    { _dddwisisURL         :: !(Maybe Text)+    , _dddwisisAttribution :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DictlayerDataDictWordsItemSensesItemSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dddwisisURL'+--+-- * 'dddwisisAttribution'+dictlayerDataDictWordsItemSensesItemSource+    :: DictlayerDataDictWordsItemSensesItemSource+dictlayerDataDictWordsItemSensesItemSource =+  DictlayerDataDictWordsItemSensesItemSource'+    {_dddwisisURL = Nothing, _dddwisisAttribution = Nothing}+++dddwisisURL :: Lens' DictlayerDataDictWordsItemSensesItemSource (Maybe Text)+dddwisisURL+  = lens _dddwisisURL (\ s a -> s{_dddwisisURL = a})++dddwisisAttribution :: Lens' DictlayerDataDictWordsItemSensesItemSource (Maybe Text)+dddwisisAttribution+  = lens _dddwisisAttribution+      (\ s a -> s{_dddwisisAttribution = a})++instance FromJSON+           DictlayerDataDictWordsItemSensesItemSource+         where+        parseJSON+          = withObject+              "DictlayerDataDictWordsItemSensesItemSource"+              (\ o ->+                 DictlayerDataDictWordsItemSensesItemSource' <$>+                   (o .:? "url") <*> (o .:? "attribution"))++instance ToJSON+           DictlayerDataDictWordsItemSensesItemSource+         where+        toJSON+          DictlayerDataDictWordsItemSensesItemSource'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _dddwisisURL,+                  ("attribution" .=) <$> _dddwisisAttribution])++-- | Offer retail (=discounted) price in Micros+--+-- /See:/ 'volumeSaleInfoOffersItemRetailPrice' smart constructor.+data VolumeSaleInfoOffersItemRetailPrice =+  VolumeSaleInfoOffersItemRetailPrice'+    { _vsioirpCurrencyCode   :: !(Maybe Text)+    , _vsioirpAmountInMicros :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSaleInfoOffersItemRetailPrice' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsioirpCurrencyCode'+--+-- * 'vsioirpAmountInMicros'+volumeSaleInfoOffersItemRetailPrice+    :: VolumeSaleInfoOffersItemRetailPrice+volumeSaleInfoOffersItemRetailPrice =+  VolumeSaleInfoOffersItemRetailPrice'+    {_vsioirpCurrencyCode = Nothing, _vsioirpAmountInMicros = Nothing}+++vsioirpCurrencyCode :: Lens' VolumeSaleInfoOffersItemRetailPrice (Maybe Text)+vsioirpCurrencyCode+  = lens _vsioirpCurrencyCode+      (\ s a -> s{_vsioirpCurrencyCode = a})++vsioirpAmountInMicros :: Lens' VolumeSaleInfoOffersItemRetailPrice (Maybe Double)+vsioirpAmountInMicros+  = lens _vsioirpAmountInMicros+      (\ s a -> s{_vsioirpAmountInMicros = a})+      . mapping _Coerce++instance FromJSON VolumeSaleInfoOffersItemRetailPrice+         where+        parseJSON+          = withObject "VolumeSaleInfoOffersItemRetailPrice"+              (\ o ->+                 VolumeSaleInfoOffersItemRetailPrice' <$>+                   (o .:? "currencyCode") <*> (o .:? "amountInMicros"))++instance ToJSON VolumeSaleInfoOffersItemRetailPrice+         where+        toJSON VolumeSaleInfoOffersItemRetailPrice'{..}+          = object+              (catMaybes+                 [("currencyCode" .=) <$> _vsioirpCurrencyCode,+                  ("amountInMicros" .=) <$> _vsioirpAmountInMicros])++-- | Information on the ability to share with the family.+--+-- /See:/ 'volumeUserInfoFamilySharing' smart constructor.+data VolumeUserInfoFamilySharing =+  VolumeUserInfoFamilySharing'+    { _vuifsFamilyRole             :: !(Maybe Text)+    , _vuifsIsSharingAllowed       :: !(Maybe Bool)+    , _vuifsIsSharingDisabledByFop :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeUserInfoFamilySharing' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vuifsFamilyRole'+--+-- * 'vuifsIsSharingAllowed'+--+-- * 'vuifsIsSharingDisabledByFop'+volumeUserInfoFamilySharing+    :: VolumeUserInfoFamilySharing+volumeUserInfoFamilySharing =+  VolumeUserInfoFamilySharing'+    { _vuifsFamilyRole = Nothing+    , _vuifsIsSharingAllowed = Nothing+    , _vuifsIsSharingDisabledByFop = Nothing+    }+++-- | The role of the user in the family.+vuifsFamilyRole :: Lens' VolumeUserInfoFamilySharing (Maybe Text)+vuifsFamilyRole+  = lens _vuifsFamilyRole+      (\ s a -> s{_vuifsFamilyRole = a})++-- | Whether or not this volume can be shared with the family by the user.+-- This includes sharing eligibility of both the volume and the user. If+-- the value is true, the user can initiate a family sharing action.+vuifsIsSharingAllowed :: Lens' VolumeUserInfoFamilySharing (Maybe Bool)+vuifsIsSharingAllowed+  = lens _vuifsIsSharingAllowed+      (\ s a -> s{_vuifsIsSharingAllowed = a})++-- | Whether or not sharing this volume is temporarily disabled due to issues+-- with the Family Wallet.+vuifsIsSharingDisabledByFop :: Lens' VolumeUserInfoFamilySharing (Maybe Bool)+vuifsIsSharingDisabledByFop+  = lens _vuifsIsSharingDisabledByFop+      (\ s a -> s{_vuifsIsSharingDisabledByFop = a})++instance FromJSON VolumeUserInfoFamilySharing where+        parseJSON+          = withObject "VolumeUserInfoFamilySharing"+              (\ o ->+                 VolumeUserInfoFamilySharing' <$>+                   (o .:? "familyRole") <*> (o .:? "isSharingAllowed")+                     <*> (o .:? "isSharingDisabledByFop"))++instance ToJSON VolumeUserInfoFamilySharing where+        toJSON VolumeUserInfoFamilySharing'{..}+          = object+              (catMaybes+                 [("familyRole" .=) <$> _vuifsFamilyRole,+                  ("isSharingAllowed" .=) <$> _vuifsIsSharingAllowed,+                  ("isSharingDisabledByFop" .=) <$>+                    _vuifsIsSharingDisabledByFop])++--+-- /See:/ 'userSettingsNotificationMoreFromSeries' smart constructor.+newtype UserSettingsNotificationMoreFromSeries =+  UserSettingsNotificationMoreFromSeries'+    { _usnmfsOptedState :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UserSettingsNotificationMoreFromSeries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usnmfsOptedState'+userSettingsNotificationMoreFromSeries+    :: UserSettingsNotificationMoreFromSeries+userSettingsNotificationMoreFromSeries =+  UserSettingsNotificationMoreFromSeries' {_usnmfsOptedState = Nothing}+++usnmfsOptedState :: Lens' UserSettingsNotificationMoreFromSeries (Maybe Text)+usnmfsOptedState+  = lens _usnmfsOptedState+      (\ s a -> s{_usnmfsOptedState = a})++instance FromJSON+           UserSettingsNotificationMoreFromSeries+         where+        parseJSON+          = withObject "UserSettingsNotificationMoreFromSeries"+              (\ o ->+                 UserSettingsNotificationMoreFromSeries' <$>+                   (o .:? "opted_state"))++instance ToJSON+           UserSettingsNotificationMoreFromSeries+         where+        toJSON UserSettingsNotificationMoreFromSeries'{..}+          = object+              (catMaybes+                 [("opted_state" .=) <$> _usnmfsOptedState])++--+-- /See:/ 'volumeVolumeInfoIndustryIdentifiersItem' smart constructor.+data VolumeVolumeInfoIndustryIdentifiersItem =+  VolumeVolumeInfoIndustryIdentifiersItem'+    { _vviiiiIdentifier :: !(Maybe Text)+    , _vviiiiType       :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeVolumeInfoIndustryIdentifiersItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vviiiiIdentifier'+--+-- * 'vviiiiType'+volumeVolumeInfoIndustryIdentifiersItem+    :: VolumeVolumeInfoIndustryIdentifiersItem+volumeVolumeInfoIndustryIdentifiersItem =+  VolumeVolumeInfoIndustryIdentifiersItem'+    {_vviiiiIdentifier = Nothing, _vviiiiType = Nothing}+++-- | Industry specific volume identifier.+vviiiiIdentifier :: Lens' VolumeVolumeInfoIndustryIdentifiersItem (Maybe Text)+vviiiiIdentifier+  = lens _vviiiiIdentifier+      (\ s a -> s{_vviiiiIdentifier = a})++-- | Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.+vviiiiType :: Lens' VolumeVolumeInfoIndustryIdentifiersItem (Maybe Text)+vviiiiType+  = lens _vviiiiType (\ s a -> s{_vviiiiType = a})++instance FromJSON+           VolumeVolumeInfoIndustryIdentifiersItem+         where+        parseJSON+          = withObject+              "VolumeVolumeInfoIndustryIdentifiersItem"+              (\ o ->+                 VolumeVolumeInfoIndustryIdentifiersItem' <$>+                   (o .:? "identifier") <*> (o .:? "type"))++instance ToJSON+           VolumeVolumeInfoIndustryIdentifiersItem+         where+        toJSON VolumeVolumeInfoIndustryIdentifiersItem'{..}+          = object+              (catMaybes+                 [("identifier" .=) <$> _vviiiiIdentifier,+                  ("type" .=) <$> _vviiiiType])++--+-- /See:/ 'booksAnnotationsRange' smart constructor.+data BooksAnnotationsRange =+  BooksAnnotationsRange'+    { _barStartOffSet   :: !(Maybe Text)+    , _barEndOffSet     :: !(Maybe Text)+    , _barEndPosition   :: !(Maybe Text)+    , _barStartPosition :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BooksAnnotationsRange' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'barStartOffSet'+--+-- * 'barEndOffSet'+--+-- * 'barEndPosition'+--+-- * 'barStartPosition'+booksAnnotationsRange+    :: BooksAnnotationsRange+booksAnnotationsRange =+  BooksAnnotationsRange'+    { _barStartOffSet = Nothing+    , _barEndOffSet = Nothing+    , _barEndPosition = Nothing+    , _barStartPosition = Nothing+    }+++-- | The offset from the starting position.+barStartOffSet :: Lens' BooksAnnotationsRange (Maybe Text)+barStartOffSet+  = lens _barStartOffSet+      (\ s a -> s{_barStartOffSet = a})++-- | The offset from the ending position.+barEndOffSet :: Lens' BooksAnnotationsRange (Maybe Text)+barEndOffSet+  = lens _barEndOffSet (\ s a -> s{_barEndOffSet = a})++-- | The ending position for the range.+barEndPosition :: Lens' BooksAnnotationsRange (Maybe Text)+barEndPosition+  = lens _barEndPosition+      (\ s a -> s{_barEndPosition = a})++-- | The starting position for the range.+barStartPosition :: Lens' BooksAnnotationsRange (Maybe Text)+barStartPosition+  = lens _barStartPosition+      (\ s a -> s{_barStartPosition = a})++instance FromJSON BooksAnnotationsRange where+        parseJSON+          = withObject "BooksAnnotationsRange"+              (\ o ->+                 BooksAnnotationsRange' <$>+                   (o .:? "startOffset") <*> (o .:? "endOffset") <*>+                     (o .:? "endPosition")+                     <*> (o .:? "startPosition"))++instance ToJSON BooksAnnotationsRange where+        toJSON BooksAnnotationsRange'{..}+          = object+              (catMaybes+                 [("startOffset" .=) <$> _barStartOffSet,+                  ("endOffset" .=) <$> _barEndOffSet,+                  ("endPosition" .=) <$> _barEndPosition,+                  ("startPosition" .=) <$> _barStartPosition])++--+-- /See:/ 'layersummaries' smart constructor.+data Layersummaries =+  Layersummaries'+    { _layTotalItems :: !(Maybe (Textual Int32))+    , _layKind       :: !Text+    , _layItems      :: !(Maybe [Layersummary])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Layersummaries' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'layTotalItems'+--+-- * 'layKind'+--+-- * 'layItems'+layersummaries+    :: Layersummaries+layersummaries =+  Layersummaries'+    { _layTotalItems = Nothing+    , _layKind = "books#layersummaries"+    , _layItems = Nothing+    }+  -- | The total number of layer summaries found. layTotalItems :: Lens' Layersummaries (Maybe Int32)
gen/Network/Google/Resource/Books/Bookshelves/Get.hs view
@@ -56,12 +56,15 @@ -- | Retrieves metadata for a specific bookshelf for the specified user. -- -- /See:/ 'bookshelvesGet' smart constructor.-data BookshelvesGet = BookshelvesGet'+data BookshelvesGet =+  BookshelvesGet'     { _bgUserId :: !Text     , _bgShelf  :: !Text     , _bgSource :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'BookshelvesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,9 @@     -> Text -- ^ 'bgShelf'     -> BookshelvesGet bookshelvesGet pBgUserId_ pBgShelf_ =-    BookshelvesGet'-    { _bgUserId = pBgUserId_-    , _bgShelf = pBgShelf_-    , _bgSource = Nothing-    }+  BookshelvesGet'+    {_bgUserId = pBgUserId_, _bgShelf = pBgShelf_, _bgSource = Nothing}+  -- | ID of user for whom to retrieve bookshelves. bgUserId :: Lens' BookshelvesGet Text
gen/Network/Google/Resource/Books/Bookshelves/List.hs view
@@ -54,11 +54,14 @@ -- | Retrieves a list of public bookshelves for the specified user. -- -- /See:/ 'bookshelvesList' smart constructor.-data BookshelvesList = BookshelvesList'+data BookshelvesList =+  BookshelvesList'     { _blUserId :: !Text     , _blSource :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'BookshelvesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,10 +73,8 @@     :: Text -- ^ 'blUserId'     -> BookshelvesList bookshelvesList pBlUserId_ =-    BookshelvesList'-    { _blUserId = pBlUserId_-    , _blSource = Nothing-    }+  BookshelvesList' {_blUserId = pBlUserId_, _blSource = Nothing}+  -- | ID of user for whom to retrieve bookshelves. blUserId :: Lens' BookshelvesList Text
gen/Network/Google/Resource/Books/Bookshelves/Volumes/List.hs view
@@ -63,15 +63,18 @@ -- | Retrieves volumes in a specific bookshelf for the specified user. -- -- /See:/ 'bookshelvesVolumesList' smart constructor.-data BookshelvesVolumesList = BookshelvesVolumesList'+data BookshelvesVolumesList =+  BookshelvesVolumesList'     { _bvlUserId        :: !Text     , _bvlShelf         :: !Text     , _bvlSource        :: !(Maybe Text)     , _bvlStartIndex    :: !(Maybe (Textual Word32))     , _bvlMaxResults    :: !(Maybe (Textual Word32))     , _bvlShowPreOrders :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'BookshelvesVolumesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     -> Text -- ^ 'bvlShelf'     -> BookshelvesVolumesList bookshelvesVolumesList pBvlUserId_ pBvlShelf_ =-    BookshelvesVolumesList'+  BookshelvesVolumesList'     { _bvlUserId = pBvlUserId_     , _bvlShelf = pBvlShelf_     , _bvlSource = Nothing@@ -100,6 +103,7 @@     , _bvlMaxResults = Nothing     , _bvlShowPreOrders = Nothing     }+  -- | ID of user for whom to retrieve bookshelf volumes. bvlUserId :: Lens' BookshelvesVolumesList Text
gen/Network/Google/Resource/Books/CloudLoading/AddBook.hs view
@@ -59,13 +59,16 @@ -- | -- -- /See:/ 'cloudLoadingAddBook' smart constructor.-data CloudLoadingAddBook = CloudLoadingAddBook'+data CloudLoadingAddBook =+  CloudLoadingAddBook'     { _clabMimeType          :: !(Maybe Text)     , _clabUploadClientToken :: !(Maybe Text)     , _clabName              :: !(Maybe Text)     , _clabDriveDocumentId   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'CloudLoadingAddBook' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -80,12 +83,13 @@ cloudLoadingAddBook     :: CloudLoadingAddBook cloudLoadingAddBook =-    CloudLoadingAddBook'+  CloudLoadingAddBook'     { _clabMimeType = Nothing     , _clabUploadClientToken = Nothing     , _clabName = Nothing     , _clabDriveDocumentId = Nothing     }+  -- | The document MIME type. It can be set only if the drive_document_id is -- set.
gen/Network/Google/Resource/Books/CloudLoading/DeleteBook.hs view
@@ -52,10 +52,13 @@ -- | Remove the book and its contents -- -- /See:/ 'cloudLoadingDeleteBook' smart constructor.-newtype CloudLoadingDeleteBook = CloudLoadingDeleteBook'+newtype CloudLoadingDeleteBook =+  CloudLoadingDeleteBook'     { _cldbVolumeId :: Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'CloudLoadingDeleteBook' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -65,9 +68,8 @@     :: Text -- ^ 'cldbVolumeId'     -> CloudLoadingDeleteBook cloudLoadingDeleteBook pCldbVolumeId_ =-    CloudLoadingDeleteBook'-    { _cldbVolumeId = pCldbVolumeId_-    }+  CloudLoadingDeleteBook' {_cldbVolumeId = pCldbVolumeId_}+  -- | The id of the book to be removed. cldbVolumeId :: Lens' CloudLoadingDeleteBook Text
gen/Network/Google/Resource/Books/CloudLoading/UpdateBook.hs view
@@ -53,10 +53,13 @@ -- | -- -- /See:/ 'cloudLoadingUpdateBook' smart constructor.-newtype CloudLoadingUpdateBook = CloudLoadingUpdateBook'+newtype CloudLoadingUpdateBook =+  CloudLoadingUpdateBook'     { _clubPayload :: BooksCloudLoadingResource-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'CloudLoadingUpdateBook' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -66,9 +69,8 @@     :: BooksCloudLoadingResource -- ^ 'clubPayload'     -> CloudLoadingUpdateBook cloudLoadingUpdateBook pClubPayload_ =-    CloudLoadingUpdateBook'-    { _clubPayload = pClubPayload_-    }+  CloudLoadingUpdateBook' {_clubPayload = pClubPayload_}+  -- | Multipart request metadata. clubPayload :: Lens' CloudLoadingUpdateBook BooksCloudLoadingResource
gen/Network/Google/Resource/Books/Dictionary/ListOfflineMetadata.hs view
@@ -52,10 +52,13 @@ -- | Returns a list of offline dictionary metadata available -- -- /See:/ 'dictionaryListOfflineMetadata' smart constructor.-newtype DictionaryListOfflineMetadata = DictionaryListOfflineMetadata'+newtype DictionaryListOfflineMetadata =+  DictionaryListOfflineMetadata'     { _dlomCpksver :: Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'DictionaryListOfflineMetadata' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -65,9 +68,8 @@     :: Text -- ^ 'dlomCpksver'     -> DictionaryListOfflineMetadata dictionaryListOfflineMetadata pDlomCpksver_ =-    DictionaryListOfflineMetadata'-    { _dlomCpksver = pDlomCpksver_-    }+  DictionaryListOfflineMetadata' {_dlomCpksver = pDlomCpksver_}+  -- | The device\/version ID from which to request the data. dlomCpksver :: Lens' DictionaryListOfflineMetadata Text
gen/Network/Google/Resource/Books/Familysharing/GetFamilyInfo.hs view
@@ -52,10 +52,13 @@ -- | Gets information regarding the family that the user is part of. -- -- /See:/ 'familysharingGetFamilyInfo' smart constructor.-newtype FamilysharingGetFamilyInfo = FamilysharingGetFamilyInfo'+newtype FamilysharingGetFamilyInfo =+  FamilysharingGetFamilyInfo'     { _fgfiSource :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'FamilysharingGetFamilyInfo' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -63,10 +66,8 @@ -- * 'fgfiSource' familysharingGetFamilyInfo     :: FamilysharingGetFamilyInfo-familysharingGetFamilyInfo =-    FamilysharingGetFamilyInfo'-    { _fgfiSource = Nothing-    }+familysharingGetFamilyInfo = FamilysharingGetFamilyInfo' {_fgfiSource = Nothing}+  -- | String to identify the originator of this request. fgfiSource :: Lens' FamilysharingGetFamilyInfo (Maybe Text)
gen/Network/Google/Resource/Books/Familysharing/Share.hs view
@@ -58,12 +58,15 @@ -- indicates success. -- -- /See:/ 'familysharingShare' smart constructor.-data FamilysharingShare = FamilysharingShare'+data FamilysharingShare =+  FamilysharingShare'     { _fsVolumeId :: !(Maybe Text)     , _fsSource   :: !(Maybe Text)     , _fsDocId    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'FamilysharingShare' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,9 @@ familysharingShare     :: FamilysharingShare familysharingShare =-    FamilysharingShare'-    { _fsVolumeId = Nothing-    , _fsSource = Nothing-    , _fsDocId = Nothing-    }+  FamilysharingShare'+    {_fsVolumeId = Nothing, _fsSource = Nothing, _fsDocId = Nothing}+  -- | The volume to share. fsVolumeId :: Lens' FamilysharingShare (Maybe Text)
gen/Network/Google/Resource/Books/Familysharing/Unshare.hs view
@@ -58,12 +58,15 @@ -- family. Empty response indicates success. -- -- /See:/ 'familysharingUnshare' smart constructor.-data FamilysharingUnshare = FamilysharingUnshare'+data FamilysharingUnshare =+  FamilysharingUnshare'     { _fuVolumeId :: !(Maybe Text)     , _fuSource   :: !(Maybe Text)     , _fuDocId    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'FamilysharingUnshare' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,9 @@ familysharingUnshare     :: FamilysharingUnshare familysharingUnshare =-    FamilysharingUnshare'-    { _fuVolumeId = Nothing-    , _fuSource = Nothing-    , _fuDocId = Nothing-    }+  FamilysharingUnshare'+    {_fuVolumeId = Nothing, _fuSource = Nothing, _fuDocId = Nothing}+  -- | The volume to unshare. fuVolumeId :: Lens' FamilysharingUnshare (Maybe Text)
gen/Network/Google/Resource/Books/Layers/AnnotationData/Get.hs view
@@ -72,7 +72,8 @@ -- | Gets the annotation data. -- -- /See:/ 'layersAnnotationDataGet' smart constructor.-data LayersAnnotationDataGet = LayersAnnotationDataGet'+data LayersAnnotationDataGet =+  LayersAnnotationDataGet'     { _ladgW                   :: !(Maybe (Textual Int32))     , _ladgScale               :: !(Maybe (Textual Int32))     , _ladgLocale              :: !(Maybe Text)@@ -83,8 +84,10 @@     , _ladgSource              :: !(Maybe Text)     , _ladgH                   :: !(Maybe (Textual Int32))     , _ladgLayerId             :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersAnnotationDataGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -115,7 +118,7 @@     -> Text -- ^ 'ladgLayerId'     -> LayersAnnotationDataGet layersAnnotationDataGet pLadgContentVersion_ pLadgAnnotationDataId_ pLadgVolumeId_ pLadgLayerId_ =-    LayersAnnotationDataGet'+  LayersAnnotationDataGet'     { _ladgW = Nothing     , _ladgScale = Nothing     , _ladgLocale = Nothing@@ -127,6 +130,7 @@     , _ladgH = Nothing     , _ladgLayerId = pLadgLayerId_     }+  -- | The requested pixel width for any images. If width is provided height -- must also be provided.
gen/Network/Google/Resource/Books/Layers/AnnotationData/List.hs view
@@ -79,7 +79,8 @@ -- | Gets the annotation data for a volume and layer. -- -- /See:/ 'layersAnnotationDataList' smart constructor.-data LayersAnnotationDataList = LayersAnnotationDataList'+data LayersAnnotationDataList =+  LayersAnnotationDataList'     { _ladlW                :: !(Maybe (Textual Int32))     , _ladlScale            :: !(Maybe (Textual Int32))     , _ladlLocale           :: !(Maybe Text)@@ -93,8 +94,10 @@     , _ladlPageToken        :: !(Maybe Text)     , _ladlLayerId          :: !Text     , _ladlMaxResults       :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersAnnotationDataList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -130,7 +133,7 @@     -> Text -- ^ 'ladlLayerId'     -> LayersAnnotationDataList layersAnnotationDataList pLadlContentVersion_ pLadlVolumeId_ pLadlLayerId_ =-    LayersAnnotationDataList'+  LayersAnnotationDataList'     { _ladlW = Nothing     , _ladlScale = Nothing     , _ladlLocale = Nothing@@ -145,6 +148,7 @@     , _ladlLayerId = pLadlLayerId_     , _ladlMaxResults = Nothing     }+  -- | The requested pixel width for any images. If width is provided height -- must also be provided.
gen/Network/Google/Resource/Books/Layers/Get.hs view
@@ -58,13 +58,16 @@ -- | Gets the layer summary for a volume. -- -- /See:/ 'layersGet' smart constructor.-data LayersGet = LayersGet'+data LayersGet =+  LayersGet'     { _lgContentVersion :: !(Maybe Text)     , _lgVolumeId       :: !Text     , _lgSource         :: !(Maybe Text)     , _lgSummaryId      :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -81,12 +84,13 @@     -> Text -- ^ 'lgSummaryId'     -> LayersGet layersGet pLgVolumeId_ pLgSummaryId_ =-    LayersGet'+  LayersGet'     { _lgContentVersion = Nothing     , _lgVolumeId = pLgVolumeId_     , _lgSource = Nothing     , _lgSummaryId = pLgSummaryId_     }+  -- | The content version for the requested volume. lgContentVersion :: Lens' LayersGet (Maybe Text)
gen/Network/Google/Resource/Books/Layers/List.hs view
@@ -61,14 +61,17 @@ -- | List the layer summaries for a volume. -- -- /See:/ 'layersList' smart constructor.-data LayersList = LayersList'+data LayersList =+  LayersList'     { _llContentVersion :: !(Maybe Text)     , _llVolumeId       :: !Text     , _llSource         :: !(Maybe Text)     , _llPageToken      :: !(Maybe Text)     , _llMaxResults     :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -86,13 +89,14 @@     :: Text -- ^ 'llVolumeId'     -> LayersList layersList pLlVolumeId_ =-    LayersList'+  LayersList'     { _llContentVersion = Nothing     , _llVolumeId = pLlVolumeId_     , _llSource = Nothing     , _llPageToken = Nothing     , _llMaxResults = Nothing     }+  -- | The content version for the requested volume. llContentVersion :: Lens' LayersList (Maybe Text)
gen/Network/Google/Resource/Books/Layers/VolumeAnnotations/Get.hs view
@@ -62,14 +62,17 @@ -- | Gets the volume annotation. -- -- /See:/ 'layersVolumeAnnotationsGet' smart constructor.-data LayersVolumeAnnotationsGet = LayersVolumeAnnotationsGet'+data LayersVolumeAnnotationsGet =+  LayersVolumeAnnotationsGet'     { _lvagLocale       :: !(Maybe Text)     , _lvagAnnotationId :: !Text     , _lvagVolumeId     :: !Text     , _lvagSource       :: !(Maybe Text)     , _lvagLayerId      :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersVolumeAnnotationsGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -89,13 +92,14 @@     -> Text -- ^ 'lvagLayerId'     -> LayersVolumeAnnotationsGet layersVolumeAnnotationsGet pLvagAnnotationId_ pLvagVolumeId_ pLvagLayerId_ =-    LayersVolumeAnnotationsGet'+  LayersVolumeAnnotationsGet'     { _lvagLocale = Nothing     , _lvagAnnotationId = pLvagAnnotationId_     , _lvagVolumeId = pLvagVolumeId_     , _lvagSource = Nothing     , _lvagLayerId = pLvagLayerId_     }+  -- | The locale information for the data. ISO-639-1 language and ISO-3166-1 -- country code. Ex: \'en_US\'.
gen/Network/Google/Resource/Books/Layers/VolumeAnnotations/List.hs view
@@ -82,7 +82,8 @@ -- | Gets the volume annotations for a volume and layer. -- -- /See:/ 'layersVolumeAnnotationsList' smart constructor.-data LayersVolumeAnnotationsList = LayersVolumeAnnotationsList'+data LayersVolumeAnnotationsList =+  LayersVolumeAnnotationsList'     { _lvalStartOffSet              :: !(Maybe Text)     , _lvalLocale                   :: !(Maybe Text)     , _lvalContentVersion           :: !Text@@ -98,8 +99,10 @@     , _lvalLayerId                  :: !Text     , _lvalMaxResults               :: !(Maybe (Textual Word32))     , _lvalStartPosition            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'LayersVolumeAnnotationsList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -139,7 +142,7 @@     -> Text -- ^ 'lvalLayerId'     -> LayersVolumeAnnotationsList layersVolumeAnnotationsList pLvalContentVersion_ pLvalVolumeId_ pLvalLayerId_ =-    LayersVolumeAnnotationsList'+  LayersVolumeAnnotationsList'     { _lvalStartOffSet = Nothing     , _lvalLocale = Nothing     , _lvalContentVersion = pLvalContentVersion_@@ -156,6 +159,7 @@     , _lvalMaxResults = Nothing     , _lvalStartPosition = Nothing     }+  -- | The start offset to start retrieving data from. lvalStartOffSet :: Lens' LayersVolumeAnnotationsList (Maybe Text)
gen/Network/Google/Resource/Books/MyConfig/GetUserSettings.hs view
@@ -50,14 +50,16 @@ -- -- /See:/ 'myConfigGetUserSettings' smart constructor. data MyConfigGetUserSettings =-    MyConfigGetUserSettings'-    deriving (Eq,Show,Data,Typeable,Generic)+  MyConfigGetUserSettings'+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyConfigGetUserSettings' with the minimum fields required to make a request. -- myConfigGetUserSettings     :: MyConfigGetUserSettings myConfigGetUserSettings = MyConfigGetUserSettings'+  instance GoogleRequest MyConfigGetUserSettings where         type Rs MyConfigGetUserSettings = UserSettings
gen/Network/Google/Resource/Books/MyConfig/ReleaseDownloadAccess.hs view
@@ -59,13 +59,16 @@ -- | Release downloaded content access restriction. -- -- /See:/ 'myConfigReleaseDownloadAccess' smart constructor.-data MyConfigReleaseDownloadAccess = MyConfigReleaseDownloadAccess'+data MyConfigReleaseDownloadAccess =+  MyConfigReleaseDownloadAccess'     { _mcrdaCpksver   :: !Text     , _mcrdaLocale    :: !(Maybe Text)     , _mcrdaVolumeIds :: ![Text]     , _mcrdaSource    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyConfigReleaseDownloadAccess' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -82,12 +85,13 @@     -> [Text] -- ^ 'mcrdaVolumeIds'     -> MyConfigReleaseDownloadAccess myConfigReleaseDownloadAccess pMcrdaCpksver_ pMcrdaVolumeIds_ =-    MyConfigReleaseDownloadAccess'+  MyConfigReleaseDownloadAccess'     { _mcrdaCpksver = pMcrdaCpksver_     , _mcrdaLocale = Nothing     , _mcrdaVolumeIds = _Coerce # pMcrdaVolumeIds_     , _mcrdaSource = Nothing     }+  -- | The device\/version ID from which to release the restriction. mcrdaCpksver :: Lens' MyConfigReleaseDownloadAccess Text
gen/Network/Google/Resource/Books/MyConfig/RequestAccess.hs view
@@ -65,15 +65,18 @@ -- | Request concurrent and download access restrictions. -- -- /See:/ 'myConfigRequestAccess' smart constructor.-data MyConfigRequestAccess = MyConfigRequestAccess'+data MyConfigRequestAccess =+  MyConfigRequestAccess'     { _mcraCpksver      :: !Text     , _mcraLocale       :: !(Maybe Text)     , _mcraLicenseTypes :: !(Maybe MyConfigRequestAccessLicenseTypes)     , _mcraVolumeId     :: !Text     , _mcraSource       :: !Text     , _mcraNonce        :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyConfigRequestAccess' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -96,7 +99,7 @@     -> Text -- ^ 'mcraNonce'     -> MyConfigRequestAccess myConfigRequestAccess pMcraCpksver_ pMcraVolumeId_ pMcraSource_ pMcraNonce_ =-    MyConfigRequestAccess'+  MyConfigRequestAccess'     { _mcraCpksver = pMcraCpksver_     , _mcraLocale = Nothing     , _mcraLicenseTypes = Nothing@@ -104,6 +107,7 @@     , _mcraSource = pMcraSource_     , _mcraNonce = pMcraNonce_     }+  -- | The device\/version ID from which to request the restrictions. mcraCpksver :: Lens' MyConfigRequestAccess Text
gen/Network/Google/Resource/Books/MyConfig/SyncVolumeLicenses.hs view
@@ -70,7 +70,8 @@ -- shelf. -- -- /See:/ 'myConfigSyncVolumeLicenses' smart constructor.-data MyConfigSyncVolumeLicenses = MyConfigSyncVolumeLicenses'+data MyConfigSyncVolumeLicenses =+  MyConfigSyncVolumeLicenses'     { _mcsvlCpksver                :: !Text     , _mcsvlLocale                 :: !(Maybe Text)     , _mcsvlIncludeNonComicsSeries :: !(Maybe Bool)@@ -79,8 +80,10 @@     , _mcsvlSource                 :: !Text     , _mcsvlShowPreOrders          :: !(Maybe Bool)     , _mcsvlNonce                  :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyConfigSyncVolumeLicenses' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -106,7 +109,7 @@     -> Text -- ^ 'mcsvlNonce'     -> MyConfigSyncVolumeLicenses myConfigSyncVolumeLicenses pMcsvlCpksver_ pMcsvlSource_ pMcsvlNonce_ =-    MyConfigSyncVolumeLicenses'+  MyConfigSyncVolumeLicenses'     { _mcsvlCpksver = pMcsvlCpksver_     , _mcsvlLocale = Nothing     , _mcsvlIncludeNonComicsSeries = Nothing@@ -116,6 +119,7 @@     , _mcsvlShowPreOrders = Nothing     , _mcsvlNonce = pMcsvlNonce_     }+  -- | The device\/version ID from which to release the restriction. mcsvlCpksver :: Lens' MyConfigSyncVolumeLicenses Text
gen/Network/Google/Resource/Books/MyConfig/UpdateUserSettings.hs view
@@ -57,10 +57,13 @@ -- sub-objects will retain the existing value. -- -- /See:/ 'myConfigUpdateUserSettings' smart constructor.-newtype MyConfigUpdateUserSettings = MyConfigUpdateUserSettings'+newtype MyConfigUpdateUserSettings =+  MyConfigUpdateUserSettings'     { _mcuusPayload :: UserSettings-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyConfigUpdateUserSettings' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,9 +73,8 @@     :: UserSettings -- ^ 'mcuusPayload'     -> MyConfigUpdateUserSettings myConfigUpdateUserSettings pMcuusPayload_ =-    MyConfigUpdateUserSettings'-    { _mcuusPayload = pMcuusPayload_-    }+  MyConfigUpdateUserSettings' {_mcuusPayload = pMcuusPayload_}+  -- | Multipart request metadata. mcuusPayload :: Lens' MyConfigUpdateUserSettings UserSettings
gen/Network/Google/Resource/Books/MyLibrary/Annotations/Delete.hs view
@@ -54,11 +54,14 @@ -- | Deletes an annotation. -- -- /See:/ 'myLibraryAnnotationsDelete' smart constructor.-data MyLibraryAnnotationsDelete = MyLibraryAnnotationsDelete'+data MyLibraryAnnotationsDelete =+  MyLibraryAnnotationsDelete'     { _mladAnnotationId :: !Text     , _mladSource       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryAnnotationsDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,10 +73,9 @@     :: Text -- ^ 'mladAnnotationId'     -> MyLibraryAnnotationsDelete myLibraryAnnotationsDelete pMladAnnotationId_ =-    MyLibraryAnnotationsDelete'-    { _mladAnnotationId = pMladAnnotationId_-    , _mladSource = Nothing-    }+  MyLibraryAnnotationsDelete'+    {_mladAnnotationId = pMladAnnotationId_, _mladSource = Nothing}+  -- | The ID for the annotation to delete. mladAnnotationId :: Lens' MyLibraryAnnotationsDelete Text
gen/Network/Google/Resource/Books/MyLibrary/Annotations/Insert.hs view
@@ -60,14 +60,17 @@ -- | Inserts a new annotation. -- -- /See:/ 'myLibraryAnnotationsInsert' smart constructor.-data MyLibraryAnnotationsInsert = MyLibraryAnnotationsInsert'+data MyLibraryAnnotationsInsert =+  MyLibraryAnnotationsInsert'     { _mlaiCountry                   :: !(Maybe Text)     , _mlaiPayload                   :: !Annotation     , _mlaiShowOnlySummaryInResponse :: !(Maybe Bool)     , _mlaiAnnotationId              :: !(Maybe Text)     , _mlaiSource                    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryAnnotationsInsert' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -85,13 +88,14 @@     :: Annotation -- ^ 'mlaiPayload'     -> MyLibraryAnnotationsInsert myLibraryAnnotationsInsert pMlaiPayload_ =-    MyLibraryAnnotationsInsert'+  MyLibraryAnnotationsInsert'     { _mlaiCountry = Nothing     , _mlaiPayload = pMlaiPayload_     , _mlaiShowOnlySummaryInResponse = Nothing     , _mlaiAnnotationId = Nothing     , _mlaiSource = Nothing     }+  -- | ISO-3166-1 code to override the IP-based location. mlaiCountry :: Lens' MyLibraryAnnotationsInsert (Maybe Text)
gen/Network/Google/Resource/Books/MyLibrary/Annotations/List.hs view
@@ -71,7 +71,8 @@ -- | Retrieves a list of annotations, possibly filtered. -- -- /See:/ 'myLibraryAnnotationsList' smart constructor.-data MyLibraryAnnotationsList = MyLibraryAnnotationsList'+data MyLibraryAnnotationsList =+  MyLibraryAnnotationsList'     { _mlalContentVersion :: !(Maybe Text)     , _mlalShowDeleted    :: !(Maybe Bool)     , _mlalUpdatedMax     :: !(Maybe Text)@@ -82,8 +83,10 @@     , _mlalPageToken      :: !(Maybe Text)     , _mlalLayerId        :: !(Maybe Text)     , _mlalMaxResults     :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryAnnotationsList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -110,7 +113,7 @@ myLibraryAnnotationsList     :: MyLibraryAnnotationsList myLibraryAnnotationsList =-    MyLibraryAnnotationsList'+  MyLibraryAnnotationsList'     { _mlalContentVersion = Nothing     , _mlalShowDeleted = Nothing     , _mlalUpdatedMax = Nothing@@ -122,6 +125,7 @@     , _mlalLayerId = Nothing     , _mlalMaxResults = Nothing     }+  -- | The content version for the requested volume. mlalContentVersion :: Lens' MyLibraryAnnotationsList (Maybe Text)
gen/Network/Google/Resource/Books/MyLibrary/Annotations/Summary.hs view
@@ -56,11 +56,14 @@ -- | Gets the summary of specified layers. -- -- /See:/ 'myLibraryAnnotationsSummary' smart constructor.-data MyLibraryAnnotationsSummary = MyLibraryAnnotationsSummary'+data MyLibraryAnnotationsSummary =+  MyLibraryAnnotationsSummary'     { _mlasLayerIds :: ![Text]     , _mlasVolumeId :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryAnnotationsSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -73,10 +76,9 @@     -> Text -- ^ 'mlasVolumeId'     -> MyLibraryAnnotationsSummary myLibraryAnnotationsSummary pMlasLayerIds_ pMlasVolumeId_ =-    MyLibraryAnnotationsSummary'-    { _mlasLayerIds = _Coerce # pMlasLayerIds_-    , _mlasVolumeId = pMlasVolumeId_-    }+  MyLibraryAnnotationsSummary'+    {_mlasLayerIds = _Coerce # pMlasLayerIds_, _mlasVolumeId = pMlasVolumeId_}+  -- | Array of layer IDs to get the summary for. mlasLayerIds :: Lens' MyLibraryAnnotationsSummary [Text]
gen/Network/Google/Resource/Books/MyLibrary/Annotations/Update.hs view
@@ -56,12 +56,15 @@ -- | Updates an existing annotation. -- -- /See:/ 'myLibraryAnnotationsUpdate' smart constructor.-data MyLibraryAnnotationsUpdate = MyLibraryAnnotationsUpdate'+data MyLibraryAnnotationsUpdate =+  MyLibraryAnnotationsUpdate'     { _mlauPayload      :: !Annotation     , _mlauAnnotationId :: !Text     , _mlauSource       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryAnnotationsUpdate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,12 @@     -> Text -- ^ 'mlauAnnotationId'     -> MyLibraryAnnotationsUpdate myLibraryAnnotationsUpdate pMlauPayload_ pMlauAnnotationId_ =-    MyLibraryAnnotationsUpdate'+  MyLibraryAnnotationsUpdate'     { _mlauPayload = pMlauPayload_     , _mlauAnnotationId = pMlauAnnotationId_     , _mlauSource = Nothing     }+  -- | Multipart request metadata. mlauPayload :: Lens' MyLibraryAnnotationsUpdate Annotation
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/AddVolume.hs view
@@ -61,13 +61,16 @@ -- | Adds a volume to a bookshelf. -- -- /See:/ 'myLibraryBookshelvesAddVolume' smart constructor.-data MyLibraryBookshelvesAddVolume = MyLibraryBookshelvesAddVolume'+data MyLibraryBookshelvesAddVolume =+  MyLibraryBookshelvesAddVolume'     { _mlbavReason   :: !(Maybe MyLibraryBookshelvesAddVolumeReason)     , _mlbavShelf    :: !Text     , _mlbavVolumeId :: !Text     , _mlbavSource   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesAddVolume' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -84,12 +87,13 @@     -> Text -- ^ 'mlbavVolumeId'     -> MyLibraryBookshelvesAddVolume myLibraryBookshelvesAddVolume pMlbavShelf_ pMlbavVolumeId_ =-    MyLibraryBookshelvesAddVolume'+  MyLibraryBookshelvesAddVolume'     { _mlbavReason = Nothing     , _mlbavShelf = pMlbavShelf_     , _mlbavVolumeId = pMlbavVolumeId_     , _mlbavSource = Nothing     }+  -- | The reason for which the book is added to the library. mlbavReason :: Lens' MyLibraryBookshelvesAddVolume (Maybe MyLibraryBookshelvesAddVolumeReason)
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/ClearVolumes.hs view
@@ -55,11 +55,14 @@ -- | Clears all volumes from a bookshelf. -- -- /See:/ 'myLibraryBookshelvesClearVolumes' smart constructor.-data MyLibraryBookshelvesClearVolumes = MyLibraryBookshelvesClearVolumes'+data MyLibraryBookshelvesClearVolumes =+  MyLibraryBookshelvesClearVolumes'     { _mlbcvShelf  :: !Text     , _mlbcvSource :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesClearVolumes' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -71,11 +74,10 @@     :: Text -- ^ 'mlbcvShelf'     -> MyLibraryBookshelvesClearVolumes myLibraryBookshelvesClearVolumes pMlbcvShelf_ =-    MyLibraryBookshelvesClearVolumes'-    { _mlbcvShelf = pMlbcvShelf_-    , _mlbcvSource = Nothing-    }+  MyLibraryBookshelvesClearVolumes'+    {_mlbcvShelf = pMlbcvShelf_, _mlbcvSource = Nothing} + -- | ID of bookshelf from which to remove a volume. mlbcvShelf :: Lens' MyLibraryBookshelvesClearVolumes Text mlbcvShelf@@ -87,7 +89,8 @@   = lens _mlbcvSource (\ s a -> s{_mlbcvSource = a})  instance GoogleRequest-         MyLibraryBookshelvesClearVolumes where+           MyLibraryBookshelvesClearVolumes+         where         type Rs MyLibraryBookshelvesClearVolumes = ()         type Scopes MyLibraryBookshelvesClearVolumes =              '["https://www.googleapis.com/auth/books"]
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/Get.hs view
@@ -56,11 +56,14 @@ -- authenticated user. -- -- /See:/ 'myLibraryBookshelvesGet' smart constructor.-data MyLibraryBookshelvesGet = MyLibraryBookshelvesGet'+data MyLibraryBookshelvesGet =+  MyLibraryBookshelvesGet'     { _mlbgShelf  :: !Text     , _mlbgSource :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -72,10 +75,8 @@     :: Text -- ^ 'mlbgShelf'     -> MyLibraryBookshelvesGet myLibraryBookshelvesGet pMlbgShelf_ =-    MyLibraryBookshelvesGet'-    { _mlbgShelf = pMlbgShelf_-    , _mlbgSource = Nothing-    }+  MyLibraryBookshelvesGet' {_mlbgShelf = pMlbgShelf_, _mlbgSource = Nothing}+  -- | ID of bookshelf to retrieve. mlbgShelf :: Lens' MyLibraryBookshelvesGet Text
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/List.hs view
@@ -52,10 +52,13 @@ -- | Retrieves a list of bookshelves belonging to the authenticated user. -- -- /See:/ 'myLibraryBookshelvesList' smart constructor.-newtype MyLibraryBookshelvesList = MyLibraryBookshelvesList'+newtype MyLibraryBookshelvesList =+  MyLibraryBookshelvesList'     { _mlblSource :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -63,10 +66,8 @@ -- * 'mlblSource' myLibraryBookshelvesList     :: MyLibraryBookshelvesList-myLibraryBookshelvesList =-    MyLibraryBookshelvesList'-    { _mlblSource = Nothing-    }+myLibraryBookshelvesList = MyLibraryBookshelvesList' {_mlblSource = Nothing}+  -- | String to identify the originator of this request. mlblSource :: Lens' MyLibraryBookshelvesList (Maybe Text)
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/MoveVolume.hs view
@@ -59,13 +59,16 @@ -- | Moves a volume within a bookshelf. -- -- /See:/ 'myLibraryBookshelvesMoveVolume' smart constructor.-data MyLibraryBookshelvesMoveVolume = MyLibraryBookshelvesMoveVolume'+data MyLibraryBookshelvesMoveVolume =+  MyLibraryBookshelvesMoveVolume'     { _mlbmvShelf          :: !Text     , _mlbmvVolumeId       :: !Text     , _mlbmvSource         :: !(Maybe Text)     , _mlbmvVolumePosition :: !(Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesMoveVolume' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -83,12 +86,13 @@     -> Int32 -- ^ 'mlbmvVolumePosition'     -> MyLibraryBookshelvesMoveVolume myLibraryBookshelvesMoveVolume pMlbmvShelf_ pMlbmvVolumeId_ pMlbmvVolumePosition_ =-    MyLibraryBookshelvesMoveVolume'+  MyLibraryBookshelvesMoveVolume'     { _mlbmvShelf = pMlbmvShelf_     , _mlbmvVolumeId = pMlbmvVolumeId_     , _mlbmvSource = Nothing     , _mlbmvVolumePosition = _Coerce # pMlbmvVolumePosition_     }+  -- | ID of bookshelf with the volume. mlbmvShelf :: Lens' MyLibraryBookshelvesMoveVolume Text
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/RemoveVolume.hs view
@@ -61,13 +61,16 @@ -- | Removes a volume from a bookshelf. -- -- /See:/ 'myLibraryBookshelvesRemoveVolume' smart constructor.-data MyLibraryBookshelvesRemoveVolume = MyLibraryBookshelvesRemoveVolume'+data MyLibraryBookshelvesRemoveVolume =+  MyLibraryBookshelvesRemoveVolume'     { _mlbrvReason   :: !(Maybe MyLibraryBookshelvesRemoveVolumeReason)     , _mlbrvShelf    :: !Text     , _mlbrvVolumeId :: !Text     , _mlbrvSource   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesRemoveVolume' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -84,13 +87,14 @@     -> Text -- ^ 'mlbrvVolumeId'     -> MyLibraryBookshelvesRemoveVolume myLibraryBookshelvesRemoveVolume pMlbrvShelf_ pMlbrvVolumeId_ =-    MyLibraryBookshelvesRemoveVolume'+  MyLibraryBookshelvesRemoveVolume'     { _mlbrvReason = Nothing     , _mlbrvShelf = pMlbrvShelf_     , _mlbrvVolumeId = pMlbrvVolumeId_     , _mlbrvSource = Nothing     } + -- | The reason for which the book is removed from the library. mlbrvReason :: Lens' MyLibraryBookshelvesRemoveVolume (Maybe MyLibraryBookshelvesRemoveVolumeReason) mlbrvReason@@ -113,7 +117,8 @@   = lens _mlbrvSource (\ s a -> s{_mlbrvSource = a})  instance GoogleRequest-         MyLibraryBookshelvesRemoveVolume where+           MyLibraryBookshelvesRemoveVolume+         where         type Rs MyLibraryBookshelvesRemoveVolume = ()         type Scopes MyLibraryBookshelvesRemoveVolume =              '["https://www.googleapis.com/auth/books"]
gen/Network/Google/Resource/Books/MyLibrary/Bookshelves/Volumes/List.hs view
@@ -69,7 +69,8 @@ -- | Gets volume information for volumes on a bookshelf. -- -- /See:/ 'myLibraryBookshelvesVolumesList' smart constructor.-data MyLibraryBookshelvesVolumesList = MyLibraryBookshelvesVolumesList'+data MyLibraryBookshelvesVolumesList =+  MyLibraryBookshelvesVolumesList'     { _mlbvlCountry       :: !(Maybe Text)     , _mlbvlQ             :: !(Maybe Text)     , _mlbvlShelf         :: !Text@@ -78,8 +79,10 @@     , _mlbvlStartIndex    :: !(Maybe (Textual Word32))     , _mlbvlMaxResults    :: !(Maybe (Textual Word32))     , _mlbvlShowPreOrders :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryBookshelvesVolumesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -103,7 +106,7 @@     :: Text -- ^ 'mlbvlShelf'     -> MyLibraryBookshelvesVolumesList myLibraryBookshelvesVolumesList pMlbvlShelf_ =-    MyLibraryBookshelvesVolumesList'+  MyLibraryBookshelvesVolumesList'     { _mlbvlCountry = Nothing     , _mlbvlQ = Nothing     , _mlbvlShelf = pMlbvlShelf_@@ -114,6 +117,7 @@     , _mlbvlShowPreOrders = Nothing     } + -- | ISO-3166-1 code to override the IP-based location. mlbvlCountry :: Lens' MyLibraryBookshelvesVolumesList (Maybe Text) mlbvlCountry@@ -160,7 +164,8 @@       (\ s a -> s{_mlbvlShowPreOrders = a})  instance GoogleRequest-         MyLibraryBookshelvesVolumesList where+           MyLibraryBookshelvesVolumesList+         where         type Rs MyLibraryBookshelvesVolumesList = Volumes         type Scopes MyLibraryBookshelvesVolumesList =              '["https://www.googleapis.com/auth/books"]
gen/Network/Google/Resource/Books/MyLibrary/ReadingPositions/Get.hs view
@@ -57,12 +57,15 @@ -- | Retrieves my reading position information for a volume. -- -- /See:/ 'myLibraryReadingPositionsGet' smart constructor.-data MyLibraryReadingPositionsGet = MyLibraryReadingPositionsGet'+data MyLibraryReadingPositionsGet =+  MyLibraryReadingPositionsGet'     { _mlrpgContentVersion :: !(Maybe Text)     , _mlrpgVolumeId       :: !Text     , _mlrpgSource         :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryReadingPositionsGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,12 @@     :: Text -- ^ 'mlrpgVolumeId'     -> MyLibraryReadingPositionsGet myLibraryReadingPositionsGet pMlrpgVolumeId_ =-    MyLibraryReadingPositionsGet'+  MyLibraryReadingPositionsGet'     { _mlrpgContentVersion = Nothing     , _mlrpgVolumeId = pMlrpgVolumeId_     , _mlrpgSource = Nothing     }+  -- | Volume content version for which this reading position is requested. mlrpgContentVersion :: Lens' MyLibraryReadingPositionsGet (Maybe Text)
gen/Network/Google/Resource/Books/MyLibrary/ReadingPositions/SetPosition.hs view
@@ -67,7 +67,8 @@ -- | Sets my reading position information for a volume. -- -- /See:/ 'myLibraryReadingPositionsSetPosition' smart constructor.-data MyLibraryReadingPositionsSetPosition = MyLibraryReadingPositionsSetPosition'+data MyLibraryReadingPositionsSetPosition =+  MyLibraryReadingPositionsSetPosition'     { _mlrpspDeviceCookie   :: !(Maybe Text)     , _mlrpspContentVersion :: !(Maybe Text)     , _mlrpspAction         :: !(Maybe MyLibraryReadingPositionsSetPositionAction)@@ -75,8 +76,10 @@     , _mlrpspSource         :: !(Maybe Text)     , _mlrpspTimestamp      :: !Text     , _mlrpspPosition       :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'MyLibraryReadingPositionsSetPosition' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> Text -- ^ 'mlrpspPosition'     -> MyLibraryReadingPositionsSetPosition myLibraryReadingPositionsSetPosition pMlrpspVolumeId_ pMlrpspTimestamp_ pMlrpspPosition_ =-    MyLibraryReadingPositionsSetPosition'+  MyLibraryReadingPositionsSetPosition'     { _mlrpspDeviceCookie = Nothing     , _mlrpspContentVersion = Nothing     , _mlrpspAction = Nothing@@ -110,6 +113,7 @@     , _mlrpspPosition = pMlrpspPosition_     } + -- | Random persistent device cookie optional on set position. mlrpspDeviceCookie :: Lens' MyLibraryReadingPositionsSetPosition (Maybe Text) mlrpspDeviceCookie@@ -151,7 +155,8 @@       (\ s a -> s{_mlrpspPosition = a})  instance GoogleRequest-         MyLibraryReadingPositionsSetPosition where+           MyLibraryReadingPositionsSetPosition+         where         type Rs MyLibraryReadingPositionsSetPosition = ()         type Scopes MyLibraryReadingPositionsSetPosition =              '["https://www.googleapis.com/auth/books"]
gen/Network/Google/Resource/Books/Notification/Get.hs view
@@ -56,12 +56,15 @@ -- | Returns notification details for a given notification id. -- -- /See:/ 'notificationGet' smart constructor.-data NotificationGet = NotificationGet'+data NotificationGet =+  NotificationGet'     { _ngLocale         :: !(Maybe Text)     , _ngNotificationId :: !Text     , _ngSource         :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'NotificationGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -75,11 +78,12 @@     :: Text -- ^ 'ngNotificationId'     -> NotificationGet notificationGet pNgNotificationId_ =-    NotificationGet'+  NotificationGet'     { _ngLocale = Nothing     , _ngNotificationId = pNgNotificationId_     , _ngSource = Nothing     }+  -- | ISO-639-1 language and ISO-3166-1 country code. Ex: \'en_US\'. Used for -- generating notification title and body.
gen/Network/Google/Resource/Books/Onboarding/ListCategories.hs view
@@ -52,10 +52,13 @@ -- | List categories for onboarding experience. -- -- /See:/ 'onboardingListCategories' smart constructor.-newtype OnboardingListCategories = OnboardingListCategories'+newtype OnboardingListCategories =+  OnboardingListCategories'     { _olcLocale :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OnboardingListCategories' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -63,10 +66,8 @@ -- * 'olcLocale' onboardingListCategories     :: OnboardingListCategories-onboardingListCategories =-    OnboardingListCategories'-    { _olcLocale = Nothing-    }+onboardingListCategories = OnboardingListCategories' {_olcLocale = Nothing}+  -- | ISO-639-1 language and ISO-3166-1 country code. Default is en-US if -- unset.
gen/Network/Google/Resource/Books/Onboarding/ListCategoryVolumes.hs view
@@ -62,14 +62,17 @@ -- | List available volumes under categories for onboarding experience. -- -- /See:/ 'onboardingListCategoryVolumes' smart constructor.-data OnboardingListCategoryVolumes = OnboardingListCategoryVolumes'+data OnboardingListCategoryVolumes =+  OnboardingListCategoryVolumes'     { _olcvLocale                   :: !(Maybe Text)     , _olcvMaxAllowedMaturityRating :: !(Maybe OnboardingListCategoryVolumesMaxAllowedMaturityRating)     , _olcvCategoryId               :: !(Maybe [Text])     , _olcvPageToken                :: !(Maybe Text)     , _olcvPageSize                 :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OnboardingListCategoryVolumes' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -86,13 +89,14 @@ onboardingListCategoryVolumes     :: OnboardingListCategoryVolumes onboardingListCategoryVolumes =-    OnboardingListCategoryVolumes'+  OnboardingListCategoryVolumes'     { _olcvLocale = Nothing     , _olcvMaxAllowedMaturityRating = Nothing     , _olcvCategoryId = Nothing     , _olcvPageToken = Nothing     , _olcvPageSize = Nothing     }+  -- | ISO-639-1 language and ISO-3166-1 country code. Default is en-US if -- unset.
gen/Network/Google/Resource/Books/Personalizedstream/Get.hs view
@@ -59,12 +59,15 @@ -- | Returns a stream of personalized book clusters -- -- /See:/ 'personalizedstreamGet' smart constructor.-data PersonalizedstreamGet = PersonalizedstreamGet'+data PersonalizedstreamGet =+  PersonalizedstreamGet'     { _pgLocale                   :: !(Maybe Text)     , _pgMaxAllowedMaturityRating :: !(Maybe PersonalizedstreamGetMaxAllowedMaturityRating)     , _pgSource                   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'PersonalizedstreamGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -77,11 +80,12 @@ personalizedstreamGet     :: PersonalizedstreamGet personalizedstreamGet =-    PersonalizedstreamGet'+  PersonalizedstreamGet'     { _pgLocale = Nothing     , _pgMaxAllowedMaturityRating = Nothing     , _pgSource = Nothing     }+  -- | ISO-639-1 language and ISO-3166-1 country code. Ex: \'en_US\'. Used for -- generating recommendations.
gen/Network/Google/Resource/Books/PromoOffer/Accept.hs view
@@ -66,7 +66,8 @@ -- | -- -- /See:/ 'promoOfferAccept' smart constructor.-data PromoOfferAccept = PromoOfferAccept'+data PromoOfferAccept =+  PromoOfferAccept'     { _poaManufacturer :: !(Maybe Text)     , _poaSerial       :: !(Maybe Text)     , _poaDevice       :: !(Maybe Text)@@ -75,8 +76,10 @@     , _poaOfferId      :: !(Maybe Text)     , _poaProduct      :: !(Maybe Text)     , _poaAndroidId    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'PromoOfferAccept' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -99,7 +102,7 @@ promoOfferAccept     :: PromoOfferAccept promoOfferAccept =-    PromoOfferAccept'+  PromoOfferAccept'     { _poaManufacturer = Nothing     , _poaSerial = Nothing     , _poaDevice = Nothing@@ -109,6 +112,7 @@     , _poaProduct = Nothing     , _poaAndroidId = Nothing     }+  -- | device manufacturer poaManufacturer :: Lens' PromoOfferAccept (Maybe Text)
gen/Network/Google/Resource/Books/PromoOffer/Dismiss.hs view
@@ -64,7 +64,8 @@ -- | -- -- /See:/ 'promoOfferDismiss' smart constructor.-data PromoOfferDismiss = PromoOfferDismiss'+data PromoOfferDismiss =+  PromoOfferDismiss'     { _podManufacturer :: !(Maybe Text)     , _podSerial       :: !(Maybe Text)     , _podDevice       :: !(Maybe Text)@@ -72,8 +73,10 @@     , _podOfferId      :: !(Maybe Text)     , _podProduct      :: !(Maybe Text)     , _podAndroidId    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'PromoOfferDismiss' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -94,7 +97,7 @@ promoOfferDismiss     :: PromoOfferDismiss promoOfferDismiss =-    PromoOfferDismiss'+  PromoOfferDismiss'     { _podManufacturer = Nothing     , _podSerial = Nothing     , _podDevice = Nothing@@ -103,6 +106,7 @@     , _podProduct = Nothing     , _podAndroidId = Nothing     }+  -- | device manufacturer podManufacturer :: Lens' PromoOfferDismiss (Maybe Text)
gen/Network/Google/Resource/Books/PromoOffer/Get.hs view
@@ -62,15 +62,18 @@ -- | Returns a list of promo offers available to the user -- -- /See:/ 'promoOfferGet' smart constructor.-data PromoOfferGet = PromoOfferGet'+data PromoOfferGet =+  PromoOfferGet'     { _pogManufacturer :: !(Maybe Text)     , _pogSerial       :: !(Maybe Text)     , _pogDevice       :: !(Maybe Text)     , _pogModel        :: !(Maybe Text)     , _pogProduct      :: !(Maybe Text)     , _pogAndroidId    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'PromoOfferGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -89,7 +92,7 @@ promoOfferGet     :: PromoOfferGet promoOfferGet =-    PromoOfferGet'+  PromoOfferGet'     { _pogManufacturer = Nothing     , _pogSerial = Nothing     , _pogDevice = Nothing@@ -97,6 +100,7 @@     , _pogProduct = Nothing     , _pogAndroidId = Nothing     }+  -- | device manufacturer pogManufacturer :: Lens' PromoOfferGet (Maybe Text)
gen/Network/Google/Resource/Books/Series/Get.hs view
@@ -52,10 +52,13 @@ -- | Returns Series metadata for the given series ids. -- -- /See:/ 'seriesGet' smart constructor.-newtype SeriesGet = SeriesGet'+newtype SeriesGet =+  SeriesGet'     { _sgSeriesId :: [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SeriesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -64,10 +67,8 @@ seriesGet     :: [Text] -- ^ 'sgSeriesId'     -> SeriesGet-seriesGet pSgSeriesId_ =-    SeriesGet'-    { _sgSeriesId = _Coerce # pSgSeriesId_-    }+seriesGet pSgSeriesId_ = SeriesGet' {_sgSeriesId = _Coerce # pSgSeriesId_}+  -- | String that identifies the series sgSeriesId :: Lens' SeriesGet [Text]
gen/Network/Google/Resource/Books/Series/Membership/Get.hs view
@@ -58,12 +58,15 @@ -- | Returns Series membership data given the series id. -- -- /See:/ 'seriesMembershipGet' smart constructor.-data SeriesMembershipGet = SeriesMembershipGet'+data SeriesMembershipGet =+  SeriesMembershipGet'     { _smgPageToken :: !(Maybe Text)     , _smgPageSize  :: !(Maybe (Textual Word32))     , _smgSeriesId  :: !Text-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'SeriesMembershipGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -77,11 +80,12 @@     :: Text -- ^ 'smgSeriesId'     -> SeriesMembershipGet seriesMembershipGet pSmgSeriesId_ =-    SeriesMembershipGet'+  SeriesMembershipGet'     { _smgPageToken = Nothing     , _smgPageSize = Nothing     , _smgSeriesId = pSmgSeriesId_     }+  -- | The value of the nextToken from the previous page. smgPageToken :: Lens' SeriesMembershipGet (Maybe Text)
gen/Network/Google/Resource/Books/Volumes/Associated/List.hs view
@@ -63,14 +63,17 @@ -- | Return a list of associated books. -- -- /See:/ 'volumesAssociatedList' smart constructor.-data VolumesAssociatedList = VolumesAssociatedList'+data VolumesAssociatedList =+  VolumesAssociatedList'     { _valLocale                   :: !(Maybe Text)     , _valMaxAllowedMaturityRating :: !(Maybe VolumesAssociatedListMaxAllowedMaturityRating)     , _valVolumeId                 :: !Text     , _valSource                   :: !(Maybe Text)     , _valAssociation              :: !(Maybe VolumesAssociatedListAssociation)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesAssociatedList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -88,13 +91,14 @@     :: Text -- ^ 'valVolumeId'     -> VolumesAssociatedList volumesAssociatedList pValVolumeId_ =-    VolumesAssociatedList'+  VolumesAssociatedList'     { _valLocale = Nothing     , _valMaxAllowedMaturityRating = Nothing     , _valVolumeId = pValVolumeId_     , _valSource = Nothing     , _valAssociation = Nothing     }+  -- | ISO-639-1 language and ISO-3166-1 country code. Ex: \'en_US\'. Used for -- generating recommendations.
gen/Network/Google/Resource/Books/Volumes/Get.hs view
@@ -63,7 +63,8 @@ -- | Gets volume information for a single volume. -- -- /See:/ 'volumesGet' smart constructor.-data VolumesGet = VolumesGet'+data VolumesGet =+  VolumesGet'     { _vgCountry                   :: !(Maybe Text)     , _vgIncludeNonComicsSeries    :: !(Maybe Bool)     , _vgPartner                   :: !(Maybe Text)@@ -71,8 +72,10 @@     , _vgSource                    :: !(Maybe Text)     , _vgProjection                :: !(Maybe VolumesGetProjection)     , _vgUserLibraryConsistentRead :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -94,7 +97,7 @@     :: Text -- ^ 'vgVolumeId'     -> VolumesGet volumesGet pVgVolumeId_ =-    VolumesGet'+  VolumesGet'     { _vgCountry = Nothing     , _vgIncludeNonComicsSeries = Nothing     , _vgPartner = Nothing@@ -103,6 +106,7 @@     , _vgProjection = Nothing     , _vgUserLibraryConsistentRead = Nothing     }+  -- | ISO-3166-1 code to override the IP-based location. vgCountry :: Lens' VolumesGet (Maybe Text)
gen/Network/Google/Resource/Books/Volumes/List.hs view
@@ -83,7 +83,8 @@ -- | Performs a book search. -- -- /See:/ 'volumesList' smart constructor.-data VolumesList = VolumesList'+data VolumesList =+  VolumesList'     { _vlOrderBy                  :: !(Maybe VolumesListOrderBy)     , _vlMaxAllowedMaturityRating :: !(Maybe VolumesListMaxAllowedMaturityRating)     , _vlLibraryRestrict          :: !(Maybe VolumesListLibraryRestrict)@@ -98,8 +99,10 @@     , _vlMaxResults               :: !(Maybe (Textual Word32))     , _vlShowPreOrders            :: !(Maybe Bool)     , _vlPrintType                :: !(Maybe VolumesListPrintType)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -135,7 +138,7 @@     :: Text -- ^ 'vlQ'     -> VolumesList volumesList pVlQ_ =-    VolumesList'+  VolumesList'     { _vlOrderBy = Nothing     , _vlMaxAllowedMaturityRating = Nothing     , _vlLibraryRestrict = Nothing@@ -151,6 +154,7 @@     , _vlShowPreOrders = Nothing     , _vlPrintType = Nothing     }+  -- | Sort search results. vlOrderBy :: Lens' VolumesList (Maybe VolumesListOrderBy)
gen/Network/Google/Resource/Books/Volumes/Mybooks/List.hs view
@@ -68,7 +68,8 @@ -- | Return a list of books in My Library. -- -- /See:/ 'volumesMybooksList' smart constructor.-data VolumesMybooksList = VolumesMybooksList'+data VolumesMybooksList =+  VolumesMybooksList'     { _vmlProcessingState :: !(Maybe [VolumesMybooksListProcessingState])     , _vmlAcquireMethod   :: !(Maybe [VolumesMybooksListAcquireMethod])     , _vmlCountry         :: !(Maybe Text)@@ -76,8 +77,10 @@     , _vmlSource          :: !(Maybe Text)     , _vmlStartIndex      :: !(Maybe (Textual Word32))     , _vmlMaxResults      :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesMybooksList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -98,7 +101,7 @@ volumesMybooksList     :: VolumesMybooksList volumesMybooksList =-    VolumesMybooksList'+  VolumesMybooksList'     { _vmlProcessingState = Nothing     , _vmlAcquireMethod = Nothing     , _vmlCountry = Nothing@@ -107,6 +110,7 @@     , _vmlStartIndex = Nothing     , _vmlMaxResults = Nothing     }+  -- | The processing state of the user uploaded volumes to be returned. -- Applicable only if the UPLOADED is specified in the acquireMethod.
gen/Network/Google/Resource/Books/Volumes/Recommended/List.hs view
@@ -58,12 +58,15 @@ -- | Return a list of recommended books for the current user. -- -- /See:/ 'volumesRecommendedList' smart constructor.-data VolumesRecommendedList = VolumesRecommendedList'+data VolumesRecommendedList =+  VolumesRecommendedList'     { _vrlLocale                   :: !(Maybe Text)     , _vrlMaxAllowedMaturityRating :: !(Maybe VolumesRecommendedListMaxAllowedMaturityRating)     , _vrlSource                   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesRecommendedList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -76,11 +79,12 @@ volumesRecommendedList     :: VolumesRecommendedList volumesRecommendedList =-    VolumesRecommendedList'+  VolumesRecommendedList'     { _vrlLocale = Nothing     , _vrlMaxAllowedMaturityRating = Nothing     , _vrlSource = Nothing     }+  -- | ISO-639-1 language and ISO-3166-1 country code. Ex: \'en_US\'. Used for -- generating recommendations.
gen/Network/Google/Resource/Books/Volumes/Recommended/Rate.hs view
@@ -60,13 +60,16 @@ -- | Rate a recommended book for the current user. -- -- /See:/ 'volumesRecommendedRate' smart constructor.-data VolumesRecommendedRate = VolumesRecommendedRate'+data VolumesRecommendedRate =+  VolumesRecommendedRate'     { _vrrRating   :: !VolumesRecommendedRateRating     , _vrrLocale   :: !(Maybe Text)     , _vrrVolumeId :: !Text     , _vrrSource   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesRecommendedRate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -83,12 +86,13 @@     -> Text -- ^ 'vrrVolumeId'     -> VolumesRecommendedRate volumesRecommendedRate pVrrRating_ pVrrVolumeId_ =-    VolumesRecommendedRate'+  VolumesRecommendedRate'     { _vrrRating = pVrrRating_     , _vrrLocale = Nothing     , _vrrVolumeId = pVrrVolumeId_     , _vrrSource = Nothing     }+  -- | Rating to be given to the volume. vrrRating :: Lens' VolumesRecommendedRate VolumesRecommendedRateRating
gen/Network/Google/Resource/Books/Volumes/UserUploaded/List.hs view
@@ -64,15 +64,18 @@ -- | Return a list of books uploaded by the current user. -- -- /See:/ 'volumesUserUploadedList' smart constructor.-data VolumesUserUploadedList = VolumesUserUploadedList'+data VolumesUserUploadedList =+  VolumesUserUploadedList'     { _vuulProcessingState :: !(Maybe [VolumesUserUploadedListProcessingState])     , _vuulLocale          :: !(Maybe Text)     , _vuulVolumeId        :: !(Maybe [Text])     , _vuulSource          :: !(Maybe Text)     , _vuulStartIndex      :: !(Maybe (Textual Word32))     , _vuulMaxResults      :: !(Maybe (Textual Word32))-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'VolumesUserUploadedList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -91,7 +94,7 @@ volumesUserUploadedList     :: VolumesUserUploadedList volumesUserUploadedList =-    VolumesUserUploadedList'+  VolumesUserUploadedList'     { _vuulProcessingState = Nothing     , _vuulLocale = Nothing     , _vuulVolumeId = Nothing@@ -99,6 +102,7 @@     , _vuulStartIndex = Nothing     , _vuulMaxResults = Nothing     }+  -- | The processing state of the user uploaded volumes to be returned. vuulProcessingState :: Lens' VolumesUserUploadedList [VolumesUserUploadedListProcessingState]
gogol-books.cabal view
@@ -1,5 +1,5 @@ name:                  gogol-books-version:               0.4.0+version:               0.5.0 synopsis:              Google Books SDK. homepage:              https://github.com/brendanhay/gogol bug-reports:           https://github.com/brendanhay/gogol/issues@@ -92,5 +92,5 @@         , Network.Google.Books.Types.Sum      build-depends:-          gogol-core == 0.4.0.*+          gogol-core == 0.5.0.*         , base       >= 4.7 && < 5