diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.1.0`
+`0.1.1`
 
 
 ## Description
diff --git a/gen/Network/Google/DNS.hs b/gen/Network/Google/DNS.hs
--- a/gen/Network/Google/DNS.hs
+++ b/gen/Network/Google/DNS.hs
@@ -41,6 +41,18 @@
     -- ** dns.changes.list
     , module Network.Google.Resource.DNS.Changes.List
 
+    -- ** dns.dnskeys.get
+    , module Network.Google.Resource.DNS.DNSkeys.Get
+
+    -- ** dns.dnskeys.list
+    , module Network.Google.Resource.DNS.DNSkeys.List
+
+    -- ** dns.managedZoneOperations.get
+    , module Network.Google.Resource.DNS.ManagedZoneOperations.Get
+
+    -- ** dns.managedZoneOperations.list
+    , module Network.Google.Resource.DNS.ManagedZoneOperations.List
+
     -- ** dns.managedZones.create
     , module Network.Google.Resource.DNS.ManagedZones.Create
 
@@ -53,6 +65,12 @@
     -- ** dns.managedZones.list
     , module Network.Google.Resource.DNS.ManagedZones.List
 
+    -- ** dns.managedZones.patch
+    , module Network.Google.Resource.DNS.ManagedZones.Patch
+
+    -- ** dns.managedZones.update
+    , module Network.Google.Resource.DNS.ManagedZones.Update
+
     -- ** dns.projects.get
     , module Network.Google.Resource.DNS.Projects.Get
 
@@ -61,13 +79,42 @@
 
     -- * Types
 
+    -- ** DNSKeySpecAlgorithm
+    , DNSKeySpecAlgorithm (..)
+
+    -- ** ManagedZoneDNSSecConfigNonExistence
+    , ManagedZoneDNSSecConfigNonExistence (..)
+
+    -- ** OperationDNSKeyContext
+    , OperationDNSKeyContext
+    , operationDNSKeyContext
+    , odkcOldValue
+    , odkcNewValue
+
+    -- ** DNSKeysListResponse
+    , DNSKeysListResponse
+    , dnsKeysListResponse
+    , dklrNextPageToken
+    , dklrDNSKeys
+    , dklrKind
+    , dklrHeader
+
     -- ** ChangesListResponse
     , ChangesListResponse
     , changesListResponse
     , clrNextPageToken
     , clrChanges
     , clrKind
+    , clrHeader
 
+    -- ** ManagedZoneDNSSecConfigState
+    , ManagedZoneDNSSecConfigState (..)
+
+    -- ** ManagedZonesDeleteResponse
+    , ManagedZonesDeleteResponse
+    , managedZonesDeleteResponse
+    , mzdrHeader
+
     -- ** Project
     , Project
     , project
@@ -76,9 +123,32 @@
     , pNumber
     , pQuota
 
+    -- ** Operation
+    , Operation
+    , operation
+    , oStatus
+    , oStartTime
+    , oKind
+    , oUser
+    , oId
+    , oType
+    , oZoneContext
+    , oDNSKeyContext
+
+    -- ** DNSKeySpec
+    , DNSKeySpec
+    , dnsKeySpec
+    , dksKeyType
+    , dksKind
+    , dksAlgorithm
+    , dksKeyLength
+
     -- ** ChangesListSortBy
     , ChangesListSortBy (..)
 
+    -- ** DNSKeyDigestType
+    , DNSKeyDigestType (..)
+
     -- ** Change
     , Change
     , change
@@ -88,22 +158,76 @@
     , cKind
     , cDeletions
     , cId
+    , cIsServing
 
+    -- ** DNSKey
+    , DNSKey
+    , dnsKey
+    , dkCreationTime
+    , dkKeyTag
+    , dkKind
+    , dkDigests
+    , dkPublicKey
+    , dkAlgorithm
+    , dkId
+    , dkType
+    , dkKeyLength
+    , dkIsActive
+    , dkDescription
+
+    -- ** OperationStatus
+    , OperationStatus (..)
+
+    -- ** OperationManagedZoneContext
+    , OperationManagedZoneContext
+    , operationManagedZoneContext
+    , omzcOldValue
+    , omzcNewValue
+
+    -- ** DNSKeyAlgorithm
+    , DNSKeyAlgorithm (..)
+
+    -- ** ResponseHeader
+    , ResponseHeader
+    , responseHeader
+    , rhOperationId
+
+    -- ** DNSKeySpecKeyType
+    , DNSKeySpecKeyType (..)
+
+    -- ** ManagedZoneOperationsListResponse
+    , ManagedZoneOperationsListResponse
+    , managedZoneOperationsListResponse
+    , mzolrNextPageToken
+    , mzolrKind
+    , mzolrHeader
+    , mzolrOperations
+
     -- ** ResourceRecordSetsListResponse
     , ResourceRecordSetsListResponse
     , resourceRecordSetsListResponse
     , rrslrNextPageToken
     , rrslrKind
+    , rrslrHeader
     , rrslrRrSets
 
     -- ** ChangeStatus
     , ChangeStatus (..)
 
+    -- ** ManagedZoneDNSSecConfig
+    , ManagedZoneDNSSecConfig
+    , managedZoneDNSSecConfig
+    , mzdscState
+    , mzdscKind
+    , mzdscDefaultKeySpecs
+    , mzdscNonExistence
+
     -- ** ResourceRecordSet
     , ResourceRecordSet
     , resourceRecordSet
     , rrsTtl
     , rrsKind
+    , rrsSignatureRrDatas
     , rrsName
     , rrsType
     , rrsRrDatas
@@ -118,24 +242,40 @@
     , mzId
     , mzDNSName
     , mzDescription
+    , mzDNSsecConfig
     , mzNameServers
 
     -- ** Quota
     , Quota
     , quota
     , qRrSetDeletionsPerChange
+    , qWhiteListedKeySpecs
     , qRrSetsPerManagedZone
     , qKind
     , qResourceRecordsPerRrSet
     , qRrSetAdditionsPerChange
     , qManagedZones
     , qTotalRrDataSizePerChange
+    , qDNSKeysPerManagedZone
 
+    -- ** DNSKeyType
+    , DNSKeyType (..)
+
+    -- ** DNSKeyDigest
+    , DNSKeyDigest
+    , dnsKeyDigest
+    , dkdDigest
+    , dkdType
+
+    -- ** ManagedZoneOperationsListSortBy
+    , ManagedZoneOperationsListSortBy (..)
+
     -- ** ManagedZonesListResponse
     , ManagedZonesListResponse
     , managedZonesListResponse
     , mzlrNextPageToken
     , mzlrKind
+    , mzlrHeader
     , mzlrManagedZones
     ) where
 
@@ -144,10 +284,16 @@
 import           Network.Google.Resource.DNS.Changes.Create
 import           Network.Google.Resource.DNS.Changes.Get
 import           Network.Google.Resource.DNS.Changes.List
+import           Network.Google.Resource.DNS.DNSkeys.Get
+import           Network.Google.Resource.DNS.DNSkeys.List
+import           Network.Google.Resource.DNS.ManagedZoneOperations.Get
+import           Network.Google.Resource.DNS.ManagedZoneOperations.List
 import           Network.Google.Resource.DNS.ManagedZones.Create
 import           Network.Google.Resource.DNS.ManagedZones.Delete
 import           Network.Google.Resource.DNS.ManagedZones.Get
 import           Network.Google.Resource.DNS.ManagedZones.List
+import           Network.Google.Resource.DNS.ManagedZones.Patch
+import           Network.Google.Resource.DNS.ManagedZones.Update
 import           Network.Google.Resource.DNS.Projects.Get
 import           Network.Google.Resource.DNS.ResourceRecordSets.List
 
@@ -157,11 +303,17 @@
 
 -- | Represents the entirety of the methods and resources available for the Google Cloud DNS API service.
 type DNSAPI =
-     ChangesListResource :<|> ChangesGetResource :<|>
-       ChangesCreateResource
+     DNSkeysListResource :<|> DNSkeysGetResource :<|>
+       ChangesListResource
+       :<|> ChangesGetResource
+       :<|> ChangesCreateResource
        :<|> ResourceRecordSetsListResource
+       :<|> ManagedZoneOperationsListResource
+       :<|> ManagedZoneOperationsGetResource
        :<|> ManagedZonesListResource
+       :<|> ManagedZonesPatchResource
        :<|> ManagedZonesGetResource
        :<|> ManagedZonesCreateResource
        :<|> ManagedZonesDeleteResource
+       :<|> ManagedZonesUpdateResource
        :<|> ProjectsGetResource
diff --git a/gen/Network/Google/DNS/Types.hs b/gen/Network/Google/DNS/Types.hs
--- a/gen/Network/Google/DNS/Types.hs
+++ b/gen/Network/Google/DNS/Types.hs
@@ -25,13 +25,42 @@
     , ndevClouddnsReadwriteScope
     , cloudPlatformScope
 
+    -- * DNSKeySpecAlgorithm
+    , DNSKeySpecAlgorithm (..)
+
+    -- * ManagedZoneDNSSecConfigNonExistence
+    , ManagedZoneDNSSecConfigNonExistence (..)
+
+    -- * OperationDNSKeyContext
+    , OperationDNSKeyContext
+    , operationDNSKeyContext
+    , odkcOldValue
+    , odkcNewValue
+
+    -- * DNSKeysListResponse
+    , DNSKeysListResponse
+    , dnsKeysListResponse
+    , dklrNextPageToken
+    , dklrDNSKeys
+    , dklrKind
+    , dklrHeader
+
     -- * ChangesListResponse
     , ChangesListResponse
     , changesListResponse
     , clrNextPageToken
     , clrChanges
     , clrKind
+    , clrHeader
 
+    -- * ManagedZoneDNSSecConfigState
+    , ManagedZoneDNSSecConfigState (..)
+
+    -- * ManagedZonesDeleteResponse
+    , ManagedZonesDeleteResponse
+    , managedZonesDeleteResponse
+    , mzdrHeader
+
     -- * Project
     , Project
     , project
@@ -40,9 +69,32 @@
     , pNumber
     , pQuota
 
+    -- * Operation
+    , Operation
+    , operation
+    , oStatus
+    , oStartTime
+    , oKind
+    , oUser
+    , oId
+    , oType
+    , oZoneContext
+    , oDNSKeyContext
+
+    -- * DNSKeySpec
+    , DNSKeySpec
+    , dnsKeySpec
+    , dksKeyType
+    , dksKind
+    , dksAlgorithm
+    , dksKeyLength
+
     -- * ChangesListSortBy
     , ChangesListSortBy (..)
 
+    -- * DNSKeyDigestType
+    , DNSKeyDigestType (..)
+
     -- * Change
     , Change
     , change
@@ -52,22 +104,76 @@
     , cKind
     , cDeletions
     , cId
+    , cIsServing
 
+    -- * DNSKey
+    , DNSKey
+    , dnsKey
+    , dkCreationTime
+    , dkKeyTag
+    , dkKind
+    , dkDigests
+    , dkPublicKey
+    , dkAlgorithm
+    , dkId
+    , dkType
+    , dkKeyLength
+    , dkIsActive
+    , dkDescription
+
+    -- * OperationStatus
+    , OperationStatus (..)
+
+    -- * OperationManagedZoneContext
+    , OperationManagedZoneContext
+    , operationManagedZoneContext
+    , omzcOldValue
+    , omzcNewValue
+
+    -- * DNSKeyAlgorithm
+    , DNSKeyAlgorithm (..)
+
+    -- * ResponseHeader
+    , ResponseHeader
+    , responseHeader
+    , rhOperationId
+
+    -- * DNSKeySpecKeyType
+    , DNSKeySpecKeyType (..)
+
+    -- * ManagedZoneOperationsListResponse
+    , ManagedZoneOperationsListResponse
+    , managedZoneOperationsListResponse
+    , mzolrNextPageToken
+    , mzolrKind
+    , mzolrHeader
+    , mzolrOperations
+
     -- * ResourceRecordSetsListResponse
     , ResourceRecordSetsListResponse
     , resourceRecordSetsListResponse
     , rrslrNextPageToken
     , rrslrKind
+    , rrslrHeader
     , rrslrRrSets
 
     -- * ChangeStatus
     , ChangeStatus (..)
 
+    -- * ManagedZoneDNSSecConfig
+    , ManagedZoneDNSSecConfig
+    , managedZoneDNSSecConfig
+    , mzdscState
+    , mzdscKind
+    , mzdscDefaultKeySpecs
+    , mzdscNonExistence
+
     -- * ResourceRecordSet
     , ResourceRecordSet
     , resourceRecordSet
     , rrsTtl
     , rrsKind
+    , rrsSignatureRrDatas
     , rrsName
     , rrsType
     , rrsRrDatas
@@ -82,24 +188,40 @@
     , mzId
     , mzDNSName
     , mzDescription
+    , mzDNSsecConfig
     , mzNameServers
 
     -- * Quota
     , Quota
     , quota
     , qRrSetDeletionsPerChange
+    , qWhiteListedKeySpecs
     , qRrSetsPerManagedZone
     , qKind
     , qResourceRecordsPerRrSet
     , qRrSetAdditionsPerChange
     , qManagedZones
     , qTotalRrDataSizePerChange
+    , qDNSKeysPerManagedZone
 
+    -- * DNSKeyType
+    , DNSKeyType (..)
+
+    -- * DNSKeyDigest
+    , DNSKeyDigest
+    , dnsKeyDigest
+    , dkdDigest
+    , dkdType
+
+    -- * ManagedZoneOperationsListSortBy
+    , ManagedZoneOperationsListSortBy (..)
+
     -- * ManagedZonesListResponse
     , ManagedZonesListResponse
     , managedZonesListResponse
     , mzlrNextPageToken
     , mzlrKind
+    , mzlrHeader
     , mzlrManagedZones
     ) where
 
@@ -107,10 +229,10 @@
 import           Network.Google.DNS.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v1' of the Google Cloud DNS API. This contains the host and root path used as a starting point for constructing service requests.
+-- | Default request referring to version 'v2beta1' of the Google Cloud DNS API. This contains the host and root path used as a starting point for constructing service requests.
 dNSService :: ServiceConfig
 dNSService
-  = defaultService (ServiceId "dns:v1")
+  = defaultService (ServiceId "dns:v2beta1")
       "www.googleapis.com"
 
 -- | View your DNS records hosted by Google Cloud DNS
diff --git a/gen/Network/Google/DNS/Types/Product.hs b/gen/Network/Google/DNS/Types/Product.hs
--- a/gen/Network/Google/DNS/Types/Product.hs
+++ b/gen/Network/Google/DNS/Types/Product.hs
@@ -20,6 +20,131 @@
 import           Network.Google.DNS.Types.Sum
 import           Network.Google.Prelude
 
+--
+-- /See:/ 'operationDNSKeyContext' smart constructor.
+data OperationDNSKeyContext = OperationDNSKeyContext'
+    { _odkcOldValue :: !(Maybe DNSKey)
+    , _odkcNewValue :: !(Maybe DNSKey)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationDNSKeyContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'odkcOldValue'
+--
+-- * 'odkcNewValue'
+operationDNSKeyContext
+    :: OperationDNSKeyContext
+operationDNSKeyContext =
+    OperationDNSKeyContext'
+    { _odkcOldValue = Nothing
+    , _odkcNewValue = Nothing
+    }
+
+-- | The pre-operation DnsKey resource.
+odkcOldValue :: Lens' OperationDNSKeyContext (Maybe DNSKey)
+odkcOldValue
+  = lens _odkcOldValue (\ s a -> s{_odkcOldValue = a})
+
+-- | The post-operation DnsKey resource.
+odkcNewValue :: Lens' OperationDNSKeyContext (Maybe DNSKey)
+odkcNewValue
+  = lens _odkcNewValue (\ s a -> s{_odkcNewValue = a})
+
+instance FromJSON OperationDNSKeyContext where
+        parseJSON
+          = withObject "OperationDNSKeyContext"
+              (\ o ->
+                 OperationDNSKeyContext' <$>
+                   (o .:? "oldValue") <*> (o .:? "newValue"))
+
+instance ToJSON OperationDNSKeyContext where
+        toJSON OperationDNSKeyContext'{..}
+          = object
+              (catMaybes
+                 [("oldValue" .=) <$> _odkcOldValue,
+                  ("newValue" .=) <$> _odkcNewValue])
+
+-- | The response to a request to enumerate DnsKeys in a ManagedZone.
+--
+-- /See:/ 'dnsKeysListResponse' smart constructor.
+data DNSKeysListResponse = DNSKeysListResponse'
+    { _dklrNextPageToken :: !(Maybe Text)
+    , _dklrDNSKeys       :: !(Maybe [DNSKey])
+    , _dklrKind          :: !Text
+    , _dklrHeader        :: !(Maybe ResponseHeader)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSKeysListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dklrNextPageToken'
+--
+-- * 'dklrDNSKeys'
+--
+-- * 'dklrKind'
+--
+-- * 'dklrHeader'
+dnsKeysListResponse
+    :: DNSKeysListResponse
+dnsKeysListResponse =
+    DNSKeysListResponse'
+    { _dklrNextPageToken = Nothing
+    , _dklrDNSKeys = Nothing
+    , _dklrKind = "dns#dnsKeysListResponse"
+    , _dklrHeader = Nothing
+    }
+
+-- | The presence of this field indicates that there exist more results
+-- following your last page of results in pagination order. To fetch them,
+-- make another list request using this value as your pagination token. In
+-- this way you can retrieve the complete contents of even very large
+-- collections one page at a time. However, if the contents of the
+-- collection change between the first and last paginated list request, the
+-- set of all elements returned will be an inconsistent view of the
+-- collection. There is no way to retrieve a \"snapshot\" of collections
+-- larger than the maximum page size.
+dklrNextPageToken :: Lens' DNSKeysListResponse (Maybe Text)
+dklrNextPageToken
+  = lens _dklrNextPageToken
+      (\ s a -> s{_dklrNextPageToken = a})
+
+-- | The requested resources.
+dklrDNSKeys :: Lens' DNSKeysListResponse [DNSKey]
+dklrDNSKeys
+  = lens _dklrDNSKeys (\ s a -> s{_dklrDNSKeys = a}) .
+      _Default
+      . _Coerce
+
+-- | Type of resource.
+dklrKind :: Lens' DNSKeysListResponse Text
+dklrKind = lens _dklrKind (\ s a -> s{_dklrKind = a})
+
+dklrHeader :: Lens' DNSKeysListResponse (Maybe ResponseHeader)
+dklrHeader
+  = lens _dklrHeader (\ s a -> s{_dklrHeader = a})
+
+instance FromJSON DNSKeysListResponse where
+        parseJSON
+          = withObject "DNSKeysListResponse"
+              (\ o ->
+                 DNSKeysListResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "dnsKeys" .!= mempty)
+                     <*> (o .:? "kind" .!= "dns#dnsKeysListResponse")
+                     <*> (o .:? "header"))
+
+instance ToJSON DNSKeysListResponse where
+        toJSON DNSKeysListResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dklrNextPageToken,
+                  ("dnsKeys" .=) <$> _dklrDNSKeys,
+                  Just ("kind" .= _dklrKind),
+                  ("header" .=) <$> _dklrHeader])
+
 -- | The response to a request to enumerate Changes to a ResourceRecordSets
 -- collection.
 --
@@ -28,6 +153,7 @@
     { _clrNextPageToken :: !(Maybe Text)
     , _clrChanges       :: !(Maybe [Change])
     , _clrKind          :: !Text
+    , _clrHeader        :: !(Maybe ResponseHeader)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ChangesListResponse' with the minimum fields required to make a request.
@@ -39,6 +165,8 @@
 -- * 'clrChanges'
 --
 -- * 'clrKind'
+--
+-- * 'clrHeader'
 changesListResponse
     :: ChangesListResponse
 changesListResponse =
@@ -46,6 +174,7 @@
     { _clrNextPageToken = Nothing
     , _clrChanges = Nothing
     , _clrKind = "dns#changesListResponse"
+    , _clrHeader = Nothing
     }
 
 -- | The presence of this field indicates that there exist more results
@@ -73,6 +202,10 @@
 clrKind :: Lens' ChangesListResponse Text
 clrKind = lens _clrKind (\ s a -> s{_clrKind = a})
 
+clrHeader :: Lens' ChangesListResponse (Maybe ResponseHeader)
+clrHeader
+  = lens _clrHeader (\ s a -> s{_clrHeader = a})
+
 instance FromJSON ChangesListResponse where
         parseJSON
           = withObject "ChangesListResponse"
@@ -80,7 +213,8 @@
                  ChangesListResponse' <$>
                    (o .:? "nextPageToken") <*>
                      (o .:? "changes" .!= mempty)
-                     <*> (o .:? "kind" .!= "dns#changesListResponse"))
+                     <*> (o .:? "kind" .!= "dns#changesListResponse")
+                     <*> (o .:? "header"))
 
 instance ToJSON ChangesListResponse where
         toJSON ChangesListResponse'{..}
@@ -88,8 +222,41 @@
               (catMaybes
                  [("nextPageToken" .=) <$> _clrNextPageToken,
                   ("changes" .=) <$> _clrChanges,
-                  Just ("kind" .= _clrKind)])
+                  Just ("kind" .= _clrKind),
+                  ("header" .=) <$> _clrHeader])
 
+--
+-- /See:/ 'managedZonesDeleteResponse' smart constructor.
+newtype ManagedZonesDeleteResponse = ManagedZonesDeleteResponse'
+    { _mzdrHeader :: Maybe ResponseHeader
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZonesDeleteResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzdrHeader'
+managedZonesDeleteResponse
+    :: ManagedZonesDeleteResponse
+managedZonesDeleteResponse =
+    ManagedZonesDeleteResponse'
+    { _mzdrHeader = Nothing
+    }
+
+mzdrHeader :: Lens' ManagedZonesDeleteResponse (Maybe ResponseHeader)
+mzdrHeader
+  = lens _mzdrHeader (\ s a -> s{_mzdrHeader = a})
+
+instance FromJSON ManagedZonesDeleteResponse where
+        parseJSON
+          = withObject "ManagedZonesDeleteResponse"
+              (\ o ->
+                 ManagedZonesDeleteResponse' <$> (o .:? "header"))
+
+instance ToJSON ManagedZonesDeleteResponse where
+        toJSON ManagedZonesDeleteResponse'{..}
+          = object (catMaybes [("header" .=) <$> _mzdrHeader])
+
 -- | A project resource. The project is a top level container for resources
 -- including Cloud DNS ManagedZones. Projects can be created only in the
 -- APIs console.
@@ -160,6 +327,202 @@
                   ("number" .=) <$> _pNumber,
                   ("quota" .=) <$> _pQuota])
 
+-- | An operation represents a successful mutation performed on a Cloud DNS
+-- resource. Operations provide: - An audit log of server resource
+-- mutations. - A way to recover\/retry API calls in the case where the
+-- response is never received by the caller. Use the caller specified
+-- client_operation_id.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation'
+    { _oStatus        :: !(Maybe OperationStatus)
+    , _oStartTime     :: !(Maybe Text)
+    , _oKind          :: !Text
+    , _oUser          :: !(Maybe Text)
+    , _oId            :: !(Maybe Text)
+    , _oType          :: !(Maybe Text)
+    , _oZoneContext   :: !(Maybe OperationManagedZoneContext)
+    , _oDNSKeyContext :: !(Maybe OperationDNSKeyContext)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oStatus'
+--
+-- * 'oStartTime'
+--
+-- * 'oKind'
+--
+-- * 'oUser'
+--
+-- * 'oId'
+--
+-- * 'oType'
+--
+-- * 'oZoneContext'
+--
+-- * 'oDNSKeyContext'
+operation
+    :: Operation
+operation =
+    Operation'
+    { _oStatus = Nothing
+    , _oStartTime = Nothing
+    , _oKind = "dns#operation"
+    , _oUser = Nothing
+    , _oId = Nothing
+    , _oType = Nothing
+    , _oZoneContext = Nothing
+    , _oDNSKeyContext = Nothing
+    }
+
+-- | Status of the operation. Can be one of the following: \"PENDING\" or
+-- \"DONE\" (output only).
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | The time that this operation was started by the server. This is in
+-- RFC3339 text format (output only).
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"dns#operation\".
+oKind :: Lens' Operation Text
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | User who requested the operation, for example: user\'example.com.
+-- cloud-dns-system for operations automatically done by the system.
+-- (output only)
+oUser :: Lens' Operation (Maybe Text)
+oUser = lens _oUser (\ s a -> s{_oUser = a})
+
+-- | Unique identifier for the resource. This is the client_operation_id if
+-- the client specified it when the mutation was initiated, otherwise, it
+-- is generated by the server. The name must be 1-63 characters long and
+-- match the regular expression [-a-z0-9]? (output only)
+oId :: Lens' Operation (Maybe Text)
+oId = lens _oId (\ s a -> s{_oId = a})
+
+-- | Type of the operation. Operations include insert, update, and delete
+-- (output only).
+oType :: Lens' Operation (Maybe Text)
+oType = lens _oType (\ s a -> s{_oType = a})
+
+-- | Only populated if the operation targeted a ManagedZone (output only).
+oZoneContext :: Lens' Operation (Maybe OperationManagedZoneContext)
+oZoneContext
+  = lens _oZoneContext (\ s a -> s{_oZoneContext = a})
+
+-- | Only populated if the operation targeted a DnsKey (output only).
+oDNSKeyContext :: Lens' Operation (Maybe OperationDNSKeyContext)
+oDNSKeyContext
+  = lens _oDNSKeyContext
+      (\ s a -> s{_oDNSKeyContext = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation' <$>
+                   (o .:? "status") <*> (o .:? "startTime") <*>
+                     (o .:? "kind" .!= "dns#operation")
+                     <*> (o .:? "user")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type")
+                     <*> (o .:? "zoneContext")
+                     <*> (o .:? "dnsKeyContext"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _oStatus,
+                  ("startTime" .=) <$> _oStartTime,
+                  Just ("kind" .= _oKind), ("user" .=) <$> _oUser,
+                  ("id" .=) <$> _oId, ("type" .=) <$> _oType,
+                  ("zoneContext" .=) <$> _oZoneContext,
+                  ("dnsKeyContext" .=) <$> _oDNSKeyContext])
+
+-- | Parameters for DnsKey key generation. Used for generating initial keys
+-- for a new ManagedZone and as default when adding a new DnsKey.
+--
+-- /See:/ 'dnsKeySpec' smart constructor.
+data DNSKeySpec = DNSKeySpec'
+    { _dksKeyType   :: !(Maybe DNSKeySpecKeyType)
+    , _dksKind      :: !Text
+    , _dksAlgorithm :: !(Maybe DNSKeySpecAlgorithm)
+    , _dksKeyLength :: !(Maybe (Textual Word32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSKeySpec' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dksKeyType'
+--
+-- * 'dksKind'
+--
+-- * 'dksAlgorithm'
+--
+-- * 'dksKeyLength'
+dnsKeySpec
+    :: DNSKeySpec
+dnsKeySpec =
+    DNSKeySpec'
+    { _dksKeyType = Nothing
+    , _dksKind = "dns#dnsKeySpec"
+    , _dksAlgorithm = Nothing
+    , _dksKeyLength = Nothing
+    }
+
+-- | One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING
+-- have the Secure Entry Point flag set and, when active, will be used to
+-- sign only resource record sets of type DNSKEY. Otherwise, the Secure
+-- Entry Point flag will be cleared and this key will be used to sign only
+-- resource record sets of other types.
+dksKeyType :: Lens' DNSKeySpec (Maybe DNSKeySpecKeyType)
+dksKeyType
+  = lens _dksKeyType (\ s a -> s{_dksKeyType = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"dns#dnsKeySpec\".
+dksKind :: Lens' DNSKeySpec Text
+dksKind = lens _dksKind (\ s a -> s{_dksKind = a})
+
+-- | String mnemonic specifying the DNSSEC algorithm of this key.
+dksAlgorithm :: Lens' DNSKeySpec (Maybe DNSKeySpecAlgorithm)
+dksAlgorithm
+  = lens _dksAlgorithm (\ s a -> s{_dksAlgorithm = a})
+
+-- | Length of the keys in bits.
+dksKeyLength :: Lens' DNSKeySpec (Maybe Word32)
+dksKeyLength
+  = lens _dksKeyLength (\ s a -> s{_dksKeyLength = a})
+      . mapping _Coerce
+
+instance FromJSON DNSKeySpec where
+        parseJSON
+          = withObject "DNSKeySpec"
+              (\ o ->
+                 DNSKeySpec' <$>
+                   (o .:? "keyType") <*>
+                     (o .:? "kind" .!= "dns#dnsKeySpec")
+                     <*> (o .:? "algorithm")
+                     <*> (o .:? "keyLength"))
+
+instance ToJSON DNSKeySpec where
+        toJSON DNSKeySpec'{..}
+          = object
+              (catMaybes
+                 [("keyType" .=) <$> _dksKeyType,
+                  Just ("kind" .= _dksKind),
+                  ("algorithm" .=) <$> _dksAlgorithm,
+                  ("keyLength" .=) <$> _dksKeyLength])
+
 -- | An atomic update to a collection of ResourceRecordSets.
 --
 -- /See:/ 'change' smart constructor.
@@ -170,6 +533,7 @@
     , _cKind      :: !Text
     , _cDeletions :: !(Maybe [ResourceRecordSet])
     , _cId        :: !(Maybe Text)
+    , _cIsServing :: !(Maybe Bool)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'Change' with the minimum fields required to make a request.
@@ -187,6 +551,8 @@
 -- * 'cDeletions'
 --
 -- * 'cId'
+--
+-- * 'cIsServing'
 change
     :: Change
 change =
@@ -197,6 +563,7 @@
     , _cKind = "dns#change"
     , _cDeletions = Nothing
     , _cId = Nothing
+    , _cIsServing = Nothing
     }
 
 -- | Status of the operation (output only).
@@ -232,6 +599,11 @@
 cId :: Lens' Change (Maybe Text)
 cId = lens _cId (\ s a -> s{_cId = a})
 
+-- | If the DNS queries for the zone will be served.
+cIsServing :: Lens' Change (Maybe Bool)
+cIsServing
+  = lens _cIsServing (\ s a -> s{_cIsServing = a})
+
 instance FromJSON Change where
         parseJSON
           = withObject "Change"
@@ -241,7 +613,8 @@
                      <*> (o .:? "startTime")
                      <*> (o .:? "kind" .!= "dns#change")
                      <*> (o .:? "deletions" .!= mempty)
-                     <*> (o .:? "id"))
+                     <*> (o .:? "id")
+                     <*> (o .:? "isServing"))
 
 instance ToJSON Change where
         toJSON Change'{..}
@@ -251,14 +624,348 @@
                   ("additions" .=) <$> _cAdditions,
                   ("startTime" .=) <$> _cStartTime,
                   Just ("kind" .= _cKind),
-                  ("deletions" .=) <$> _cDeletions,
-                  ("id" .=) <$> _cId])
+                  ("deletions" .=) <$> _cDeletions, ("id" .=) <$> _cId,
+                  ("isServing" .=) <$> _cIsServing])
 
+-- | A DNSSEC key pair.
 --
+-- /See:/ 'dnsKey' smart constructor.
+data DNSKey = DNSKey'
+    { _dkCreationTime :: !(Maybe Text)
+    , _dkKeyTag       :: !(Maybe (Textual Int32))
+    , _dkKind         :: !Text
+    , _dkDigests      :: !(Maybe [DNSKeyDigest])
+    , _dkPublicKey    :: !(Maybe Text)
+    , _dkAlgorithm    :: !(Maybe DNSKeyAlgorithm)
+    , _dkId           :: !(Maybe Text)
+    , _dkType         :: !(Maybe DNSKeyType)
+    , _dkKeyLength    :: !(Maybe (Textual Word32))
+    , _dkIsActive     :: !(Maybe Bool)
+    , _dkDescription  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dkCreationTime'
+--
+-- * 'dkKeyTag'
+--
+-- * 'dkKind'
+--
+-- * 'dkDigests'
+--
+-- * 'dkPublicKey'
+--
+-- * 'dkAlgorithm'
+--
+-- * 'dkId'
+--
+-- * 'dkType'
+--
+-- * 'dkKeyLength'
+--
+-- * 'dkIsActive'
+--
+-- * 'dkDescription'
+dnsKey
+    :: DNSKey
+dnsKey =
+    DNSKey'
+    { _dkCreationTime = Nothing
+    , _dkKeyTag = Nothing
+    , _dkKind = "dns#dnsKey"
+    , _dkDigests = Nothing
+    , _dkPublicKey = Nothing
+    , _dkAlgorithm = Nothing
+    , _dkId = Nothing
+    , _dkType = Nothing
+    , _dkKeyLength = Nothing
+    , _dkIsActive = Nothing
+    , _dkDescription = Nothing
+    }
+
+-- | The time that this resource was created in the control plane. This is in
+-- RFC3339 text format. Output only.
+dkCreationTime :: Lens' DNSKey (Maybe Text)
+dkCreationTime
+  = lens _dkCreationTime
+      (\ s a -> s{_dkCreationTime = a})
+
+-- | The key tag is a non-cryptographic hash of the a DNSKEY resource record
+-- associated with this DnsKey. The key tag can be used to identify a
+-- DNSKEY more quickly (but it is not a unique identifier). In particular,
+-- the key tag is used in a parent zone\'s DS record to point at the DNSKEY
+-- in this child ManagedZone. The key tag is a number in the range [0,
+-- 65535] and the algorithm to calculate it is specified in RFC4034
+-- Appendix B. Output only.
+dkKeyTag :: Lens' DNSKey (Maybe Int32)
+dkKeyTag
+  = lens _dkKeyTag (\ s a -> s{_dkKeyTag = a}) .
+      mapping _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"dns#dnsKey\".
+dkKind :: Lens' DNSKey Text
+dkKind = lens _dkKind (\ s a -> s{_dkKind = a})
+
+-- | Cryptographic hashes of the DNSKEY resource record associated with this
+-- DnsKey. These digests are needed to construct a DS record that points at
+-- this DNS key. Output only.
+dkDigests :: Lens' DNSKey [DNSKeyDigest]
+dkDigests
+  = lens _dkDigests (\ s a -> s{_dkDigests = a}) .
+      _Default
+      . _Coerce
+
+-- | Base64 encoded public half of this key. Output only.
+dkPublicKey :: Lens' DNSKey (Maybe Text)
+dkPublicKey
+  = lens _dkPublicKey (\ s a -> s{_dkPublicKey = a})
+
+-- | String mnemonic specifying the DNSSEC algorithm of this key. Immutable
+-- after creation time.
+dkAlgorithm :: Lens' DNSKey (Maybe DNSKeyAlgorithm)
+dkAlgorithm
+  = lens _dkAlgorithm (\ s a -> s{_dkAlgorithm = a})
+
+-- | Unique identifier for the resource; defined by the server (output only).
+dkId :: Lens' DNSKey (Maybe Text)
+dkId = lens _dkId (\ s a -> s{_dkId = a})
+
+-- | One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING
+-- have the Secure Entry Point flag set and, when active, will be used to
+-- sign only resource record sets of type DNSKEY. Otherwise, the Secure
+-- Entry Point flag will be cleared and this key will be used to sign only
+-- resource record sets of other types. Immutable after creation time.
+dkType :: Lens' DNSKey (Maybe DNSKeyType)
+dkType = lens _dkType (\ s a -> s{_dkType = a})
+
+-- | Length of the key in bits. Specified at creation time then immutable.
+dkKeyLength :: Lens' DNSKey (Maybe Word32)
+dkKeyLength
+  = lens _dkKeyLength (\ s a -> s{_dkKeyLength = a}) .
+      mapping _Coerce
+
+-- | Active keys will be used to sign subsequent changes to the ManagedZone.
+-- Inactive keys will still be present as DNSKEY Resource Records for the
+-- use of resolvers validating existing signatures.
+dkIsActive :: Lens' DNSKey (Maybe Bool)
+dkIsActive
+  = lens _dkIsActive (\ s a -> s{_dkIsActive = a})
+
+-- | A mutable string of at most 1024 characters associated with this
+-- resource for the user\'s convenience. Has no effect on the resource\'s
+-- function.
+dkDescription :: Lens' DNSKey (Maybe Text)
+dkDescription
+  = lens _dkDescription
+      (\ s a -> s{_dkDescription = a})
+
+instance FromJSON DNSKey where
+        parseJSON
+          = withObject "DNSKey"
+              (\ o ->
+                 DNSKey' <$>
+                   (o .:? "creationTime") <*> (o .:? "keyTag") <*>
+                     (o .:? "kind" .!= "dns#dnsKey")
+                     <*> (o .:? "digests" .!= mempty)
+                     <*> (o .:? "publicKey")
+                     <*> (o .:? "algorithm")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type")
+                     <*> (o .:? "keyLength")
+                     <*> (o .:? "isActive")
+                     <*> (o .:? "description"))
+
+instance ToJSON DNSKey where
+        toJSON DNSKey'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _dkCreationTime,
+                  ("keyTag" .=) <$> _dkKeyTag,
+                  Just ("kind" .= _dkKind),
+                  ("digests" .=) <$> _dkDigests,
+                  ("publicKey" .=) <$> _dkPublicKey,
+                  ("algorithm" .=) <$> _dkAlgorithm,
+                  ("id" .=) <$> _dkId, ("type" .=) <$> _dkType,
+                  ("keyLength" .=) <$> _dkKeyLength,
+                  ("isActive" .=) <$> _dkIsActive,
+                  ("description" .=) <$> _dkDescription])
+
+--
+-- /See:/ 'operationManagedZoneContext' smart constructor.
+data OperationManagedZoneContext = OperationManagedZoneContext'
+    { _omzcOldValue :: !(Maybe ManagedZone)
+    , _omzcNewValue :: !(Maybe ManagedZone)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationManagedZoneContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omzcOldValue'
+--
+-- * 'omzcNewValue'
+operationManagedZoneContext
+    :: OperationManagedZoneContext
+operationManagedZoneContext =
+    OperationManagedZoneContext'
+    { _omzcOldValue = Nothing
+    , _omzcNewValue = Nothing
+    }
+
+-- | The pre-operation ManagedZone resource.
+omzcOldValue :: Lens' OperationManagedZoneContext (Maybe ManagedZone)
+omzcOldValue
+  = lens _omzcOldValue (\ s a -> s{_omzcOldValue = a})
+
+-- | The post-operation ManagedZone resource.
+omzcNewValue :: Lens' OperationManagedZoneContext (Maybe ManagedZone)
+omzcNewValue
+  = lens _omzcNewValue (\ s a -> s{_omzcNewValue = a})
+
+instance FromJSON OperationManagedZoneContext where
+        parseJSON
+          = withObject "OperationManagedZoneContext"
+              (\ o ->
+                 OperationManagedZoneContext' <$>
+                   (o .:? "oldValue") <*> (o .:? "newValue"))
+
+instance ToJSON OperationManagedZoneContext where
+        toJSON OperationManagedZoneContext'{..}
+          = object
+              (catMaybes
+                 [("oldValue" .=) <$> _omzcOldValue,
+                  ("newValue" .=) <$> _omzcNewValue])
+
+-- | Elements common to every response.
+--
+-- /See:/ 'responseHeader' smart constructor.
+newtype ResponseHeader = ResponseHeader'
+    { _rhOperationId :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResponseHeader' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rhOperationId'
+responseHeader
+    :: ResponseHeader
+responseHeader =
+    ResponseHeader'
+    { _rhOperationId = Nothing
+    }
+
+-- | For mutating operation requests that completed successfully. This is the
+-- client_operation_id if the client specified it, otherwise it is
+-- generated by the server (output only).
+rhOperationId :: Lens' ResponseHeader (Maybe Text)
+rhOperationId
+  = lens _rhOperationId
+      (\ s a -> s{_rhOperationId = a})
+
+instance FromJSON ResponseHeader where
+        parseJSON
+          = withObject "ResponseHeader"
+              (\ o -> ResponseHeader' <$> (o .:? "operationId"))
+
+instance ToJSON ResponseHeader where
+        toJSON ResponseHeader'{..}
+          = object
+              (catMaybes [("operationId" .=) <$> _rhOperationId])
+
+--
+-- /See:/ 'managedZoneOperationsListResponse' smart constructor.
+data ManagedZoneOperationsListResponse = ManagedZoneOperationsListResponse'
+    { _mzolrNextPageToken :: !(Maybe Text)
+    , _mzolrKind          :: !Text
+    , _mzolrHeader        :: !(Maybe ResponseHeader)
+    , _mzolrOperations    :: !(Maybe [Operation])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZoneOperationsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzolrNextPageToken'
+--
+-- * 'mzolrKind'
+--
+-- * 'mzolrHeader'
+--
+-- * 'mzolrOperations'
+managedZoneOperationsListResponse
+    :: ManagedZoneOperationsListResponse
+managedZoneOperationsListResponse =
+    ManagedZoneOperationsListResponse'
+    { _mzolrNextPageToken = Nothing
+    , _mzolrKind = "dns#managedZoneOperationsListResponse"
+    , _mzolrHeader = Nothing
+    , _mzolrOperations = Nothing
+    }
+
+-- | The presence of this field indicates that there exist more results
+-- following your last page of results in pagination order. To fetch them,
+-- make another list request using this value as your page token. In this
+-- way you can retrieve the complete contents of even very large
+-- collections one page at a time. However, if the contents of the
+-- collection change between the first and last paginated list request, the
+-- set of all elements returned will be an inconsistent view of the
+-- collection. There is no way to retrieve a consistent snapshot of a
+-- collection larger than the maximum page size.
+mzolrNextPageToken :: Lens' ManagedZoneOperationsListResponse (Maybe Text)
+mzolrNextPageToken
+  = lens _mzolrNextPageToken
+      (\ s a -> s{_mzolrNextPageToken = a})
+
+-- | Type of resource.
+mzolrKind :: Lens' ManagedZoneOperationsListResponse Text
+mzolrKind
+  = lens _mzolrKind (\ s a -> s{_mzolrKind = a})
+
+mzolrHeader :: Lens' ManagedZoneOperationsListResponse (Maybe ResponseHeader)
+mzolrHeader
+  = lens _mzolrHeader (\ s a -> s{_mzolrHeader = a})
+
+-- | The operation resources.
+mzolrOperations :: Lens' ManagedZoneOperationsListResponse [Operation]
+mzolrOperations
+  = lens _mzolrOperations
+      (\ s a -> s{_mzolrOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ManagedZoneOperationsListResponse
+         where
+        parseJSON
+          = withObject "ManagedZoneOperationsListResponse"
+              (\ o ->
+                 ManagedZoneOperationsListResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "dns#managedZoneOperationsListResponse")
+                     <*> (o .:? "header")
+                     <*> (o .:? "operations" .!= mempty))
+
+instance ToJSON ManagedZoneOperationsListResponse
+         where
+        toJSON ManagedZoneOperationsListResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _mzolrNextPageToken,
+                  Just ("kind" .= _mzolrKind),
+                  ("header" .=) <$> _mzolrHeader,
+                  ("operations" .=) <$> _mzolrOperations])
+
+--
 -- /See:/ 'resourceRecordSetsListResponse' smart constructor.
 data ResourceRecordSetsListResponse = ResourceRecordSetsListResponse'
     { _rrslrNextPageToken :: !(Maybe Text)
     , _rrslrKind          :: !Text
+    , _rrslrHeader        :: !(Maybe ResponseHeader)
     , _rrslrRrSets        :: !(Maybe [ResourceRecordSet])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -270,6 +977,8 @@
 --
 -- * 'rrslrKind'
 --
+-- * 'rrslrHeader'
+--
 -- * 'rrslrRrSets'
 resourceRecordSetsListResponse
     :: ResourceRecordSetsListResponse
@@ -277,6 +986,7 @@
     ResourceRecordSetsListResponse'
     { _rrslrNextPageToken = Nothing
     , _rrslrKind = "dns#resourceRecordSetsListResponse"
+    , _rrslrHeader = Nothing
     , _rrslrRrSets = Nothing
     }
 
@@ -299,6 +1009,10 @@
 rrslrKind
   = lens _rrslrKind (\ s a -> s{_rrslrKind = a})
 
+rrslrHeader :: Lens' ResourceRecordSetsListResponse (Maybe ResponseHeader)
+rrslrHeader
+  = lens _rrslrHeader (\ s a -> s{_rrslrHeader = a})
+
 -- | The resource record set resources.
 rrslrRrSets :: Lens' ResourceRecordSetsListResponse [ResourceRecordSet]
 rrslrRrSets
@@ -315,6 +1029,7 @@
                    (o .:? "nextPageToken") <*>
                      (o .:? "kind" .!=
                         "dns#resourceRecordSetsListResponse")
+                     <*> (o .:? "header")
                      <*> (o .:? "rrsets" .!= mempty))
 
 instance ToJSON ResourceRecordSetsListResponse where
@@ -323,17 +1038,95 @@
               (catMaybes
                  [("nextPageToken" .=) <$> _rrslrNextPageToken,
                   Just ("kind" .= _rrslrKind),
+                  ("header" .=) <$> _rrslrHeader,
                   ("rrsets" .=) <$> _rrslrRrSets])
 
+--
+-- /See:/ 'managedZoneDNSSecConfig' smart constructor.
+data ManagedZoneDNSSecConfig = ManagedZoneDNSSecConfig'
+    { _mzdscState           :: !(Maybe ManagedZoneDNSSecConfigState)
+    , _mzdscKind            :: !Text
+    , _mzdscDefaultKeySpecs :: !(Maybe [DNSKeySpec])
+    , _mzdscNonExistence    :: !(Maybe ManagedZoneDNSSecConfigNonExistence)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZoneDNSSecConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzdscState'
+--
+-- * 'mzdscKind'
+--
+-- * 'mzdscDefaultKeySpecs'
+--
+-- * 'mzdscNonExistence'
+managedZoneDNSSecConfig
+    :: ManagedZoneDNSSecConfig
+managedZoneDNSSecConfig =
+    ManagedZoneDNSSecConfig'
+    { _mzdscState = Nothing
+    , _mzdscKind = "dns#managedZoneDnsSecConfig"
+    , _mzdscDefaultKeySpecs = Nothing
+    , _mzdscNonExistence = Nothing
+    }
+
+-- | Specifies whether DNSSEC is enabled, and what mode it is in.
+mzdscState :: Lens' ManagedZoneDNSSecConfig (Maybe ManagedZoneDNSSecConfigState)
+mzdscState
+  = lens _mzdscState (\ s a -> s{_mzdscState = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"dns#managedZoneDnsSecConfig\".
+mzdscKind :: Lens' ManagedZoneDNSSecConfig Text
+mzdscKind
+  = lens _mzdscKind (\ s a -> s{_mzdscKind = a})
+
+-- | Specifies parameters that will be used for generating initial DnsKeys
+-- for this ManagedZone. Output only while state is not OFF.
+mzdscDefaultKeySpecs :: Lens' ManagedZoneDNSSecConfig [DNSKeySpec]
+mzdscDefaultKeySpecs
+  = lens _mzdscDefaultKeySpecs
+      (\ s a -> s{_mzdscDefaultKeySpecs = a})
+      . _Default
+      . _Coerce
+
+-- | Specifies the mechanism used to provide authenticated
+-- denial-of-existence responses. Output only while state is not OFF.
+mzdscNonExistence :: Lens' ManagedZoneDNSSecConfig (Maybe ManagedZoneDNSSecConfigNonExistence)
+mzdscNonExistence
+  = lens _mzdscNonExistence
+      (\ s a -> s{_mzdscNonExistence = a})
+
+instance FromJSON ManagedZoneDNSSecConfig where
+        parseJSON
+          = withObject "ManagedZoneDNSSecConfig"
+              (\ o ->
+                 ManagedZoneDNSSecConfig' <$>
+                   (o .:? "state") <*>
+                     (o .:? "kind" .!= "dns#managedZoneDnsSecConfig")
+                     <*> (o .:? "defaultKeySpecs" .!= mempty)
+                     <*> (o .:? "nonExistence"))
+
+instance ToJSON ManagedZoneDNSSecConfig where
+        toJSON ManagedZoneDNSSecConfig'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _mzdscState,
+                  Just ("kind" .= _mzdscKind),
+                  ("defaultKeySpecs" .=) <$> _mzdscDefaultKeySpecs,
+                  ("nonExistence" .=) <$> _mzdscNonExistence])
+
 -- | A unit of data that will be returned by the DNS servers.
 --
 -- /See:/ 'resourceRecordSet' smart constructor.
 data ResourceRecordSet = ResourceRecordSet'
-    { _rrsTtl     :: !(Maybe (Textual Int32))
-    , _rrsKind    :: !Text
-    , _rrsName    :: !(Maybe Text)
-    , _rrsType    :: !(Maybe Text)
-    , _rrsRrDatas :: !(Maybe [Text])
+    { _rrsTtl              :: !(Maybe (Textual Int32))
+    , _rrsKind             :: !Text
+    , _rrsSignatureRrDatas :: !(Maybe [Text])
+    , _rrsName             :: !(Maybe Text)
+    , _rrsType             :: !(Maybe Text)
+    , _rrsRrDatas          :: !(Maybe [Text])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ResourceRecordSet' with the minimum fields required to make a request.
@@ -344,6 +1137,8 @@
 --
 -- * 'rrsKind'
 --
+-- * 'rrsSignatureRrDatas'
+--
 -- * 'rrsName'
 --
 -- * 'rrsType'
@@ -355,6 +1150,7 @@
     ResourceRecordSet'
     { _rrsTtl = Nothing
     , _rrsKind = "dns#resourceRecordSet"
+    , _rrsSignatureRrDatas = Nothing
     , _rrsName = Nothing
     , _rrsType = Nothing
     , _rrsRrDatas = Nothing
@@ -372,6 +1168,14 @@
 rrsKind :: Lens' ResourceRecordSet Text
 rrsKind = lens _rrsKind (\ s a -> s{_rrsKind = a})
 
+-- | As defined in RFC 4034 (section 3.2).
+rrsSignatureRrDatas :: Lens' ResourceRecordSet [Text]
+rrsSignatureRrDatas
+  = lens _rrsSignatureRrDatas
+      (\ s a -> s{_rrsSignatureRrDatas = a})
+      . _Default
+      . _Coerce
+
 -- | For example, www.example.com.
 rrsName :: Lens' ResourceRecordSet (Maybe Text)
 rrsName = lens _rrsName (\ s a -> s{_rrsName = a})
@@ -395,6 +1199,7 @@
                  ResourceRecordSet' <$>
                    (o .:? "ttl") <*>
                      (o .:? "kind" .!= "dns#resourceRecordSet")
+                     <*> (o .:? "signatureRrdatas" .!= mempty)
                      <*> (o .:? "name")
                      <*> (o .:? "type")
                      <*> (o .:? "rrdatas" .!= mempty))
@@ -404,6 +1209,7 @@
           = object
               (catMaybes
                  [("ttl" .=) <$> _rrsTtl, Just ("kind" .= _rrsKind),
+                  ("signatureRrdatas" .=) <$> _rrsSignatureRrDatas,
                   ("name" .=) <$> _rrsName, ("type" .=) <$> _rrsType,
                   ("rrdatas" .=) <$> _rrsRrDatas])
 
@@ -420,6 +1226,7 @@
     , _mzId            :: !(Maybe (Textual Word64))
     , _mzDNSName       :: !(Maybe Text)
     , _mzDescription   :: !(Maybe Text)
+    , _mzDNSsecConfig  :: !(Maybe ManagedZoneDNSSecConfig)
     , _mzNameServers   :: !(Maybe [Text])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -441,6 +1248,8 @@
 --
 -- * 'mzDescription'
 --
+-- * 'mzDNSsecConfig'
+--
 -- * 'mzNameServers'
 managedZone
     :: ManagedZone
@@ -453,6 +1262,7 @@
     , _mzId = Nothing
     , _mzDNSName = Nothing
     , _mzDescription = Nothing
+    , _mzDNSsecConfig = Nothing
     , _mzNameServers = Nothing
     }
 
@@ -477,7 +1287,7 @@
       (\ s a -> s{_mzNameServerSet = a})
 
 -- | User assigned name for this resource. Must be unique within the project.
--- The name must be 1-32 characters long, must begin with a letter, end
+-- The name must be 1-63 characters long, must begin with a letter, end
 -- with a letter or digit, and only contain lowercase letters, digits or
 -- dashes.
 mzName :: Lens' ManagedZone (Maybe Text)
@@ -502,6 +1312,12 @@
   = lens _mzDescription
       (\ s a -> s{_mzDescription = a})
 
+-- | DNSSEC configuration.
+mzDNSsecConfig :: Lens' ManagedZone (Maybe ManagedZoneDNSSecConfig)
+mzDNSsecConfig
+  = lens _mzDNSsecConfig
+      (\ s a -> s{_mzDNSsecConfig = a})
+
 -- | Delegate your managed_zone to these virtual name servers; defined by the
 -- server (output only)
 mzNameServers :: Lens' ManagedZone [Text]
@@ -523,6 +1339,7 @@
                      <*> (o .:? "id")
                      <*> (o .:? "dnsName")
                      <*> (o .:? "description")
+                     <*> (o .:? "dnssecConfig")
                      <*> (o .:? "nameServers" .!= mempty))
 
 instance ToJSON ManagedZone where
@@ -535,6 +1352,7 @@
                   ("name" .=) <$> _mzName, ("id" .=) <$> _mzId,
                   ("dnsName" .=) <$> _mzDNSName,
                   ("description" .=) <$> _mzDescription,
+                  ("dnssecConfig" .=) <$> _mzDNSsecConfig,
                   ("nameServers" .=) <$> _mzNameServers])
 
 -- | Limits associated with a Project.
@@ -542,12 +1360,14 @@
 -- /See:/ 'quota' smart constructor.
 data Quota = Quota'
     { _qRrSetDeletionsPerChange  :: !(Maybe (Textual Int32))
+    , _qWhiteListedKeySpecs      :: !(Maybe [DNSKeySpec])
     , _qRrSetsPerManagedZone     :: !(Maybe (Textual Int32))
     , _qKind                     :: !Text
     , _qResourceRecordsPerRrSet  :: !(Maybe (Textual Int32))
     , _qRrSetAdditionsPerChange  :: !(Maybe (Textual Int32))
     , _qManagedZones             :: !(Maybe (Textual Int32))
     , _qTotalRrDataSizePerChange :: !(Maybe (Textual Int32))
+    , _qDNSKeysPerManagedZone    :: !(Maybe (Textual Int32))
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'Quota' with the minimum fields required to make a request.
@@ -556,6 +1376,8 @@
 --
 -- * 'qRrSetDeletionsPerChange'
 --
+-- * 'qWhiteListedKeySpecs'
+--
 -- * 'qRrSetsPerManagedZone'
 --
 -- * 'qKind'
@@ -567,17 +1389,21 @@
 -- * 'qManagedZones'
 --
 -- * 'qTotalRrDataSizePerChange'
+--
+-- * 'qDNSKeysPerManagedZone'
 quota
     :: Quota
 quota =
     Quota'
     { _qRrSetDeletionsPerChange = Nothing
+    , _qWhiteListedKeySpecs = Nothing
     , _qRrSetsPerManagedZone = Nothing
     , _qKind = "dns#quota"
     , _qResourceRecordsPerRrSet = Nothing
     , _qRrSetAdditionsPerChange = Nothing
     , _qManagedZones = Nothing
     , _qTotalRrDataSizePerChange = Nothing
+    , _qDNSKeysPerManagedZone = Nothing
     }
 
 -- | Maximum allowed number of ResourceRecordSets to delete per
@@ -588,6 +1414,14 @@
       (\ s a -> s{_qRrSetDeletionsPerChange = a})
       . mapping _Coerce
 
+-- | DNSSEC algorithm and key length types that can be used for DnsKeys.
+qWhiteListedKeySpecs :: Lens' Quota [DNSKeySpec]
+qWhiteListedKeySpecs
+  = lens _qWhiteListedKeySpecs
+      (\ s a -> s{_qWhiteListedKeySpecs = a})
+      . _Default
+      . _Coerce
+
 -- | Maximum allowed number of ResourceRecordSets per zone in the project.
 qRrSetsPerManagedZone :: Lens' Quota (Maybe Int32)
 qRrSetsPerManagedZone
@@ -630,18 +1464,27 @@
       (\ s a -> s{_qTotalRrDataSizePerChange = a})
       . mapping _Coerce
 
+-- | Maximum allowed number of DnsKeys per ManagedZone.
+qDNSKeysPerManagedZone :: Lens' Quota (Maybe Int32)
+qDNSKeysPerManagedZone
+  = lens _qDNSKeysPerManagedZone
+      (\ s a -> s{_qDNSKeysPerManagedZone = a})
+      . mapping _Coerce
+
 instance FromJSON Quota where
         parseJSON
           = withObject "Quota"
               (\ o ->
                  Quota' <$>
                    (o .:? "rrsetDeletionsPerChange") <*>
-                     (o .:? "rrsetsPerManagedZone")
+                     (o .:? "whitelistedKeySpecs" .!= mempty)
+                     <*> (o .:? "rrsetsPerManagedZone")
                      <*> (o .:? "kind" .!= "dns#quota")
                      <*> (o .:? "resourceRecordsPerRrset")
                      <*> (o .:? "rrsetAdditionsPerChange")
                      <*> (o .:? "managedZones")
-                     <*> (o .:? "totalRrdataSizePerChange"))
+                     <*> (o .:? "totalRrdataSizePerChange")
+                     <*> (o .:? "dnsKeysPerManagedZone"))
 
 instance ToJSON Quota where
         toJSON Quota'{..}
@@ -649,6 +1492,7 @@
               (catMaybes
                  [("rrsetDeletionsPerChange" .=) <$>
                     _qRrSetDeletionsPerChange,
+                  ("whitelistedKeySpecs" .=) <$> _qWhiteListedKeySpecs,
                   ("rrsetsPerManagedZone" .=) <$>
                     _qRrSetsPerManagedZone,
                   Just ("kind" .= _qKind),
@@ -658,13 +1502,62 @@
                     _qRrSetAdditionsPerChange,
                   ("managedZones" .=) <$> _qManagedZones,
                   ("totalRrdataSizePerChange" .=) <$>
-                    _qTotalRrDataSizePerChange])
+                    _qTotalRrDataSizePerChange,
+                  ("dnsKeysPerManagedZone" .=) <$>
+                    _qDNSKeysPerManagedZone])
 
 --
+-- /See:/ 'dnsKeyDigest' smart constructor.
+data DNSKeyDigest = DNSKeyDigest'
+    { _dkdDigest :: !(Maybe Text)
+    , _dkdType   :: !(Maybe DNSKeyDigestType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSKeyDigest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dkdDigest'
+--
+-- * 'dkdType'
+dnsKeyDigest
+    :: DNSKeyDigest
+dnsKeyDigest =
+    DNSKeyDigest'
+    { _dkdDigest = Nothing
+    , _dkdType = Nothing
+    }
+
+-- | The base-16 encoded bytes of this digest. Suitable for use in a DS
+-- resource record.
+dkdDigest :: Lens' DNSKeyDigest (Maybe Text)
+dkdDigest
+  = lens _dkdDigest (\ s a -> s{_dkdDigest = a})
+
+-- | Specifies the algorithm used to calculate this digest.
+dkdType :: Lens' DNSKeyDigest (Maybe DNSKeyDigestType)
+dkdType = lens _dkdType (\ s a -> s{_dkdType = a})
+
+instance FromJSON DNSKeyDigest where
+        parseJSON
+          = withObject "DNSKeyDigest"
+              (\ o ->
+                 DNSKeyDigest' <$>
+                   (o .:? "digest") <*> (o .:? "type"))
+
+instance ToJSON DNSKeyDigest where
+        toJSON DNSKeyDigest'{..}
+          = object
+              (catMaybes
+                 [("digest" .=) <$> _dkdDigest,
+                  ("type" .=) <$> _dkdType])
+
+--
 -- /See:/ 'managedZonesListResponse' smart constructor.
 data ManagedZonesListResponse = ManagedZonesListResponse'
     { _mzlrNextPageToken :: !(Maybe Text)
     , _mzlrKind          :: !Text
+    , _mzlrHeader        :: !(Maybe ResponseHeader)
     , _mzlrManagedZones  :: !(Maybe [ManagedZone])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -676,6 +1569,8 @@
 --
 -- * 'mzlrKind'
 --
+-- * 'mzlrHeader'
+--
 -- * 'mzlrManagedZones'
 managedZonesListResponse
     :: ManagedZonesListResponse
@@ -683,6 +1578,7 @@
     ManagedZonesListResponse'
     { _mzlrNextPageToken = Nothing
     , _mzlrKind = "dns#managedZonesListResponse"
+    , _mzlrHeader = Nothing
     , _mzlrManagedZones = Nothing
     }
 
@@ -704,6 +1600,10 @@
 mzlrKind :: Lens' ManagedZonesListResponse Text
 mzlrKind = lens _mzlrKind (\ s a -> s{_mzlrKind = a})
 
+mzlrHeader :: Lens' ManagedZonesListResponse (Maybe ResponseHeader)
+mzlrHeader
+  = lens _mzlrHeader (\ s a -> s{_mzlrHeader = a})
+
 -- | The managed zone resources.
 mzlrManagedZones :: Lens' ManagedZonesListResponse [ManagedZone]
 mzlrManagedZones
@@ -719,6 +1619,7 @@
                  ManagedZonesListResponse' <$>
                    (o .:? "nextPageToken") <*>
                      (o .:? "kind" .!= "dns#managedZonesListResponse")
+                     <*> (o .:? "header")
                      <*> (o .:? "managedZones" .!= mempty))
 
 instance ToJSON ManagedZonesListResponse where
@@ -727,4 +1628,5 @@
               (catMaybes
                  [("nextPageToken" .=) <$> _mzlrNextPageToken,
                   Just ("kind" .= _mzlrKind),
+                  ("header" .=) <$> _mzlrHeader,
                   ("managedZones" .=) <$> _mzlrManagedZones])
diff --git a/gen/Network/Google/DNS/Types/Sum.hs b/gen/Network/Google/DNS/Types/Sum.hs
--- a/gen/Network/Google/DNS/Types/Sum.hs
+++ b/gen/Network/Google/DNS/Types/Sum.hs
@@ -18,22 +18,120 @@
 
 import           Network.Google.Prelude
 
+-- | String mnemonic specifying the DNSSEC algorithm of this key.
+data DNSKeySpecAlgorithm
+    = ECDSAP256SHA256
+      -- ^ @ECDSAP256SHA256@
+    | ECDSAP384SHA384
+      -- ^ @ECDSAP384SHA384@
+    | RSASHA1
+      -- ^ @RSASHA1@
+    | RSASHA256
+      -- ^ @RSASHA256@
+    | RSASHA512
+      -- ^ @RSASHA512@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DNSKeySpecAlgorithm
+
+instance FromHttpApiData DNSKeySpecAlgorithm where
+    parseQueryParam = \case
+        "ECDSAP256SHA256" -> Right ECDSAP256SHA256
+        "ECDSAP384SHA384" -> Right ECDSAP384SHA384
+        "RSASHA1" -> Right RSASHA1
+        "RSASHA256" -> Right RSASHA256
+        "RSASHA512" -> Right RSASHA512
+        x -> Left ("Unable to parse DNSKeySpecAlgorithm from: " <> x)
+
+instance ToHttpApiData DNSKeySpecAlgorithm where
+    toQueryParam = \case
+        ECDSAP256SHA256 -> "ECDSAP256SHA256"
+        ECDSAP384SHA384 -> "ECDSAP384SHA384"
+        RSASHA1 -> "RSASHA1"
+        RSASHA256 -> "RSASHA256"
+        RSASHA512 -> "RSASHA512"
+
+instance FromJSON DNSKeySpecAlgorithm where
+    parseJSON = parseJSONText "DNSKeySpecAlgorithm"
+
+instance ToJSON DNSKeySpecAlgorithm where
+    toJSON = toJSONText
+
+-- | Specifies the mechanism used to provide authenticated
+-- denial-of-existence responses. Output only while state is not OFF.
+data ManagedZoneDNSSecConfigNonExistence
+    = Nsec
+      -- ^ @NSEC@
+    | NSEC3
+      -- ^ @NSEC3@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedZoneDNSSecConfigNonExistence
+
+instance FromHttpApiData ManagedZoneDNSSecConfigNonExistence where
+    parseQueryParam = \case
+        "NSEC" -> Right Nsec
+        "NSEC3" -> Right NSEC3
+        x -> Left ("Unable to parse ManagedZoneDNSSecConfigNonExistence from: " <> x)
+
+instance ToHttpApiData ManagedZoneDNSSecConfigNonExistence where
+    toQueryParam = \case
+        Nsec -> "NSEC"
+        NSEC3 -> "NSEC3"
+
+instance FromJSON ManagedZoneDNSSecConfigNonExistence where
+    parseJSON = parseJSONText "ManagedZoneDNSSecConfigNonExistence"
+
+instance ToJSON ManagedZoneDNSSecConfigNonExistence where
+    toJSON = toJSONText
+
+-- | Specifies whether DNSSEC is enabled, and what mode it is in.
+data ManagedZoneDNSSecConfigState
+    = Off
+      -- ^ @OFF@
+    | ON
+      -- ^ @ON@
+    | Transfer
+      -- ^ @TRANSFER@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedZoneDNSSecConfigState
+
+instance FromHttpApiData ManagedZoneDNSSecConfigState where
+    parseQueryParam = \case
+        "OFF" -> Right Off
+        "ON" -> Right ON
+        "TRANSFER" -> Right Transfer
+        x -> Left ("Unable to parse ManagedZoneDNSSecConfigState from: " <> x)
+
+instance ToHttpApiData ManagedZoneDNSSecConfigState where
+    toQueryParam = \case
+        Off -> "OFF"
+        ON -> "ON"
+        Transfer -> "TRANSFER"
+
+instance FromJSON ManagedZoneDNSSecConfigState where
+    parseJSON = parseJSONText "ManagedZoneDNSSecConfigState"
+
+instance ToJSON ManagedZoneDNSSecConfigState where
+    toJSON = toJSONText
+
 -- | Sorting criterion. The only supported value is change sequence.
 data ChangesListSortBy
     = ChangeSequence
-      -- ^ @changeSequence@
+      -- ^ @CHANGE_SEQUENCE@
       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable ChangesListSortBy
 
 instance FromHttpApiData ChangesListSortBy where
     parseQueryParam = \case
-        "changeSequence" -> Right ChangeSequence
+        "CHANGE_SEQUENCE" -> Right ChangeSequence
         x -> Left ("Unable to parse ChangesListSortBy from: " <> x)
 
 instance ToHttpApiData ChangesListSortBy where
     toQueryParam = \case
-        ChangeSequence -> "changeSequence"
+        ChangeSequence -> "CHANGE_SEQUENCE"
 
 instance FromJSON ChangesListSortBy where
     parseJSON = parseJSONText "ChangesListSortBy"
@@ -41,29 +139,217 @@
 instance ToJSON ChangesListSortBy where
     toJSON = toJSONText
 
--- | Status of the operation (output only).
-data ChangeStatus
+-- | Specifies the algorithm used to calculate this digest.
+data DNSKeyDigestType
+    = SHA1
+      -- ^ @SHA1@
+    | SHA256
+      -- ^ @SHA256@
+    | SHA384
+      -- ^ @SHA384@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DNSKeyDigestType
+
+instance FromHttpApiData DNSKeyDigestType where
+    parseQueryParam = \case
+        "SHA1" -> Right SHA1
+        "SHA256" -> Right SHA256
+        "SHA384" -> Right SHA384
+        x -> Left ("Unable to parse DNSKeyDigestType from: " <> x)
+
+instance ToHttpApiData DNSKeyDigestType where
+    toQueryParam = \case
+        SHA1 -> "SHA1"
+        SHA256 -> "SHA256"
+        SHA384 -> "SHA384"
+
+instance FromJSON DNSKeyDigestType where
+    parseJSON = parseJSONText "DNSKeyDigestType"
+
+instance ToJSON DNSKeyDigestType where
+    toJSON = toJSONText
+
+-- | Status of the operation. Can be one of the following: \"PENDING\" or
+-- \"DONE\" (output only).
+data OperationStatus
     = Done
-      -- ^ @done@
+      -- ^ @DONE@
     | Pending
-      -- ^ @pending@
+      -- ^ @PENDING@
       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
+instance Hashable OperationStatus
+
+instance FromHttpApiData OperationStatus where
+    parseQueryParam = \case
+        "DONE" -> Right Done
+        "PENDING" -> Right Pending
+        x -> Left ("Unable to parse OperationStatus from: " <> x)
+
+instance ToHttpApiData OperationStatus where
+    toQueryParam = \case
+        Done -> "DONE"
+        Pending -> "PENDING"
+
+instance FromJSON OperationStatus where
+    parseJSON = parseJSONText "OperationStatus"
+
+instance ToJSON OperationStatus where
+    toJSON = toJSONText
+
+-- | String mnemonic specifying the DNSSEC algorithm of this key. Immutable
+-- after creation time.
+data DNSKeyAlgorithm
+    = DKAECDSAP256SHA256
+      -- ^ @ECDSAP256SHA256@
+    | DKAECDSAP384SHA384
+      -- ^ @ECDSAP384SHA384@
+    | DKARSASHA1
+      -- ^ @RSASHA1@
+    | DKARSASHA256
+      -- ^ @RSASHA256@
+    | DKARSASHA512
+      -- ^ @RSASHA512@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DNSKeyAlgorithm
+
+instance FromHttpApiData DNSKeyAlgorithm where
+    parseQueryParam = \case
+        "ECDSAP256SHA256" -> Right DKAECDSAP256SHA256
+        "ECDSAP384SHA384" -> Right DKAECDSAP384SHA384
+        "RSASHA1" -> Right DKARSASHA1
+        "RSASHA256" -> Right DKARSASHA256
+        "RSASHA512" -> Right DKARSASHA512
+        x -> Left ("Unable to parse DNSKeyAlgorithm from: " <> x)
+
+instance ToHttpApiData DNSKeyAlgorithm where
+    toQueryParam = \case
+        DKAECDSAP256SHA256 -> "ECDSAP256SHA256"
+        DKAECDSAP384SHA384 -> "ECDSAP384SHA384"
+        DKARSASHA1 -> "RSASHA1"
+        DKARSASHA256 -> "RSASHA256"
+        DKARSASHA512 -> "RSASHA512"
+
+instance FromJSON DNSKeyAlgorithm where
+    parseJSON = parseJSONText "DNSKeyAlgorithm"
+
+instance ToJSON DNSKeyAlgorithm where
+    toJSON = toJSONText
+
+-- | One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING
+-- have the Secure Entry Point flag set and, when active, will be used to
+-- sign only resource record sets of type DNSKEY. Otherwise, the Secure
+-- Entry Point flag will be cleared and this key will be used to sign only
+-- resource record sets of other types.
+data DNSKeySpecKeyType
+    = KeySigning
+      -- ^ @KEY_SIGNING@
+    | ZoneSigning
+      -- ^ @ZONE_SIGNING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DNSKeySpecKeyType
+
+instance FromHttpApiData DNSKeySpecKeyType where
+    parseQueryParam = \case
+        "KEY_SIGNING" -> Right KeySigning
+        "ZONE_SIGNING" -> Right ZoneSigning
+        x -> Left ("Unable to parse DNSKeySpecKeyType from: " <> x)
+
+instance ToHttpApiData DNSKeySpecKeyType where
+    toQueryParam = \case
+        KeySigning -> "KEY_SIGNING"
+        ZoneSigning -> "ZONE_SIGNING"
+
+instance FromJSON DNSKeySpecKeyType where
+    parseJSON = parseJSONText "DNSKeySpecKeyType"
+
+instance ToJSON DNSKeySpecKeyType where
+    toJSON = toJSONText
+
+-- | Status of the operation (output only).
+data ChangeStatus
+    = CSDone
+      -- ^ @DONE@
+    | CSPending
+      -- ^ @PENDING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
 instance Hashable ChangeStatus
 
 instance FromHttpApiData ChangeStatus where
     parseQueryParam = \case
-        "done" -> Right Done
-        "pending" -> Right Pending
+        "DONE" -> Right CSDone
+        "PENDING" -> Right CSPending
         x -> Left ("Unable to parse ChangeStatus from: " <> x)
 
 instance ToHttpApiData ChangeStatus where
     toQueryParam = \case
-        Done -> "done"
-        Pending -> "pending"
+        CSDone -> "DONE"
+        CSPending -> "PENDING"
 
 instance FromJSON ChangeStatus where
     parseJSON = parseJSONText "ChangeStatus"
 
 instance ToJSON ChangeStatus where
+    toJSON = toJSONText
+
+-- | One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING
+-- have the Secure Entry Point flag set and, when active, will be used to
+-- sign only resource record sets of type DNSKEY. Otherwise, the Secure
+-- Entry Point flag will be cleared and this key will be used to sign only
+-- resource record sets of other types. Immutable after creation time.
+data DNSKeyType
+    = DKTKeySigning
+      -- ^ @KEY_SIGNING@
+    | DKTZoneSigning
+      -- ^ @ZONE_SIGNING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DNSKeyType
+
+instance FromHttpApiData DNSKeyType where
+    parseQueryParam = \case
+        "KEY_SIGNING" -> Right DKTKeySigning
+        "ZONE_SIGNING" -> Right DKTZoneSigning
+        x -> Left ("Unable to parse DNSKeyType from: " <> x)
+
+instance ToHttpApiData DNSKeyType where
+    toQueryParam = \case
+        DKTKeySigning -> "KEY_SIGNING"
+        DKTZoneSigning -> "ZONE_SIGNING"
+
+instance FromJSON DNSKeyType where
+    parseJSON = parseJSONText "DNSKeyType"
+
+instance ToJSON DNSKeyType where
+    toJSON = toJSONText
+
+-- | Sorting criterion. The only supported values are START_TIME and ID.
+data ManagedZoneOperationsListSortBy
+    = ID
+      -- ^ @ID@
+    | StartTime
+      -- ^ @START_TIME@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedZoneOperationsListSortBy
+
+instance FromHttpApiData ManagedZoneOperationsListSortBy where
+    parseQueryParam = \case
+        "ID" -> Right ID
+        "START_TIME" -> Right StartTime
+        x -> Left ("Unable to parse ManagedZoneOperationsListSortBy from: " <> x)
+
+instance ToHttpApiData ManagedZoneOperationsListSortBy where
+    toQueryParam = \case
+        ID -> "ID"
+        StartTime -> "START_TIME"
+
+instance FromJSON ManagedZoneOperationsListSortBy where
+    parseJSON = parseJSONText "ManagedZoneOperationsListSortBy"
+
+instance ToJSON ManagedZoneOperationsListSortBy where
     toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/DNS/Changes/Create.hs b/gen/Network/Google/Resource/DNS/Changes/Create.hs
--- a/gen/Network/Google/Resource/DNS/Changes/Create.hs
+++ b/gen/Network/Google/Resource/DNS/Changes/Create.hs
@@ -36,6 +36,7 @@
     , ccProject
     , ccPayload
     , ccManagedZone
+    , ccClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -45,22 +46,24 @@
 -- 'ChangesCreate' request conforms to.
 type ChangesCreateResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
                Capture "managedZone" Text :>
                  "changes" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Change :> Post '[JSON] Change
+                   QueryParam "clientOperationId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Change :> Post '[JSON] Change
 
 -- | Atomically update the ResourceRecordSet collection.
 --
 -- /See:/ 'changesCreate' smart constructor.
 data ChangesCreate = ChangesCreate'
-    { _ccProject     :: !Text
-    , _ccPayload     :: !Change
-    , _ccManagedZone :: !Text
+    { _ccProject           :: !Text
+    , _ccPayload           :: !Change
+    , _ccManagedZone       :: !Text
+    , _ccClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ChangesCreate' with the minimum fields required to make a request.
@@ -72,6 +75,8 @@
 -- * 'ccPayload'
 --
 -- * 'ccManagedZone'
+--
+-- * 'ccClientOperationId'
 changesCreate
     :: Text -- ^ 'ccProject'
     -> Change -- ^ 'ccPayload'
@@ -82,6 +87,7 @@
     { _ccProject = pCcProject_
     , _ccPayload = pCcPayload_
     , _ccManagedZone = pCcManagedZone_
+    , _ccClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -101,13 +107,22 @@
   = lens _ccManagedZone
       (\ s a -> s{_ccManagedZone = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+ccClientOperationId :: Lens' ChangesCreate (Maybe Text)
+ccClientOperationId
+  = lens _ccClientOperationId
+      (\ s a -> s{_ccClientOperationId = a})
+
 instance GoogleRequest ChangesCreate where
         type Rs ChangesCreate = Change
         type Scopes ChangesCreate =
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ChangesCreate'{..}
-          = go _ccProject _ccManagedZone (Just AltJSON)
+          = go _ccProject _ccManagedZone _ccClientOperationId
+              (Just AltJSON)
               _ccPayload
               dNSService
           where go
diff --git a/gen/Network/Google/Resource/DNS/Changes/Get.hs b/gen/Network/Google/Resource/DNS/Changes/Get.hs
--- a/gen/Network/Google/Resource/DNS/Changes/Get.hs
+++ b/gen/Network/Google/Resource/DNS/Changes/Get.hs
@@ -36,6 +36,7 @@
     , cgProject
     , cgChangeId
     , cgManagedZone
+    , cgClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -45,22 +46,24 @@
 -- 'ChangesGet' request conforms to.
 type ChangesGetResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
                Capture "managedZone" Text :>
                  "changes" :>
                    Capture "changeId" Text :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] Change
+                     QueryParam "clientOperationId" Text :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Change
 
 -- | Fetch the representation of an existing Change.
 --
 -- /See:/ 'changesGet' smart constructor.
 data ChangesGet = ChangesGet'
-    { _cgProject     :: !Text
-    , _cgChangeId    :: !Text
-    , _cgManagedZone :: !Text
+    { _cgProject           :: !Text
+    , _cgChangeId          :: !Text
+    , _cgManagedZone       :: !Text
+    , _cgClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ChangesGet' with the minimum fields required to make a request.
@@ -72,6 +75,8 @@
 -- * 'cgChangeId'
 --
 -- * 'cgManagedZone'
+--
+-- * 'cgClientOperationId'
 changesGet
     :: Text -- ^ 'cgProject'
     -> Text -- ^ 'cgChangeId'
@@ -82,6 +87,7 @@
     { _cgProject = pCgProject_
     , _cgChangeId = pCgChangeId_
     , _cgManagedZone = pCgManagedZone_
+    , _cgClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -102,6 +108,14 @@
   = lens _cgManagedZone
       (\ s a -> s{_cgManagedZone = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+cgClientOperationId :: Lens' ChangesGet (Maybe Text)
+cgClientOperationId
+  = lens _cgClientOperationId
+      (\ s a -> s{_cgClientOperationId = a})
+
 instance GoogleRequest ChangesGet where
         type Rs ChangesGet = Change
         type Scopes ChangesGet =
@@ -111,6 +125,7 @@
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ChangesGet'{..}
           = go _cgProject _cgManagedZone _cgChangeId
+              _cgClientOperationId
               (Just AltJSON)
               dNSService
           where go
diff --git a/gen/Network/Google/Resource/DNS/Changes/List.hs b/gen/Network/Google/Resource/DNS/Changes/List.hs
--- a/gen/Network/Google/Resource/DNS/Changes/List.hs
+++ b/gen/Network/Google/Resource/DNS/Changes/List.hs
@@ -48,7 +48,7 @@
 -- 'ChangesList' request conforms to.
 type ChangesListResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
diff --git a/gen/Network/Google/Resource/DNS/DNSkeys/Get.hs b/gen/Network/Google/Resource/DNS/DNSkeys/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/DNSkeys/Get.hs
@@ -0,0 +1,146 @@
+{-# 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.DNS.DNSkeys.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetch the representation of an existing DnsKey.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.dnskeys.get@.
+module Network.Google.Resource.DNS.DNSkeys.Get
+    (
+    -- * REST Resource
+      DNSkeysGetResource
+
+    -- * Creating a Request
+    , dnskeysGet
+    , DNSkeysGet
+
+    -- * Request Lenses
+    , dgProject
+    , dgDigestType
+    , dgDNSKeyId
+    , dgManagedZone
+    , dgClientOperationId
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.dnskeys.get@ method which the
+-- 'DNSkeysGet' request conforms to.
+type DNSkeysGetResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 "dnsKeys" :>
+                   Capture "dnsKeyId" Text :>
+                     QueryParam "digestType" Text :>
+                       QueryParam "clientOperationId" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] DNSKey
+
+-- | Fetch the representation of an existing DnsKey.
+--
+-- /See:/ 'dnskeysGet' smart constructor.
+data DNSkeysGet = DNSkeysGet'
+    { _dgProject           :: !Text
+    , _dgDigestType        :: !(Maybe Text)
+    , _dgDNSKeyId          :: !Text
+    , _dgManagedZone       :: !Text
+    , _dgClientOperationId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSkeysGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dgProject'
+--
+-- * 'dgDigestType'
+--
+-- * 'dgDNSKeyId'
+--
+-- * 'dgManagedZone'
+--
+-- * 'dgClientOperationId'
+dnskeysGet
+    :: Text -- ^ 'dgProject'
+    -> Text -- ^ 'dgDNSKeyId'
+    -> Text -- ^ 'dgManagedZone'
+    -> DNSkeysGet
+dnskeysGet pDgProject_ pDgDNSKeyId_ pDgManagedZone_ =
+    DNSkeysGet'
+    { _dgProject = pDgProject_
+    , _dgDigestType = Nothing
+    , _dgDNSKeyId = pDgDNSKeyId_
+    , _dgManagedZone = pDgManagedZone_
+    , _dgClientOperationId = Nothing
+    }
+
+-- | Identifies the project addressed by this request.
+dgProject :: Lens' DNSkeysGet Text
+dgProject
+  = lens _dgProject (\ s a -> s{_dgProject = a})
+
+-- | An optional comma-separated list of digest types to compute and display
+-- for key signing keys. If omitted, the recommended digest type will be
+-- computed and displayed.
+dgDigestType :: Lens' DNSkeysGet (Maybe Text)
+dgDigestType
+  = lens _dgDigestType (\ s a -> s{_dgDigestType = a})
+
+-- | The identifier of the requested DnsKey.
+dgDNSKeyId :: Lens' DNSkeysGet Text
+dgDNSKeyId
+  = lens _dgDNSKeyId (\ s a -> s{_dgDNSKeyId = a})
+
+-- | Identifies the managed zone addressed by this request. Can be the
+-- managed zone name or id.
+dgManagedZone :: Lens' DNSkeysGet Text
+dgManagedZone
+  = lens _dgManagedZone
+      (\ s a -> s{_dgManagedZone = a})
+
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+dgClientOperationId :: Lens' DNSkeysGet (Maybe Text)
+dgClientOperationId
+  = lens _dgClientOperationId
+      (\ s a -> s{_dgClientOperationId = a})
+
+instance GoogleRequest DNSkeysGet where
+        type Rs DNSkeysGet = DNSKey
+        type Scopes DNSkeysGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only",
+               "https://www.googleapis.com/auth/ndev.clouddns.readonly",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient DNSkeysGet'{..}
+          = go _dgProject _dgManagedZone _dgDNSKeyId
+              _dgDigestType
+              _dgClientOperationId
+              (Just AltJSON)
+              dNSService
+          where go
+                  = buildClient (Proxy :: Proxy DNSkeysGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/DNSkeys/List.hs b/gen/Network/Google/Resource/DNS/DNSkeys/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/DNSkeys/List.hs
@@ -0,0 +1,146 @@
+{-# 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.DNS.DNSkeys.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enumerate DnsKeys to a ResourceRecordSet collection.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.dnskeys.list@.
+module Network.Google.Resource.DNS.DNSkeys.List
+    (
+    -- * REST Resource
+      DNSkeysListResource
+
+    -- * Creating a Request
+    , dnskeysList
+    , DNSkeysList
+
+    -- * Request Lenses
+    , dlProject
+    , dlDigestType
+    , dlPageToken
+    , dlManagedZone
+    , dlMaxResults
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.dnskeys.list@ method which the
+-- 'DNSkeysList' request conforms to.
+type DNSkeysListResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 "dnsKeys" :>
+                   QueryParam "digestType" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] DNSKeysListResponse
+
+-- | Enumerate DnsKeys to a ResourceRecordSet collection.
+--
+-- /See:/ 'dnskeysList' smart constructor.
+data DNSkeysList = DNSkeysList'
+    { _dlProject     :: !Text
+    , _dlDigestType  :: !(Maybe Text)
+    , _dlPageToken   :: !(Maybe Text)
+    , _dlManagedZone :: !Text
+    , _dlMaxResults  :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DNSkeysList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlProject'
+--
+-- * 'dlDigestType'
+--
+-- * 'dlPageToken'
+--
+-- * 'dlManagedZone'
+--
+-- * 'dlMaxResults'
+dnskeysList
+    :: Text -- ^ 'dlProject'
+    -> Text -- ^ 'dlManagedZone'
+    -> DNSkeysList
+dnskeysList pDlProject_ pDlManagedZone_ =
+    DNSkeysList'
+    { _dlProject = pDlProject_
+    , _dlDigestType = Nothing
+    , _dlPageToken = Nothing
+    , _dlManagedZone = pDlManagedZone_
+    , _dlMaxResults = Nothing
+    }
+
+-- | Identifies the project addressed by this request.
+dlProject :: Lens' DNSkeysList Text
+dlProject
+  = lens _dlProject (\ s a -> s{_dlProject = a})
+
+-- | An optional comma-separated list of digest types to compute and display
+-- for key signing keys. If omitted, the recommended digest type will be
+-- computed and displayed.
+dlDigestType :: Lens' DNSkeysList (Maybe Text)
+dlDigestType
+  = lens _dlDigestType (\ s a -> s{_dlDigestType = a})
+
+-- | Optional. A tag returned by a previous list request that was truncated.
+-- Use this parameter to continue a previous list request.
+dlPageToken :: Lens' DNSkeysList (Maybe Text)
+dlPageToken
+  = lens _dlPageToken (\ s a -> s{_dlPageToken = a})
+
+-- | Identifies the managed zone addressed by this request. Can be the
+-- managed zone name or id.
+dlManagedZone :: Lens' DNSkeysList Text
+dlManagedZone
+  = lens _dlManagedZone
+      (\ s a -> s{_dlManagedZone = a})
+
+-- | Optional. Maximum number of results to be returned. If unspecified, the
+-- server will decide how many results to return.
+dlMaxResults :: Lens' DNSkeysList (Maybe Int32)
+dlMaxResults
+  = lens _dlMaxResults (\ s a -> s{_dlMaxResults = a})
+      . mapping _Coerce
+
+instance GoogleRequest DNSkeysList where
+        type Rs DNSkeysList = DNSKeysListResponse
+        type Scopes DNSkeysList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only",
+               "https://www.googleapis.com/auth/ndev.clouddns.readonly",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient DNSkeysList'{..}
+          = go _dlProject _dlManagedZone _dlDigestType
+              _dlPageToken
+              _dlMaxResults
+              (Just AltJSON)
+              dNSService
+          where go
+                  = buildClient (Proxy :: Proxy DNSkeysListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/ManagedZoneOperations/Get.hs b/gen/Network/Google/Resource/DNS/ManagedZoneOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/ManagedZoneOperations/Get.hs
@@ -0,0 +1,133 @@
+{-# 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.DNS.ManagedZoneOperations.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetch the representation of an existing Operation.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.managedZoneOperations.get@.
+module Network.Google.Resource.DNS.ManagedZoneOperations.Get
+    (
+    -- * REST Resource
+      ManagedZoneOperationsGetResource
+
+    -- * Creating a Request
+    , managedZoneOperationsGet
+    , ManagedZoneOperationsGet
+
+    -- * Request Lenses
+    , mzogProject
+    , mzogOperation
+    , mzogManagedZone
+    , mzogClientOperationId
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.managedZoneOperations.get@ method which the
+-- 'ManagedZoneOperationsGet' request conforms to.
+type ManagedZoneOperationsGetResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 "operations" :>
+                   Capture "operation" Text :>
+                     QueryParam "clientOperationId" Text :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Fetch the representation of an existing Operation.
+--
+-- /See:/ 'managedZoneOperationsGet' smart constructor.
+data ManagedZoneOperationsGet = ManagedZoneOperationsGet'
+    { _mzogProject           :: !Text
+    , _mzogOperation         :: !Text
+    , _mzogManagedZone       :: !Text
+    , _mzogClientOperationId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZoneOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzogProject'
+--
+-- * 'mzogOperation'
+--
+-- * 'mzogManagedZone'
+--
+-- * 'mzogClientOperationId'
+managedZoneOperationsGet
+    :: Text -- ^ 'mzogProject'
+    -> Text -- ^ 'mzogOperation'
+    -> Text -- ^ 'mzogManagedZone'
+    -> ManagedZoneOperationsGet
+managedZoneOperationsGet pMzogProject_ pMzogOperation_ pMzogManagedZone_ =
+    ManagedZoneOperationsGet'
+    { _mzogProject = pMzogProject_
+    , _mzogOperation = pMzogOperation_
+    , _mzogManagedZone = pMzogManagedZone_
+    , _mzogClientOperationId = Nothing
+    }
+
+-- | Identifies the project addressed by this request.
+mzogProject :: Lens' ManagedZoneOperationsGet Text
+mzogProject
+  = lens _mzogProject (\ s a -> s{_mzogProject = a})
+
+-- | Identifies the operation addressed by this request.
+mzogOperation :: Lens' ManagedZoneOperationsGet Text
+mzogOperation
+  = lens _mzogOperation
+      (\ s a -> s{_mzogOperation = a})
+
+-- | Identifies the managed zone addressed by this request.
+mzogManagedZone :: Lens' ManagedZoneOperationsGet Text
+mzogManagedZone
+  = lens _mzogManagedZone
+      (\ s a -> s{_mzogManagedZone = a})
+
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzogClientOperationId :: Lens' ManagedZoneOperationsGet (Maybe Text)
+mzogClientOperationId
+  = lens _mzogClientOperationId
+      (\ s a -> s{_mzogClientOperationId = a})
+
+instance GoogleRequest ManagedZoneOperationsGet where
+        type Rs ManagedZoneOperationsGet = Operation
+        type Scopes ManagedZoneOperationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only",
+               "https://www.googleapis.com/auth/ndev.clouddns.readonly",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient ManagedZoneOperationsGet'{..}
+          = go _mzogProject _mzogManagedZone _mzogOperation
+              _mzogClientOperationId
+              (Just AltJSON)
+              dNSService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagedZoneOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/ManagedZoneOperations/List.hs b/gen/Network/Google/Resource/DNS/ManagedZoneOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/ManagedZoneOperations/List.hs
@@ -0,0 +1,149 @@
+{-# 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.DNS.ManagedZoneOperations.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enumerate Operations for the given ManagedZone.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.managedZoneOperations.list@.
+module Network.Google.Resource.DNS.ManagedZoneOperations.List
+    (
+    -- * REST Resource
+      ManagedZoneOperationsListResource
+
+    -- * Creating a Request
+    , managedZoneOperationsList
+    , ManagedZoneOperationsList
+
+    -- * Request Lenses
+    , mzolProject
+    , mzolPageToken
+    , mzolManagedZone
+    , mzolMaxResults
+    , mzolSortBy
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.managedZoneOperations.list@ method which the
+-- 'ManagedZoneOperationsList' request conforms to.
+type ManagedZoneOperationsListResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 "operations" :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Int32) :>
+                       QueryParam "sortBy" ManagedZoneOperationsListSortBy
+                         :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ManagedZoneOperationsListResponse
+
+-- | Enumerate Operations for the given ManagedZone.
+--
+-- /See:/ 'managedZoneOperationsList' smart constructor.
+data ManagedZoneOperationsList = ManagedZoneOperationsList'
+    { _mzolProject     :: !Text
+    , _mzolPageToken   :: !(Maybe Text)
+    , _mzolManagedZone :: !Text
+    , _mzolMaxResults  :: !(Maybe (Textual Int32))
+    , _mzolSortBy      :: !ManagedZoneOperationsListSortBy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZoneOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzolProject'
+--
+-- * 'mzolPageToken'
+--
+-- * 'mzolManagedZone'
+--
+-- * 'mzolMaxResults'
+--
+-- * 'mzolSortBy'
+managedZoneOperationsList
+    :: Text -- ^ 'mzolProject'
+    -> Text -- ^ 'mzolManagedZone'
+    -> ManagedZoneOperationsList
+managedZoneOperationsList pMzolProject_ pMzolManagedZone_ =
+    ManagedZoneOperationsList'
+    { _mzolProject = pMzolProject_
+    , _mzolPageToken = Nothing
+    , _mzolManagedZone = pMzolManagedZone_
+    , _mzolMaxResults = Nothing
+    , _mzolSortBy = StartTime
+    }
+
+-- | Identifies the project addressed by this request.
+mzolProject :: Lens' ManagedZoneOperationsList Text
+mzolProject
+  = lens _mzolProject (\ s a -> s{_mzolProject = a})
+
+-- | Optional. A tag returned by a previous list request that was truncated.
+-- Use this parameter to continue a previous list request.
+mzolPageToken :: Lens' ManagedZoneOperationsList (Maybe Text)
+mzolPageToken
+  = lens _mzolPageToken
+      (\ s a -> s{_mzolPageToken = a})
+
+-- | Identifies the managed zone addressed by this request.
+mzolManagedZone :: Lens' ManagedZoneOperationsList Text
+mzolManagedZone
+  = lens _mzolManagedZone
+      (\ s a -> s{_mzolManagedZone = a})
+
+-- | Optional. Maximum number of results to be returned. If unspecified, the
+-- server will decide how many results to return.
+mzolMaxResults :: Lens' ManagedZoneOperationsList (Maybe Int32)
+mzolMaxResults
+  = lens _mzolMaxResults
+      (\ s a -> s{_mzolMaxResults = a})
+      . mapping _Coerce
+
+-- | Sorting criterion. The only supported values are START_TIME and ID.
+mzolSortBy :: Lens' ManagedZoneOperationsList ManagedZoneOperationsListSortBy
+mzolSortBy
+  = lens _mzolSortBy (\ s a -> s{_mzolSortBy = a})
+
+instance GoogleRequest ManagedZoneOperationsList
+         where
+        type Rs ManagedZoneOperationsList =
+             ManagedZoneOperationsListResponse
+        type Scopes ManagedZoneOperationsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only",
+               "https://www.googleapis.com/auth/ndev.clouddns.readonly",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient ManagedZoneOperationsList'{..}
+          = go _mzolProject _mzolManagedZone _mzolPageToken
+              _mzolMaxResults
+              (Just _mzolSortBy)
+              (Just AltJSON)
+              dNSService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagedZoneOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/Create.hs b/gen/Network/Google/Resource/DNS/ManagedZones/Create.hs
--- a/gen/Network/Google/Resource/DNS/ManagedZones/Create.hs
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/Create.hs
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , mzcProject
     , mzcPayload
+    , mzcClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -44,20 +45,22 @@
 -- 'ManagedZonesCreate' request conforms to.
 type ManagedZonesCreateResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] ManagedZone :>
-                   Post '[JSON] ManagedZone
+               QueryParam "clientOperationId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ManagedZone :>
+                     Post '[JSON] ManagedZone
 
 -- | Create a new ManagedZone.
 --
 -- /See:/ 'managedZonesCreate' smart constructor.
 data ManagedZonesCreate = ManagedZonesCreate'
-    { _mzcProject :: !Text
-    , _mzcPayload :: !ManagedZone
+    { _mzcProject           :: !Text
+    , _mzcPayload           :: !ManagedZone
+    , _mzcClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ManagedZonesCreate' with the minimum fields required to make a request.
@@ -67,6 +70,8 @@
 -- * 'mzcProject'
 --
 -- * 'mzcPayload'
+--
+-- * 'mzcClientOperationId'
 managedZonesCreate
     :: Text -- ^ 'mzcProject'
     -> ManagedZone -- ^ 'mzcPayload'
@@ -75,6 +80,7 @@
     ManagedZonesCreate'
     { _mzcProject = pMzcProject_
     , _mzcPayload = pMzcPayload_
+    , _mzcClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -87,13 +93,22 @@
 mzcPayload
   = lens _mzcPayload (\ s a -> s{_mzcPayload = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzcClientOperationId :: Lens' ManagedZonesCreate (Maybe Text)
+mzcClientOperationId
+  = lens _mzcClientOperationId
+      (\ s a -> s{_mzcClientOperationId = a})
+
 instance GoogleRequest ManagedZonesCreate where
         type Rs ManagedZonesCreate = ManagedZone
         type Scopes ManagedZonesCreate =
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ManagedZonesCreate'{..}
-          = go _mzcProject (Just AltJSON) _mzcPayload
+          = go _mzcProject _mzcClientOperationId (Just AltJSON)
+              _mzcPayload
               dNSService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/Delete.hs b/gen/Network/Google/Resource/DNS/ManagedZones/Delete.hs
--- a/gen/Network/Google/Resource/DNS/ManagedZones/Delete.hs
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/Delete.hs
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , mzdProject
     , mzdManagedZone
+    , mzdClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -44,19 +45,22 @@
 -- 'ManagedZonesDelete' request conforms to.
 type ManagedZonesDeleteResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
                Capture "managedZone" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
+                 QueryParam "clientOperationId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Delete '[JSON] ManagedZonesDeleteResponse
 
 -- | Delete a previously created ManagedZone.
 --
 -- /See:/ 'managedZonesDelete' smart constructor.
 data ManagedZonesDelete = ManagedZonesDelete'
-    { _mzdProject     :: !Text
-    , _mzdManagedZone :: !Text
+    { _mzdProject           :: !Text
+    , _mzdManagedZone       :: !Text
+    , _mzdClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ManagedZonesDelete' with the minimum fields required to make a request.
@@ -66,6 +70,8 @@
 -- * 'mzdProject'
 --
 -- * 'mzdManagedZone'
+--
+-- * 'mzdClientOperationId'
 managedZonesDelete
     :: Text -- ^ 'mzdProject'
     -> Text -- ^ 'mzdManagedZone'
@@ -74,6 +80,7 @@
     ManagedZonesDelete'
     { _mzdProject = pMzdProject_
     , _mzdManagedZone = pMzdManagedZone_
+    , _mzdClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -88,13 +95,24 @@
   = lens _mzdManagedZone
       (\ s a -> s{_mzdManagedZone = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzdClientOperationId :: Lens' ManagedZonesDelete (Maybe Text)
+mzdClientOperationId
+  = lens _mzdClientOperationId
+      (\ s a -> s{_mzdClientOperationId = a})
+
 instance GoogleRequest ManagedZonesDelete where
-        type Rs ManagedZonesDelete = ()
+        type Rs ManagedZonesDelete =
+             ManagedZonesDeleteResponse
         type Scopes ManagedZonesDelete =
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ManagedZonesDelete'{..}
-          = go _mzdProject _mzdManagedZone (Just AltJSON)
+          = go _mzdProject _mzdManagedZone
+              _mzdClientOperationId
+              (Just AltJSON)
               dNSService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/Get.hs b/gen/Network/Google/Resource/DNS/ManagedZones/Get.hs
--- a/gen/Network/Google/Resource/DNS/ManagedZones/Get.hs
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/Get.hs
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , mzgProject
     , mzgManagedZone
+    , mzgClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -44,19 +45,21 @@
 -- 'ManagedZonesGet' request conforms to.
 type ManagedZonesGetResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
                Capture "managedZone" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] ManagedZone
+                 QueryParam "clientOperationId" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] ManagedZone
 
 -- | Fetch the representation of an existing ManagedZone.
 --
 -- /See:/ 'managedZonesGet' smart constructor.
 data ManagedZonesGet = ManagedZonesGet'
-    { _mzgProject     :: !Text
-    , _mzgManagedZone :: !Text
+    { _mzgProject           :: !Text
+    , _mzgManagedZone       :: !Text
+    , _mzgClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ManagedZonesGet' with the minimum fields required to make a request.
@@ -66,6 +69,8 @@
 -- * 'mzgProject'
 --
 -- * 'mzgManagedZone'
+--
+-- * 'mzgClientOperationId'
 managedZonesGet
     :: Text -- ^ 'mzgProject'
     -> Text -- ^ 'mzgManagedZone'
@@ -74,6 +79,7 @@
     ManagedZonesGet'
     { _mzgProject = pMzgProject_
     , _mzgManagedZone = pMzgManagedZone_
+    , _mzgClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -88,6 +94,14 @@
   = lens _mzgManagedZone
       (\ s a -> s{_mzgManagedZone = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzgClientOperationId :: Lens' ManagedZonesGet (Maybe Text)
+mzgClientOperationId
+  = lens _mzgClientOperationId
+      (\ s a -> s{_mzgClientOperationId = a})
+
 instance GoogleRequest ManagedZonesGet where
         type Rs ManagedZonesGet = ManagedZone
         type Scopes ManagedZonesGet =
@@ -96,7 +110,9 @@
                "https://www.googleapis.com/auth/ndev.clouddns.readonly",
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ManagedZonesGet'{..}
-          = go _mzgProject _mzgManagedZone (Just AltJSON)
+          = go _mzgProject _mzgManagedZone
+              _mzgClientOperationId
+              (Just AltJSON)
               dNSService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/List.hs b/gen/Network/Google/Resource/DNS/ManagedZones/List.hs
--- a/gen/Network/Google/Resource/DNS/ManagedZones/List.hs
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/List.hs
@@ -46,7 +46,7 @@
 -- 'ManagedZonesList' request conforms to.
 type ManagedZonesListResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/Patch.hs b/gen/Network/Google/Resource/DNS/ManagedZones/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/Patch.hs
@@ -0,0 +1,132 @@
+{-# 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.DNS.ManagedZones.Patch
+-- 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)
+--
+-- Update an existing ManagedZone. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.managedZones.patch@.
+module Network.Google.Resource.DNS.ManagedZones.Patch
+    (
+    -- * REST Resource
+      ManagedZonesPatchResource
+
+    -- * Creating a Request
+    , managedZonesPatch
+    , ManagedZonesPatch
+
+    -- * Request Lenses
+    , mzpProject
+    , mzpPayload
+    , mzpManagedZone
+    , mzpClientOperationId
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.managedZones.patch@ method which the
+-- 'ManagedZonesPatch' request conforms to.
+type ManagedZonesPatchResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 QueryParam "clientOperationId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ManagedZone :>
+                       Patch '[JSON] Operation
+
+-- | Update an existing ManagedZone. This method supports patch semantics.
+--
+-- /See:/ 'managedZonesPatch' smart constructor.
+data ManagedZonesPatch = ManagedZonesPatch'
+    { _mzpProject           :: !Text
+    , _mzpPayload           :: !ManagedZone
+    , _mzpManagedZone       :: !Text
+    , _mzpClientOperationId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZonesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzpProject'
+--
+-- * 'mzpPayload'
+--
+-- * 'mzpManagedZone'
+--
+-- * 'mzpClientOperationId'
+managedZonesPatch
+    :: Text -- ^ 'mzpProject'
+    -> ManagedZone -- ^ 'mzpPayload'
+    -> Text -- ^ 'mzpManagedZone'
+    -> ManagedZonesPatch
+managedZonesPatch pMzpProject_ pMzpPayload_ pMzpManagedZone_ =
+    ManagedZonesPatch'
+    { _mzpProject = pMzpProject_
+    , _mzpPayload = pMzpPayload_
+    , _mzpManagedZone = pMzpManagedZone_
+    , _mzpClientOperationId = Nothing
+    }
+
+-- | Identifies the project addressed by this request.
+mzpProject :: Lens' ManagedZonesPatch Text
+mzpProject
+  = lens _mzpProject (\ s a -> s{_mzpProject = a})
+
+-- | Multipart request metadata.
+mzpPayload :: Lens' ManagedZonesPatch ManagedZone
+mzpPayload
+  = lens _mzpPayload (\ s a -> s{_mzpPayload = a})
+
+-- | Identifies the managed zone addressed by this request. Can be the
+-- managed zone name or id.
+mzpManagedZone :: Lens' ManagedZonesPatch Text
+mzpManagedZone
+  = lens _mzpManagedZone
+      (\ s a -> s{_mzpManagedZone = a})
+
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzpClientOperationId :: Lens' ManagedZonesPatch (Maybe Text)
+mzpClientOperationId
+  = lens _mzpClientOperationId
+      (\ s a -> s{_mzpClientOperationId = a})
+
+instance GoogleRequest ManagedZonesPatch where
+        type Rs ManagedZonesPatch = Operation
+        type Scopes ManagedZonesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient ManagedZonesPatch'{..}
+          = go _mzpProject _mzpManagedZone
+              _mzpClientOperationId
+              (Just AltJSON)
+              _mzpPayload
+              dNSService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagedZonesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/ManagedZones/Update.hs b/gen/Network/Google/Resource/DNS/ManagedZones/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DNS/ManagedZones/Update.hs
@@ -0,0 +1,131 @@
+{-# 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.DNS.ManagedZones.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update an existing ManagedZone.
+--
+-- /See:/ <https://developers.google.com/cloud-dns Google Cloud DNS API Reference> for @dns.managedZones.update@.
+module Network.Google.Resource.DNS.ManagedZones.Update
+    (
+    -- * REST Resource
+      ManagedZonesUpdateResource
+
+    -- * Creating a Request
+    , managedZonesUpdate
+    , ManagedZonesUpdate
+
+    -- * Request Lenses
+    , mzuProject
+    , mzuPayload
+    , mzuManagedZone
+    , mzuClientOperationId
+    ) where
+
+import           Network.Google.DNS.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dns.managedZones.update@ method which the
+-- 'ManagedZonesUpdate' request conforms to.
+type ManagedZonesUpdateResource =
+     "dns" :>
+       "v2beta1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "managedZones" :>
+               Capture "managedZone" Text :>
+                 QueryParam "clientOperationId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ManagedZone :> Put '[JSON] Operation
+
+-- | Update an existing ManagedZone.
+--
+-- /See:/ 'managedZonesUpdate' smart constructor.
+data ManagedZonesUpdate = ManagedZonesUpdate'
+    { _mzuProject           :: !Text
+    , _mzuPayload           :: !ManagedZone
+    , _mzuManagedZone       :: !Text
+    , _mzuClientOperationId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedZonesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mzuProject'
+--
+-- * 'mzuPayload'
+--
+-- * 'mzuManagedZone'
+--
+-- * 'mzuClientOperationId'
+managedZonesUpdate
+    :: Text -- ^ 'mzuProject'
+    -> ManagedZone -- ^ 'mzuPayload'
+    -> Text -- ^ 'mzuManagedZone'
+    -> ManagedZonesUpdate
+managedZonesUpdate pMzuProject_ pMzuPayload_ pMzuManagedZone_ =
+    ManagedZonesUpdate'
+    { _mzuProject = pMzuProject_
+    , _mzuPayload = pMzuPayload_
+    , _mzuManagedZone = pMzuManagedZone_
+    , _mzuClientOperationId = Nothing
+    }
+
+-- | Identifies the project addressed by this request.
+mzuProject :: Lens' ManagedZonesUpdate Text
+mzuProject
+  = lens _mzuProject (\ s a -> s{_mzuProject = a})
+
+-- | Multipart request metadata.
+mzuPayload :: Lens' ManagedZonesUpdate ManagedZone
+mzuPayload
+  = lens _mzuPayload (\ s a -> s{_mzuPayload = a})
+
+-- | Identifies the managed zone addressed by this request. Can be the
+-- managed zone name or id.
+mzuManagedZone :: Lens' ManagedZonesUpdate Text
+mzuManagedZone
+  = lens _mzuManagedZone
+      (\ s a -> s{_mzuManagedZone = a})
+
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+mzuClientOperationId :: Lens' ManagedZonesUpdate (Maybe Text)
+mzuClientOperationId
+  = lens _mzuClientOperationId
+      (\ s a -> s{_mzuClientOperationId = a})
+
+instance GoogleRequest ManagedZonesUpdate where
+        type Rs ManagedZonesUpdate = Operation
+        type Scopes ManagedZonesUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
+        requestClient ManagedZonesUpdate'{..}
+          = go _mzuProject _mzuManagedZone
+              _mzuClientOperationId
+              (Just AltJSON)
+              _mzuPayload
+              dNSService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagedZonesUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DNS/Projects/Get.hs b/gen/Network/Google/Resource/DNS/Projects/Get.hs
--- a/gen/Network/Google/Resource/DNS/Projects/Get.hs
+++ b/gen/Network/Google/Resource/DNS/Projects/Get.hs
@@ -34,6 +34,7 @@
 
     -- * Request Lenses
     , pgProject
+    , pgClientOperationId
     ) where
 
 import           Network.Google.DNS.Types
@@ -43,16 +44,18 @@
 -- 'ProjectsGet' request conforms to.
 type ProjectsGetResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
-             QueryParam "alt" AltJSON :> Get '[JSON] Project
+             QueryParam "clientOperationId" Text :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Project
 
 -- | Fetch the representation of an existing Project.
 --
 -- /See:/ 'projectsGet' smart constructor.
-newtype ProjectsGet = ProjectsGet'
-    { _pgProject :: Text
+data ProjectsGet = ProjectsGet'
+    { _pgProject           :: !Text
+    , _pgClientOperationId :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsGet' with the minimum fields required to make a request.
@@ -60,12 +63,15 @@
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'pgProject'
+--
+-- * 'pgClientOperationId'
 projectsGet
     :: Text -- ^ 'pgProject'
     -> ProjectsGet
 projectsGet pPgProject_ =
     ProjectsGet'
     { _pgProject = pPgProject_
+    , _pgClientOperationId = Nothing
     }
 
 -- | Identifies the project addressed by this request.
@@ -73,6 +79,14 @@
 pgProject
   = lens _pgProject (\ s a -> s{_pgProject = a})
 
+-- | For mutating operation requests only. An optional identifier specified
+-- by the client. Must be unique for operation resources in the Operations
+-- collection.
+pgClientOperationId :: Lens' ProjectsGet (Maybe Text)
+pgClientOperationId
+  = lens _pgClientOperationId
+      (\ s a -> s{_pgClientOperationId = a})
+
 instance GoogleRequest ProjectsGet where
         type Rs ProjectsGet = Project
         type Scopes ProjectsGet =
@@ -81,7 +95,8 @@
                "https://www.googleapis.com/auth/ndev.clouddns.readonly",
                "https://www.googleapis.com/auth/ndev.clouddns.readwrite"]
         requestClient ProjectsGet'{..}
-          = go _pgProject (Just AltJSON) dNSService
+          = go _pgProject _pgClientOperationId (Just AltJSON)
+              dNSService
           where go
                   = buildClient (Proxy :: Proxy ProjectsGetResource)
                       mempty
diff --git a/gen/Network/Google/Resource/DNS/ResourceRecordSets/List.hs b/gen/Network/Google/Resource/DNS/ResourceRecordSets/List.hs
--- a/gen/Network/Google/Resource/DNS/ResourceRecordSets/List.hs
+++ b/gen/Network/Google/Resource/DNS/ResourceRecordSets/List.hs
@@ -48,7 +48,7 @@
 -- 'ResourceRecordSetsList' request conforms to.
 type ResourceRecordSetsListResource =
      "dns" :>
-       "v1" :>
+       "v2beta1" :>
          "projects" :>
            Capture "project" Text :>
              "managedZones" :>
diff --git a/gogol-dns.cabal b/gogol-dns.cabal
--- a/gogol-dns.cabal
+++ b/gogol-dns.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-dns
-version:               0.1.0
+version:               0.1.1
 synopsis:              Google Cloud DNS SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -11,7 +11,7 @@
 category:              Network, Google, Cloud
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md
+extra-source-files:    README.md src/.gitkeep
 
 description:
     Configures and serves authoritative DNS records.
@@ -19,7 +19,7 @@
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
     .
-    This library is compatible with version @v1@
+    This library is compatible with version @v2beta1@
     of the API.
 
 source-repository head
@@ -38,10 +38,16 @@
         , Network.Google.Resource.DNS.Changes.Create
         , Network.Google.Resource.DNS.Changes.Get
         , Network.Google.Resource.DNS.Changes.List
+        , Network.Google.Resource.DNS.DNSkeys.Get
+        , Network.Google.Resource.DNS.DNSkeys.List
+        , Network.Google.Resource.DNS.ManagedZoneOperations.Get
+        , Network.Google.Resource.DNS.ManagedZoneOperations.List
         , Network.Google.Resource.DNS.ManagedZones.Create
         , Network.Google.Resource.DNS.ManagedZones.Delete
         , Network.Google.Resource.DNS.ManagedZones.Get
         , Network.Google.Resource.DNS.ManagedZones.List
+        , Network.Google.Resource.DNS.ManagedZones.Patch
+        , Network.Google.Resource.DNS.ManagedZones.Update
         , Network.Google.Resource.DNS.Projects.Get
         , Network.Google.Resource.DNS.ResourceRecordSets.List
 
@@ -50,5 +56,5 @@
         , Network.Google.DNS.Types.Sum
 
     build-depends:
-          gogol-core == 0.1.0.*
+          gogol-core == 0.1.1.*
         , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
