diff --git a/gen/Network/Google/Books.hs b/gen/Network/Google/Books.hs
--- a/gen/Network/Google/Books.hs
+++ b/gen/Network/Google/Books.hs
@@ -50,6 +50,15 @@
     -- ** books.dictionary.listOfflineMetadata
     , module Network.Google.Resource.Books.Dictionary.ListOfflineMetadata
 
+    -- ** books.familysharing.getFamilyInfo
+    , module Network.Google.Resource.Books.Familysharing.GetFamilyInfo
+
+    -- ** books.familysharing.share
+    , module Network.Google.Resource.Books.Familysharing.Share
+
+    -- ** books.familysharing.unshare
+    , module Network.Google.Resource.Books.Familysharing.Unshare
+
     -- ** books.layers.annotationData.get
     , module Network.Google.Resource.Books.Layers.AnnotationData.Get
 
@@ -416,6 +425,11 @@
     , booksVolumesRecommendedRateResponse
     , bvrrrConsistencyToken
 
+    -- ** UserSettingsNotificationPriceDrop
+    , UserSettingsNotificationPriceDrop
+    , userSettingsNotificationPriceDrop
+    , usnpdOptedState
+
     -- ** VolumeseriesInfo
     , VolumeseriesInfo
     , volumeseriesInfo
@@ -450,6 +464,7 @@
     , nCrmExperimentIds
     , nPcampaignId
     , nReason
+    , nIsDocumentMature
     , nDontShowNotification
     , nNotificationType
     , nNotificationGroup
@@ -647,6 +662,11 @@
     , dddwisidieiText
     , dddwisidieiSource
 
+    -- ** UserSettingsNotificationRewardExpirations
+    , UserSettingsNotificationRewardExpirations
+    , userSettingsNotificationRewardExpirations
+    , usnreOptedState
+
     -- ** DictlayerData
     , DictlayerData
     , dictlayerData
@@ -676,6 +696,9 @@
     -- ** UserSettingsNotification
     , UserSettingsNotification
     , userSettingsNotification
+    , usnRewardExpirations
+    , usnPriceDrop
+    , usnMatchMyInterests
     , usnMoreFromAuthors
     , usnMoreFromSeries
 
@@ -749,6 +772,15 @@
     , dddwisiciValue
     , dddwisiciType
 
+    -- ** FamilyInfoMembership
+    , FamilyInfoMembership
+    , familyInfoMembership
+    , fimAllowedMaturityRating
+    , fimAcquirePermission
+    , fimRole
+    , fimAgeGroup
+    , fimIsInFamily
+
     -- ** Volume2
     , Volume2
     , volume2
@@ -825,6 +857,12 @@
     , raKind
     , raDownloadAccess
 
+    -- ** FamilyInfo
+    , FamilyInfo
+    , familyInfo
+    , fiMembership
+    , fiKind
+
     -- ** AnnotationClientVersionRanges
     , AnnotationClientVersionRanges
     , annotationClientVersionRanges
@@ -979,6 +1017,11 @@
     , v1Kind
     , v1Items
 
+    -- ** UserSettingsNotificationMatchMyInterests
+    , UserSettingsNotificationMatchMyInterests
+    , userSettingsNotificationMatchMyInterests
+    , usnmmiOptedState
+
     -- ** Bookshelves
     , Bookshelves
     , bookshelves
@@ -1026,6 +1069,7 @@
     , vviSamplePageCount
     , vviCategories
     , vviAuthors
+    , vviComicsContent
     , vviAllowAnonLogging
     , vviSubtitle
     , vviPublishedDate
@@ -1107,6 +1151,9 @@
 import           Network.Google.Resource.Books.CloudLoading.DeleteBook
 import           Network.Google.Resource.Books.CloudLoading.UpdateBook
 import           Network.Google.Resource.Books.Dictionary.ListOfflineMetadata
+import           Network.Google.Resource.Books.Familysharing.GetFamilyInfo
+import           Network.Google.Resource.Books.Familysharing.Share
+import           Network.Google.Resource.Books.Familysharing.Unshare
 import           Network.Google.Resource.Books.Layers.AnnotationData.Get
 import           Network.Google.Resource.Books.Layers.AnnotationData.List
 import           Network.Google.Resource.Books.Layers.Get
@@ -1197,6 +1244,9 @@
        :<|> BookshelvesVolumesListResource
        :<|> BookshelvesListResource
        :<|> BookshelvesGetResource
+       :<|> FamilysharingShareResource
+       :<|> FamilysharingGetFamilyInfoResource
+       :<|> FamilysharingUnshareResource
        :<|> PersonalizedstreamGetResource
        :<|> MyConfigSyncVolumeLicensesResource
        :<|> MyConfigGetUserSettingsResource
diff --git a/gen/Network/Google/Books/Types.hs b/gen/Network/Google/Books/Types.hs
--- a/gen/Network/Google/Books/Types.hs
+++ b/gen/Network/Google/Books/Types.hs
@@ -263,6 +263,11 @@
     , booksVolumesRecommendedRateResponse
     , bvrrrConsistencyToken
 
+    -- * UserSettingsNotificationPriceDrop
+    , UserSettingsNotificationPriceDrop
+    , userSettingsNotificationPriceDrop
+    , usnpdOptedState
+
     -- * VolumeseriesInfo
     , VolumeseriesInfo
     , volumeseriesInfo
@@ -297,6 +302,7 @@
     , nCrmExperimentIds
     , nPcampaignId
     , nReason
+    , nIsDocumentMature
     , nDontShowNotification
     , nNotificationType
     , nNotificationGroup
@@ -494,6 +500,11 @@
     , dddwisidieiText
     , dddwisidieiSource
 
+    -- * UserSettingsNotificationRewardExpirations
+    , UserSettingsNotificationRewardExpirations
+    , userSettingsNotificationRewardExpirations
+    , usnreOptedState
+
     -- * DictlayerData
     , DictlayerData
     , dictlayerData
@@ -523,6 +534,9 @@
     -- * UserSettingsNotification
     , UserSettingsNotification
     , userSettingsNotification
+    , usnRewardExpirations
+    , usnPriceDrop
+    , usnMatchMyInterests
     , usnMoreFromAuthors
     , usnMoreFromSeries
 
@@ -596,6 +610,15 @@
     , dddwisiciValue
     , dddwisiciType
 
+    -- * FamilyInfoMembership
+    , FamilyInfoMembership
+    , familyInfoMembership
+    , fimAllowedMaturityRating
+    , fimAcquirePermission
+    , fimRole
+    , fimAgeGroup
+    , fimIsInFamily
+
     -- * Volume2
     , Volume2
     , volume2
@@ -672,6 +695,12 @@
     , raKind
     , raDownloadAccess
 
+    -- * FamilyInfo
+    , FamilyInfo
+    , familyInfo
+    , fiMembership
+    , fiKind
+
     -- * AnnotationClientVersionRanges
     , AnnotationClientVersionRanges
     , annotationClientVersionRanges
@@ -826,6 +855,11 @@
     , v1Kind
     , v1Items
 
+    -- * UserSettingsNotificationMatchMyInterests
+    , UserSettingsNotificationMatchMyInterests
+    , userSettingsNotificationMatchMyInterests
+    , usnmmiOptedState
+
     -- * Bookshelves
     , Bookshelves
     , bookshelves
@@ -873,6 +907,7 @@
     , vviSamplePageCount
     , vviCategories
     , vviAuthors
+    , vviComicsContent
     , vviAllowAnonLogging
     , vviSubtitle
     , vviPublishedDate
diff --git a/gen/Network/Google/Books/Types/Product.hs b/gen/Network/Google/Books/Types/Product.hs
--- a/gen/Network/Google/Books/Types/Product.hs
+++ b/gen/Network/Google/Books/Types/Product.hs
@@ -2176,6 +2176,43 @@
                     _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)
@@ -2399,6 +2436,7 @@
     , _nCrmExperimentIds               :: !(Maybe [Textual Int64])
     , _nPcampaignId                    :: !(Maybe Text)
     , _nReason                         :: !(Maybe Text)
+    , _nIsDocumentMature               :: !(Maybe Bool)
     , _nDontShowNotification           :: !(Maybe Bool)
     , _nNotificationType               :: !(Maybe Text)
     , _nNotificationGroup              :: !(Maybe Text)
@@ -2428,6 +2466,8 @@
 --
 -- * 'nReason'
 --
+-- * 'nIsDocumentMature'
+--
 -- * 'nDontShowNotification'
 --
 -- * 'nNotificationType'
@@ -2450,6 +2490,7 @@
     , _nCrmExperimentIds = Nothing
     , _nPcampaignId = Nothing
     , _nReason = Nothing
+    , _nIsDocumentMature = Nothing
     , _nDontShowNotification = Nothing
     , _nNotificationType = Nothing
     , _nNotificationGroup = Nothing
@@ -2494,6 +2535,11 @@
 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
@@ -2528,6 +2574,7 @@
                      <*> (o .:? "crmExperimentIds" .!= mempty)
                      <*> (o .:? "pcampaign_id")
                      <*> (o .:? "reason")
+                     <*> (o .:? "is_document_mature")
                      <*> (o .:? "dont_show_notification")
                      <*> (o .:? "notification_type")
                      <*> (o .:? "notificationGroup")
@@ -2547,6 +2594,7 @@
                   ("crmExperimentIds" .=) <$> _nCrmExperimentIds,
                   ("pcampaign_id" .=) <$> _nPcampaignId,
                   ("reason" .=) <$> _nReason,
+                  ("is_document_mature" .=) <$> _nIsDocumentMature,
                   ("dont_show_notification" .=) <$>
                     _nDontShowNotification,
                   ("notification_type" .=) <$> _nNotificationType,
@@ -4055,6 +4103,44 @@
                   ("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
@@ -4218,14 +4304,23 @@
 --
 -- /See:/ 'userSettingsNotification' smart constructor.
 data UserSettingsNotification = UserSettingsNotification'
-    { _usnMoreFromAuthors :: !(Maybe UserSettingsNotificationMoreFromAuthors)
-    , _usnMoreFromSeries  :: !(Maybe UserSettingsNotificationMoreFromSeries)
+    { _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'
@@ -4233,10 +4328,27 @@
     :: UserSettingsNotification
 userSettingsNotification =
     UserSettingsNotification'
-    { _usnMoreFromAuthors = Nothing
+    { _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
@@ -4252,14 +4364,19 @@
           = withObject "UserSettingsNotification"
               (\ o ->
                  UserSettingsNotification' <$>
-                   (o .:? "moreFromAuthors") <*>
-                     (o .:? "moreFromSeries"))
+                   (o .:? "rewardExpirations") <*> (o .:? "priceDrop")
+                     <*> (o .:? "matchMyInterests")
+                     <*> (o .:? "moreFromAuthors")
+                     <*> (o .:? "moreFromSeries"))
 
 instance ToJSON UserSettingsNotification where
         toJSON UserSettingsNotification'{..}
           = object
               (catMaybes
-                 [("moreFromAuthors" .=) <$> _usnMoreFromAuthors,
+                 [("rewardExpirations" .=) <$> _usnRewardExpirations,
+                  ("priceDrop" .=) <$> _usnPriceDrop,
+                  ("matchMyInterests" .=) <$> _usnMatchMyInterests,
+                  ("moreFromAuthors" .=) <$> _usnMoreFromAuthors,
                   ("moreFromSeries" .=) <$> _usnMoreFromSeries])
 
 --
@@ -4854,7 +4971,90 @@
                  [("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)
@@ -5495,6 +5695,52 @@
                   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.
@@ -6786,6 +7032,45 @@
                   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
@@ -6993,6 +7278,7 @@
     , _vviSamplePageCount     :: !(Maybe (Textual Int32))
     , _vviCategories          :: !(Maybe [Text])
     , _vviAuthors             :: !(Maybe [Text])
+    , _vviComicsContent       :: !(Maybe Bool)
     , _vviAllowAnonLogging    :: !(Maybe Bool)
     , _vviSubtitle            :: !(Maybe Text)
     , _vviPublishedDate       :: !(Maybe Text)
@@ -7040,6 +7326,8 @@
 --
 -- * 'vviAuthors'
 --
+-- * 'vviComicsContent'
+--
 -- * 'vviAllowAnonLogging'
 --
 -- * 'vviSubtitle'
@@ -7083,6 +7371,7 @@
     , _vviSamplePageCount = Nothing
     , _vviCategories = Nothing
     , _vviAuthors = Nothing
+    , _vviComicsContent = Nothing
     , _vviAllowAnonLogging = Nothing
     , _vviSubtitle = Nothing
     , _vviPublishedDate = Nothing
@@ -7194,6 +7483,12 @@
       _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
@@ -7288,6 +7583,7 @@
                      <*> (o .:? "samplePageCount")
                      <*> (o .:? "categories" .!= mempty)
                      <*> (o .:? "authors" .!= mempty)
+                     <*> (o .:? "comicsContent")
                      <*> (o .:? "allowAnonLogging")
                      <*> (o .:? "subtitle")
                      <*> (o .:? "publishedDate")
@@ -7323,6 +7619,7 @@
                   ("samplePageCount" .=) <$> _vviSamplePageCount,
                   ("categories" .=) <$> _vviCategories,
                   ("authors" .=) <$> _vviAuthors,
+                  ("comicsContent" .=) <$> _vviComicsContent,
                   ("allowAnonLogging" .=) <$> _vviAllowAnonLogging,
                   ("subtitle" .=) <$> _vviSubtitle,
                   ("publishedDate" .=) <$> _vviPublishedDate,
diff --git a/gen/Network/Google/Books/Types/Sum.hs b/gen/Network/Google/Books/Types/Sum.hs
--- a/gen/Network/Google/Books/Types/Sum.hs
+++ b/gen/Network/Google/Books/Types/Sum.hs
@@ -16,7 +16,7 @@
 --
 module Network.Google.Books.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
 
 -- | Restrict information returned to a set of selected fields.
 data VolumesListProjection
diff --git a/gen/Network/Google/Resource/Books/Familysharing/GetFamilyInfo.hs b/gen/Network/Google/Resource/Books/Familysharing/GetFamilyInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Books/Familysharing/GetFamilyInfo.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Books.Familysharing.GetFamilyInfo
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information regarding the family that the user is part of.
+--
+-- /See:/ <https://developers.google.com/books/docs/v1/getting_started Books API Reference> for @books.familysharing.getFamilyInfo@.
+module Network.Google.Resource.Books.Familysharing.GetFamilyInfo
+    (
+    -- * REST Resource
+      FamilysharingGetFamilyInfoResource
+
+    -- * Creating a Request
+    , familysharingGetFamilyInfo
+    , FamilysharingGetFamilyInfo
+
+    -- * Request Lenses
+    , fgfiSource
+    ) where
+
+import           Network.Google.Books.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @books.familysharing.getFamilyInfo@ method which the
+-- 'FamilysharingGetFamilyInfo' request conforms to.
+type FamilysharingGetFamilyInfoResource =
+     "books" :>
+       "v1" :>
+         "familysharing" :>
+           "getFamilyInfo" :>
+             QueryParam "source" Text :>
+               QueryParam "alt" AltJSON :> Get '[JSON] FamilyInfo
+
+-- | Gets information regarding the family that the user is part of.
+--
+-- /See:/ 'familysharingGetFamilyInfo' smart constructor.
+newtype FamilysharingGetFamilyInfo = FamilysharingGetFamilyInfo'
+    { _fgfiSource :: Maybe Text
+    } 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:
+--
+-- * 'fgfiSource'
+familysharingGetFamilyInfo
+    :: FamilysharingGetFamilyInfo
+familysharingGetFamilyInfo =
+    FamilysharingGetFamilyInfo'
+    { _fgfiSource = Nothing
+    }
+
+-- | String to identify the originator of this request.
+fgfiSource :: Lens' FamilysharingGetFamilyInfo (Maybe Text)
+fgfiSource
+  = lens _fgfiSource (\ s a -> s{_fgfiSource = a})
+
+instance GoogleRequest FamilysharingGetFamilyInfo
+         where
+        type Rs FamilysharingGetFamilyInfo = FamilyInfo
+        type Scopes FamilysharingGetFamilyInfo =
+             '["https://www.googleapis.com/auth/books"]
+        requestClient FamilysharingGetFamilyInfo'{..}
+          = go _fgfiSource (Just AltJSON) booksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FamilysharingGetFamilyInfoResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Books/Familysharing/Share.hs b/gen/Network/Google/Resource/Books/Familysharing/Share.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Books/Familysharing/Share.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Books.Familysharing.Share
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Initiates sharing of the content with the user\'s family. Empty response
+-- indicates success.
+--
+-- /See:/ <https://developers.google.com/books/docs/v1/getting_started Books API Reference> for @books.familysharing.share@.
+module Network.Google.Resource.Books.Familysharing.Share
+    (
+    -- * REST Resource
+      FamilysharingShareResource
+
+    -- * Creating a Request
+    , familysharingShare
+    , FamilysharingShare
+
+    -- * Request Lenses
+    , fsVolumeId
+    , fsSource
+    , fsDocId
+    ) where
+
+import           Network.Google.Books.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @books.familysharing.share@ method which the
+-- 'FamilysharingShare' request conforms to.
+type FamilysharingShareResource =
+     "books" :>
+       "v1" :>
+         "familysharing" :>
+           "share" :>
+             QueryParam "volumeId" Text :>
+               QueryParam "source" Text :>
+                 QueryParam "docId" Text :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] ()
+
+-- | Initiates sharing of the content with the user\'s family. Empty response
+-- indicates success.
+--
+-- /See:/ 'familysharingShare' smart constructor.
+data FamilysharingShare = FamilysharingShare'
+    { _fsVolumeId :: !(Maybe Text)
+    , _fsSource   :: !(Maybe Text)
+    , _fsDocId    :: !(Maybe Text)
+    } 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:
+--
+-- * 'fsVolumeId'
+--
+-- * 'fsSource'
+--
+-- * 'fsDocId'
+familysharingShare
+    :: FamilysharingShare
+familysharingShare =
+    FamilysharingShare'
+    { _fsVolumeId = Nothing
+    , _fsSource = Nothing
+    , _fsDocId = Nothing
+    }
+
+-- | The volume to share.
+fsVolumeId :: Lens' FamilysharingShare (Maybe Text)
+fsVolumeId
+  = lens _fsVolumeId (\ s a -> s{_fsVolumeId = a})
+
+-- | String to identify the originator of this request.
+fsSource :: Lens' FamilysharingShare (Maybe Text)
+fsSource = lens _fsSource (\ s a -> s{_fsSource = a})
+
+-- | The docid to share.
+fsDocId :: Lens' FamilysharingShare (Maybe Text)
+fsDocId = lens _fsDocId (\ s a -> s{_fsDocId = a})
+
+instance GoogleRequest FamilysharingShare where
+        type Rs FamilysharingShare = ()
+        type Scopes FamilysharingShare =
+             '["https://www.googleapis.com/auth/books"]
+        requestClient FamilysharingShare'{..}
+          = go _fsVolumeId _fsSource _fsDocId (Just AltJSON)
+              booksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FamilysharingShareResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Books/Familysharing/Unshare.hs b/gen/Network/Google/Resource/Books/Familysharing/Unshare.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Books/Familysharing/Unshare.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Books.Familysharing.Unshare
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Initiates revoking content that has already been shared with the user\'s
+-- family. Empty response indicates success.
+--
+-- /See:/ <https://developers.google.com/books/docs/v1/getting_started Books API Reference> for @books.familysharing.unshare@.
+module Network.Google.Resource.Books.Familysharing.Unshare
+    (
+    -- * REST Resource
+      FamilysharingUnshareResource
+
+    -- * Creating a Request
+    , familysharingUnshare
+    , FamilysharingUnshare
+
+    -- * Request Lenses
+    , fuVolumeId
+    , fuSource
+    , fuDocId
+    ) where
+
+import           Network.Google.Books.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @books.familysharing.unshare@ method which the
+-- 'FamilysharingUnshare' request conforms to.
+type FamilysharingUnshareResource =
+     "books" :>
+       "v1" :>
+         "familysharing" :>
+           "unshare" :>
+             QueryParam "volumeId" Text :>
+               QueryParam "source" Text :>
+                 QueryParam "docId" Text :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] ()
+
+-- | Initiates revoking content that has already been shared with the user\'s
+-- family. Empty response indicates success.
+--
+-- /See:/ 'familysharingUnshare' smart constructor.
+data FamilysharingUnshare = FamilysharingUnshare'
+    { _fuVolumeId :: !(Maybe Text)
+    , _fuSource   :: !(Maybe Text)
+    , _fuDocId    :: !(Maybe Text)
+    } 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:
+--
+-- * 'fuVolumeId'
+--
+-- * 'fuSource'
+--
+-- * 'fuDocId'
+familysharingUnshare
+    :: FamilysharingUnshare
+familysharingUnshare =
+    FamilysharingUnshare'
+    { _fuVolumeId = Nothing
+    , _fuSource = Nothing
+    , _fuDocId = Nothing
+    }
+
+-- | The volume to unshare.
+fuVolumeId :: Lens' FamilysharingUnshare (Maybe Text)
+fuVolumeId
+  = lens _fuVolumeId (\ s a -> s{_fuVolumeId = a})
+
+-- | String to identify the originator of this request.
+fuSource :: Lens' FamilysharingUnshare (Maybe Text)
+fuSource = lens _fuSource (\ s a -> s{_fuSource = a})
+
+-- | The docid to unshare.
+fuDocId :: Lens' FamilysharingUnshare (Maybe Text)
+fuDocId = lens _fuDocId (\ s a -> s{_fuDocId = a})
+
+instance GoogleRequest FamilysharingUnshare where
+        type Rs FamilysharingUnshare = ()
+        type Scopes FamilysharingUnshare =
+             '["https://www.googleapis.com/auth/books"]
+        requestClient FamilysharingUnshare'{..}
+          = go _fuVolumeId _fuSource _fuDocId (Just AltJSON)
+              booksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FamilysharingUnshareResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Books/MyLibrary/Annotations/Insert.hs b/gen/Network/Google/Resource/Books/MyLibrary/Annotations/Insert.hs
--- a/gen/Network/Google/Resource/Books/MyLibrary/Annotations/Insert.hs
+++ b/gen/Network/Google/Resource/Books/MyLibrary/Annotations/Insert.hs
@@ -36,6 +36,7 @@
     , mlaiCountry
     , mlaiPayload
     , mlaiShowOnlySummaryInResponse
+    , mlaiAnnotationId
     , mlaiSource
     ) where
 
@@ -51,9 +52,10 @@
            "annotations" :>
              QueryParam "country" Text :>
                QueryParam "showOnlySummaryInResponse" Bool :>
-                 QueryParam "source" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Annotation :> Post '[JSON] Annotation
+                 QueryParam "annotationId" Text :>
+                   QueryParam "source" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Annotation :> Post '[JSON] Annotation
 
 -- | Inserts a new annotation.
 --
@@ -62,6 +64,7 @@
     { _mlaiCountry                   :: !(Maybe Text)
     , _mlaiPayload                   :: !Annotation
     , _mlaiShowOnlySummaryInResponse :: !(Maybe Bool)
+    , _mlaiAnnotationId              :: !(Maybe Text)
     , _mlaiSource                    :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -75,6 +78,8 @@
 --
 -- * 'mlaiShowOnlySummaryInResponse'
 --
+-- * 'mlaiAnnotationId'
+--
 -- * 'mlaiSource'
 myLibraryAnnotationsInsert
     :: Annotation -- ^ 'mlaiPayload'
@@ -84,6 +89,7 @@
     { _mlaiCountry = Nothing
     , _mlaiPayload = pMlaiPayload_
     , _mlaiShowOnlySummaryInResponse = Nothing
+    , _mlaiAnnotationId = Nothing
     , _mlaiSource = Nothing
     }
 
@@ -104,6 +110,12 @@
   = lens _mlaiShowOnlySummaryInResponse
       (\ s a -> s{_mlaiShowOnlySummaryInResponse = a})
 
+-- | The ID for the annotation to insert.
+mlaiAnnotationId :: Lens' MyLibraryAnnotationsInsert (Maybe Text)
+mlaiAnnotationId
+  = lens _mlaiAnnotationId
+      (\ s a -> s{_mlaiAnnotationId = a})
+
 -- | String to identify the originator of this request.
 mlaiSource :: Lens' MyLibraryAnnotationsInsert (Maybe Text)
 mlaiSource
@@ -116,6 +128,7 @@
              '["https://www.googleapis.com/auth/books"]
         requestClient MyLibraryAnnotationsInsert'{..}
           = go _mlaiCountry _mlaiShowOnlySummaryInResponse
+              _mlaiAnnotationId
               _mlaiSource
               (Just AltJSON)
               _mlaiPayload
diff --git a/gogol-books.cabal b/gogol-books.cabal
--- a/gogol-books.cabal
+++ b/gogol-books.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-books
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Books SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -42,6 +42,9 @@
         , Network.Google.Resource.Books.CloudLoading.DeleteBook
         , Network.Google.Resource.Books.CloudLoading.UpdateBook
         , Network.Google.Resource.Books.Dictionary.ListOfflineMetadata
+        , Network.Google.Resource.Books.Familysharing.GetFamilyInfo
+        , Network.Google.Resource.Books.Familysharing.Share
+        , Network.Google.Resource.Books.Familysharing.Unshare
         , Network.Google.Resource.Books.Layers.AnnotationData.Get
         , Network.Google.Resource.Books.Layers.AnnotationData.List
         , Network.Google.Resource.Books.Layers.Get
@@ -89,5 +92,5 @@
         , Network.Google.Books.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
