diff --git a/gen/Network/Google/Billing.hs b/gen/Network/Google/Billing.hs
--- a/gen/Network/Google/Billing.hs
+++ b/gen/Network/Google/Billing.hs
@@ -13,10 +13,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves Google Developers Console billing accounts and associates them
--- with projects.
+-- Allows developers to manage billing for their Google Cloud Platform
+-- projects programmatically.
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference>
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference>
 module Network.Google.Billing
     (
     -- * Service Configuration
@@ -30,30 +30,79 @@
 
     -- * Resources
 
+    -- ** cloudbilling.billingAccounts.create
+    , module Network.Google.Resource.CloudBilling.BillingAccounts.Create
+
     -- ** cloudbilling.billingAccounts.get
     , module Network.Google.Resource.CloudBilling.BillingAccounts.Get
 
+    -- ** cloudbilling.billingAccounts.getIamPolicy
+    , module Network.Google.Resource.CloudBilling.BillingAccounts.GetIAMPolicy
+
     -- ** cloudbilling.billingAccounts.list
     , module Network.Google.Resource.CloudBilling.BillingAccounts.List
 
+    -- ** cloudbilling.billingAccounts.patch
+    , module Network.Google.Resource.CloudBilling.BillingAccounts.Patch
+
     -- ** cloudbilling.billingAccounts.projects.list
     , module Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List
 
+    -- ** cloudbilling.billingAccounts.setIamPolicy
+    , module Network.Google.Resource.CloudBilling.BillingAccounts.SetIAMPolicy
+
+    -- ** cloudbilling.billingAccounts.testIamPermissions
+    , module Network.Google.Resource.CloudBilling.BillingAccounts.TestIAMPermissions
+
     -- ** cloudbilling.projects.getBillingInfo
     , module Network.Google.Resource.CloudBilling.Projects.GetBillingInfo
 
     -- ** cloudbilling.projects.updateBillingInfo
     , module Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo
 
+    -- ** cloudbilling.services.list
+    , module Network.Google.Resource.CloudBilling.Services.List
+
+    -- ** cloudbilling.services.skus.list
+    , module Network.Google.Resource.CloudBilling.Services.SKUs.List
+
     -- * Types
 
+    -- ** AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- ** ListServicesResponse
+    , ListServicesResponse
+    , listServicesResponse
+    , lsrNextPageToken
+    , lsrServices
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
     -- ** BillingAccount
     , BillingAccount
     , billingAccount
+    , baMasterBillingAccount
     , baOpen
     , baName
     , baDisplayName
 
+    -- ** Service
+    , Service
+    , service
+    , sName
+    , sDisplayName
+    , sServiceId
+
     -- ** ProjectBillingInfo
     , ProjectBillingInfo
     , projectBillingInfo
@@ -62,35 +111,163 @@
     , pbiProjectId
     , pbiBillingEnabled
 
+    -- ** TierRate
+    , TierRate
+    , tierRate
+    , trUnitPrice
+    , trStartUsageAmount
+
+    -- ** Money
+    , Money
+    , money
+    , mCurrencyCode
+    , mNanos
+    , mUnits
+
+    -- ** Category
+    , Category
+    , category
+    , cResourceFamily
+    , cUsageType
+    , cServiceDisplayName
+    , cResourceGroup
+
+    -- ** AggregationInfoAggregationLevel
+    , AggregationInfoAggregationLevel (..)
+
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
     -- ** ListProjectBillingInfoResponse
     , ListProjectBillingInfoResponse
     , listProjectBillingInfoResponse
     , lpbirNextPageToken
     , lpbirProjectBillingInfo
 
+    -- ** ListSKUsResponse
+    , ListSKUsResponse
+    , listSKUsResponse
+    , lskurNextPageToken
+    , lskurSKUs
+
+    -- ** AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- ** PricingExpression
+    , PricingExpression
+    , pricingExpression
+    , peUsageUnitDescription
+    , peBaseUnit
+    , peBaseUnitConversionFactor
+    , peDisplayQuantity
+    , peTieredRates
+    , peBaseUnitDescription
+    , peUsageUnit
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- ** AggregationInfo
+    , AggregationInfo
+    , aggregationInfo
+    , aiAggregationInterval
+    , aiAggregationCount
+    , aiAggregationLevel
+
+    -- ** SKU
+    , SKU
+    , sKU
+    , skukCategory
+    , skukSKUId
+    , skukServiceProviderName
+    , skukServiceRegions
+    , skukName
+    , skukPricingInfo
+    , skukDescription
+
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
     -- ** ListBillingAccountsResponse
     , ListBillingAccountsResponse
     , listBillingAccountsResponse
     , lbarNextPageToken
     , lbarBillingAccounts
+
+    -- ** AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- ** PricingInfo
+    , PricingInfo
+    , pricingInfo
+    , piSummary
+    , piAggregationInfo
+    , piPricingExpression
+    , piCurrencyConversionRate
+    , piEffectiveTime
+
+    -- ** AggregationInfoAggregationInterval
+    , AggregationInfoAggregationInterval (..)
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
     ) where
 
 import           Network.Google.Billing.Types
 import           Network.Google.Prelude
+import           Network.Google.Resource.CloudBilling.BillingAccounts.Create
 import           Network.Google.Resource.CloudBilling.BillingAccounts.Get
+import           Network.Google.Resource.CloudBilling.BillingAccounts.GetIAMPolicy
 import           Network.Google.Resource.CloudBilling.BillingAccounts.List
+import           Network.Google.Resource.CloudBilling.BillingAccounts.Patch
 import           Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List
+import           Network.Google.Resource.CloudBilling.BillingAccounts.SetIAMPolicy
+import           Network.Google.Resource.CloudBilling.BillingAccounts.TestIAMPermissions
 import           Network.Google.Resource.CloudBilling.Projects.GetBillingInfo
 import           Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo
+import           Network.Google.Resource.CloudBilling.Services.List
+import           Network.Google.Resource.CloudBilling.Services.SKUs.List
 
 {- $resources
 TODO
 -}
 
--- | Represents the entirety of the methods and resources available for the Google Cloud Billing API service.
+-- | Represents the entirety of the methods and resources available for the Cloud Billing API service.
 type BillingAPI =
      ProjectsGetBillingInfoResource :<|>
        ProjectsUpdateBillingInfoResource
+       :<|> ServicesSKUsListResource
+       :<|> ServicesListResource
        :<|> BillingAccountsProjectsListResource
        :<|> BillingAccountsListResource
+       :<|> BillingAccountsGetIAMPolicyResource
+       :<|> BillingAccountsPatchResource
        :<|> BillingAccountsGetResource
+       :<|> BillingAccountsCreateResource
+       :<|> BillingAccountsSetIAMPolicyResource
+       :<|> BillingAccountsTestIAMPermissionsResource
diff --git a/gen/Network/Google/Billing/Types.hs b/gen/Network/Google/Billing/Types.hs
--- a/gen/Network/Google/Billing/Types.hs
+++ b/gen/Network/Google/Billing/Types.hs
@@ -22,13 +22,41 @@
     -- * OAuth Scopes
     , cloudPlatformScope
 
+    -- * AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- * ListServicesResponse
+    , ListServicesResponse
+    , listServicesResponse
+    , lsrNextPageToken
+    , lsrServices
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
     -- * BillingAccount
     , BillingAccount
     , billingAccount
+    , baMasterBillingAccount
     , baOpen
     , baName
     , baDisplayName
 
+    -- * Service
+    , Service
+    , service
+    , sName
+    , sDisplayName
+    , sServiceId
+
     -- * ProjectBillingInfo
     , ProjectBillingInfo
     , projectBillingInfo
@@ -37,24 +65,138 @@
     , pbiProjectId
     , pbiBillingEnabled
 
+    -- * TierRate
+    , TierRate
+    , tierRate
+    , trUnitPrice
+    , trStartUsageAmount
+
+    -- * Money
+    , Money
+    , money
+    , mCurrencyCode
+    , mNanos
+    , mUnits
+
+    -- * Category
+    , Category
+    , category
+    , cResourceFamily
+    , cUsageType
+    , cServiceDisplayName
+    , cResourceGroup
+
+    -- * AggregationInfoAggregationLevel
+    , AggregationInfoAggregationLevel (..)
+
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
     -- * ListProjectBillingInfoResponse
     , ListProjectBillingInfoResponse
     , listProjectBillingInfoResponse
     , lpbirNextPageToken
     , lpbirProjectBillingInfo
 
+    -- * ListSKUsResponse
+    , ListSKUsResponse
+    , listSKUsResponse
+    , lskurNextPageToken
+    , lskurSKUs
+
+    -- * AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- * PricingExpression
+    , PricingExpression
+    , pricingExpression
+    , peUsageUnitDescription
+    , peBaseUnit
+    , peBaseUnitConversionFactor
+    , peDisplayQuantity
+    , peTieredRates
+    , peBaseUnitDescription
+    , peUsageUnit
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- * AggregationInfo
+    , AggregationInfo
+    , aggregationInfo
+    , aiAggregationInterval
+    , aiAggregationCount
+    , aiAggregationLevel
+
+    -- * SKU
+    , SKU
+    , sKU
+    , skukCategory
+    , skukSKUId
+    , skukServiceProviderName
+    , skukServiceRegions
+    , skukName
+    , skukPricingInfo
+    , skukDescription
+
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- * Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
     -- * ListBillingAccountsResponse
     , ListBillingAccountsResponse
     , listBillingAccountsResponse
     , lbarNextPageToken
     , lbarBillingAccounts
+
+    -- * AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- * PricingInfo
+    , PricingInfo
+    , pricingInfo
+    , piSummary
+    , piAggregationInfo
+    , piPricingExpression
+    , piCurrencyConversionRate
+    , piEffectiveTime
+
+    -- * AggregationInfoAggregationInterval
+    , AggregationInfoAggregationInterval (..)
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
     ) where
 
 import           Network.Google.Billing.Types.Product
 import           Network.Google.Billing.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v1' of the Google Cloud Billing API. This contains the host and root path used as a starting point for constructing service requests.
+-- | Default request referring to version 'v1' of the Cloud Billing API. This contains the host and root path used as a starting point for constructing service requests.
 billingService :: ServiceConfig
 billingService
   = defaultService (ServiceId "cloudbilling:v1")
diff --git a/gen/Network/Google/Billing/Types/Product.hs b/gen/Network/Google/Billing/Types/Product.hs
--- a/gen/Network/Google/Billing/Types/Product.hs
+++ b/gen/Network/Google/Billing/Types/Product.hs
@@ -20,262 +20,1558 @@
 import           Network.Google.Billing.Types.Sum
 import           Network.Google.Prelude
 
--- | A billing account in [Google Developers
--- Console](https:\/\/console.developers.google.com\/). You can assign a
--- billing account to one or more projects.
---
--- /See:/ 'billingAccount' smart constructor.
-data BillingAccount = BillingAccount'
-    { _baOpen        :: !(Maybe Bool)
-    , _baName        :: !(Maybe Text)
-    , _baDisplayName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BillingAccount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'baOpen'
---
--- * 'baName'
---
--- * 'baDisplayName'
-billingAccount
-    :: BillingAccount
-billingAccount =
-    BillingAccount'
-    { _baOpen = Nothing
-    , _baName = Nothing
-    , _baDisplayName = Nothing
-    }
-
--- | True if the billing account is open, and will therefore be charged for
--- any usage on associated projects. False if the billing account is
--- closed, and therefore projects associated with it will be unable to use
--- paid services.
-baOpen :: Lens' BillingAccount (Maybe Bool)
-baOpen = lens _baOpen (\ s a -> s{_baOpen = a})
-
--- | The resource name of the billing account. The resource name has the form
--- \`billingAccounts\/{billing_account_id}\`. For example,
--- \`billingAccounts\/012345-567890-ABCDEF\` would be the resource name for
--- billing account \`012345-567890-ABCDEF\`.
-baName :: Lens' BillingAccount (Maybe Text)
-baName = lens _baName (\ s a -> s{_baName = a})
-
--- | The display name given to the billing account, such as \`My Billing
--- Account\`. This name is displayed in the Google Developers Console.
-baDisplayName :: Lens' BillingAccount (Maybe Text)
-baDisplayName
-  = lens _baDisplayName
-      (\ s a -> s{_baDisplayName = a})
-
-instance FromJSON BillingAccount where
-        parseJSON
-          = withObject "BillingAccount"
-              (\ o ->
-                 BillingAccount' <$>
-                   (o .:? "open") <*> (o .:? "name") <*>
-                     (o .:? "displayName"))
-
-instance ToJSON BillingAccount where
-        toJSON BillingAccount'{..}
-          = object
-              (catMaybes
-                 [("open" .=) <$> _baOpen, ("name" .=) <$> _baName,
-                  ("displayName" .=) <$> _baDisplayName])
-
--- | Encapsulation of billing information for a Developers Console project. A
--- project has at most one associated billing account at a time (but a
--- billing account can be assigned to multiple projects).
---
--- /See:/ 'projectBillingInfo' smart constructor.
-data ProjectBillingInfo = ProjectBillingInfo'
-    { _pbiName               :: !(Maybe Text)
-    , _pbiBillingAccountName :: !(Maybe Text)
-    , _pbiProjectId          :: !(Maybe Text)
-    , _pbiBillingEnabled     :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProjectBillingInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pbiName'
---
--- * 'pbiBillingAccountName'
---
--- * 'pbiProjectId'
---
--- * 'pbiBillingEnabled'
-projectBillingInfo
-    :: ProjectBillingInfo
-projectBillingInfo =
-    ProjectBillingInfo'
-    { _pbiName = Nothing
-    , _pbiBillingAccountName = Nothing
-    , _pbiProjectId = Nothing
-    , _pbiBillingEnabled = Nothing
-    }
-
--- | The resource name for the \`ProjectBillingInfo\`; has the form
--- \`projects\/{project_id}\/billingInfo\`. For example, the resource name
--- for the billing information for project \`tokyo-rain-123\` would be
--- \`projects\/tokyo-rain-123\/billingInfo\`. This field is read-only.
-pbiName :: Lens' ProjectBillingInfo (Maybe Text)
-pbiName = lens _pbiName (\ s a -> s{_pbiName = a})
-
--- | The resource name of the billing account associated with the project, if
--- any. For example, \`billingAccounts\/012345-567890-ABCDEF\`.
-pbiBillingAccountName :: Lens' ProjectBillingInfo (Maybe Text)
-pbiBillingAccountName
-  = lens _pbiBillingAccountName
-      (\ s a -> s{_pbiBillingAccountName = a})
-
--- | The ID of the project that this \`ProjectBillingInfo\` represents, such
--- as \`tokyo-rain-123\`. This is a convenience field so that you don\'t
--- need to parse the \`name\` field to obtain a project ID. This field is
--- read-only.
-pbiProjectId :: Lens' ProjectBillingInfo (Maybe Text)
-pbiProjectId
-  = lens _pbiProjectId (\ s a -> s{_pbiProjectId = a})
-
--- | True if the project is associated with an open billing account, to which
--- usage on the project is charged. False if the project is associated with
--- a closed billing account, or no billing account at all, and therefore
--- cannot use paid services. This field is read-only.
-pbiBillingEnabled :: Lens' ProjectBillingInfo (Maybe Bool)
-pbiBillingEnabled
-  = lens _pbiBillingEnabled
-      (\ s a -> s{_pbiBillingEnabled = a})
-
-instance FromJSON ProjectBillingInfo where
-        parseJSON
-          = withObject "ProjectBillingInfo"
-              (\ o ->
-                 ProjectBillingInfo' <$>
-                   (o .:? "name") <*> (o .:? "billingAccountName") <*>
-                     (o .:? "projectId")
-                     <*> (o .:? "billingEnabled"))
-
-instance ToJSON ProjectBillingInfo where
-        toJSON ProjectBillingInfo'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _pbiName,
-                  ("billingAccountName" .=) <$> _pbiBillingAccountName,
-                  ("projectId" .=) <$> _pbiProjectId,
-                  ("billingEnabled" .=) <$> _pbiBillingEnabled])
-
--- | Request message for \`ListProjectBillingInfoResponse\`.
---
--- /See:/ 'listProjectBillingInfoResponse' smart constructor.
-data ListProjectBillingInfoResponse = ListProjectBillingInfoResponse'
-    { _lpbirNextPageToken      :: !(Maybe Text)
-    , _lpbirProjectBillingInfo :: !(Maybe [ProjectBillingInfo])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListProjectBillingInfoResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lpbirNextPageToken'
---
--- * 'lpbirProjectBillingInfo'
-listProjectBillingInfoResponse
-    :: ListProjectBillingInfoResponse
-listProjectBillingInfoResponse =
-    ListProjectBillingInfoResponse'
-    { _lpbirNextPageToken = Nothing
-    , _lpbirProjectBillingInfo = Nothing
-    }
-
--- | A token to retrieve the next page of results. To retrieve the next page,
--- call \`ListProjectBillingInfo\` again with the \`page_token\` field set
--- to this value. This field is empty if there are no more results to
--- retrieve.
-lpbirNextPageToken :: Lens' ListProjectBillingInfoResponse (Maybe Text)
-lpbirNextPageToken
-  = lens _lpbirNextPageToken
-      (\ s a -> s{_lpbirNextPageToken = a})
-
--- | A list of \`ProjectBillingInfo\` resources representing the projects
--- associated with the billing account.
-lpbirProjectBillingInfo :: Lens' ListProjectBillingInfoResponse [ProjectBillingInfo]
-lpbirProjectBillingInfo
-  = lens _lpbirProjectBillingInfo
-      (\ s a -> s{_lpbirProjectBillingInfo = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListProjectBillingInfoResponse
-         where
-        parseJSON
-          = withObject "ListProjectBillingInfoResponse"
-              (\ o ->
-                 ListProjectBillingInfoResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "projectBillingInfo" .!= mempty))
-
-instance ToJSON ListProjectBillingInfoResponse where
-        toJSON ListProjectBillingInfoResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lpbirNextPageToken,
-                  ("projectBillingInfo" .=) <$>
-                    _lpbirProjectBillingInfo])
-
--- | Response message for \`ListBillingAccounts\`.
---
--- /See:/ 'listBillingAccountsResponse' smart constructor.
-data ListBillingAccountsResponse = ListBillingAccountsResponse'
-    { _lbarNextPageToken   :: !(Maybe Text)
-    , _lbarBillingAccounts :: !(Maybe [BillingAccount])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListBillingAccountsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lbarNextPageToken'
---
--- * 'lbarBillingAccounts'
-listBillingAccountsResponse
-    :: ListBillingAccountsResponse
-listBillingAccountsResponse =
-    ListBillingAccountsResponse'
-    { _lbarNextPageToken = Nothing
-    , _lbarBillingAccounts = Nothing
-    }
-
--- | A token to retrieve the next page of results. To retrieve the next page,
--- call \`ListBillingAccounts\` again with the \`page_token\` field set to
--- this value. This field is empty if there are no more results to
--- retrieve.
-lbarNextPageToken :: Lens' ListBillingAccountsResponse (Maybe Text)
-lbarNextPageToken
-  = lens _lbarNextPageToken
-      (\ s a -> s{_lbarNextPageToken = a})
-
--- | A list of billing accounts.
-lbarBillingAccounts :: Lens' ListBillingAccountsResponse [BillingAccount]
-lbarBillingAccounts
-  = lens _lbarBillingAccounts
-      (\ s a -> s{_lbarBillingAccounts = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListBillingAccountsResponse where
-        parseJSON
-          = withObject "ListBillingAccountsResponse"
-              (\ o ->
-                 ListBillingAccountsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "billingAccounts" .!= mempty))
-
-instance ToJSON ListBillingAccountsResponse where
-        toJSON ListBillingAccountsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lbarNextPageToken,
-                  ("billingAccounts" .=) <$> _lbarBillingAccounts])
+-- | Specifies the audit configuration for a service. The configuration
+-- determines which permission types are logged, and what identities, if
+-- any, are exempted from logging. An AuditConfig must have one or more
+-- AuditLogConfigs. If there are AuditConfigs for both \`allServices\` and
+-- a specific service, the union of the two AuditConfigs is used for that
+-- service: the log_types specified in each AuditConfig are enabled, and
+-- the exempted_members in each AuditLogConfig are exempted. Example Policy
+-- with multiple AuditConfigs: { \"audit_configs\": [ { \"service\":
+-- \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\":
+-- \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\":
+-- \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\":
+-- [ \"user:bar\'gmail.com\" ] } ] } ] } For fooservice, this policy
+-- enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts
+-- foo\'gmail.com from DATA_READ logging, and bar\'gmail.com from
+-- DATA_WRITE logging.
+--
+-- /See:/ 'auditConfig' smart constructor.
+data AuditConfig = AuditConfig'
+    { _acService         :: !(Maybe Text)
+    , _acAuditLogConfigs :: !(Maybe [AuditLogConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acService'
+--
+-- * 'acAuditLogConfigs'
+auditConfig
+    :: AuditConfig
+auditConfig =
+    AuditConfig'
+    { _acService = Nothing
+    , _acAuditLogConfigs = Nothing
+    }
+
+-- | Specifies a service that will be enabled for audit logging. For example,
+-- \`storage.googleapis.com\`, \`cloudsql.googleapis.com\`. \`allServices\`
+-- is a special value that covers all services.
+acService :: Lens' AuditConfig (Maybe Text)
+acService
+  = lens _acService (\ s a -> s{_acService = a})
+
+-- | The configuration for logging of each type of permission.
+acAuditLogConfigs :: Lens' AuditConfig [AuditLogConfig]
+acAuditLogConfigs
+  = lens _acAuditLogConfigs
+      (\ s a -> s{_acAuditLogConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditConfig where
+        parseJSON
+          = withObject "AuditConfig"
+              (\ o ->
+                 AuditConfig' <$>
+                   (o .:? "service") <*>
+                     (o .:? "auditLogConfigs" .!= mempty))
+
+instance ToJSON AuditConfig where
+        toJSON AuditConfig'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _acService,
+                  ("auditLogConfigs" .=) <$> _acAuditLogConfigs])
+
+-- | Response message for \`ListServices\`.
+--
+-- /See:/ 'listServicesResponse' smart constructor.
+data ListServicesResponse = ListServicesResponse'
+    { _lsrNextPageToken :: !(Maybe Text)
+    , _lsrServices      :: !(Maybe [Service])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListServicesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsrNextPageToken'
+--
+-- * 'lsrServices'
+listServicesResponse
+    :: ListServicesResponse
+listServicesResponse =
+    ListServicesResponse'
+    { _lsrNextPageToken = Nothing
+    , _lsrServices = Nothing
+    }
+
+-- | A token to retrieve the next page of results. To retrieve the next page,
+-- call \`ListServices\` again with the \`page_token\` field set to this
+-- value. This field is empty if there are no more results to retrieve.
+lsrNextPageToken :: Lens' ListServicesResponse (Maybe Text)
+lsrNextPageToken
+  = lens _lsrNextPageToken
+      (\ s a -> s{_lsrNextPageToken = a})
+
+-- | A list of services.
+lsrServices :: Lens' ListServicesResponse [Service]
+lsrServices
+  = lens _lsrServices (\ s a -> s{_lsrServices = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListServicesResponse where
+        parseJSON
+          = withObject "ListServicesResponse"
+              (\ o ->
+                 ListServicesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "services" .!= mempty))
+
+instance ToJSON ListServicesResponse where
+        toJSON ListServicesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lsrNextPageToken,
+                  ("services" .=) <$> _lsrServices])
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr = Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+    Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | Textual representation of an expression in Common Expression Language
+-- syntax. The application context of the containing message determines
+-- which well-known feature set of CEL is supported.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | An optional title for the expression, i.e. a short string describing its
+-- purpose. This can be used e.g. in UIs which allow to enter the
+-- expression.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+-- | A billing account in [GCP
+-- Console](https:\/\/console.cloud.google.com\/). You can assign a billing
+-- account to one or more projects.
+--
+-- /See:/ 'billingAccount' smart constructor.
+data BillingAccount = BillingAccount'
+    { _baMasterBillingAccount :: !(Maybe Text)
+    , _baOpen                 :: !(Maybe Bool)
+    , _baName                 :: !(Maybe Text)
+    , _baDisplayName          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'baMasterBillingAccount'
+--
+-- * 'baOpen'
+--
+-- * 'baName'
+--
+-- * 'baDisplayName'
+billingAccount
+    :: BillingAccount
+billingAccount =
+    BillingAccount'
+    { _baMasterBillingAccount = Nothing
+    , _baOpen = Nothing
+    , _baName = Nothing
+    , _baDisplayName = Nothing
+    }
+
+-- | If this account is a
+-- [subaccount](https:\/\/cloud.google.com\/billing\/docs\/concepts), then
+-- this will be the resource name of the master billing account that it is
+-- being resold through. Otherwise this will be empty.
+baMasterBillingAccount :: Lens' BillingAccount (Maybe Text)
+baMasterBillingAccount
+  = lens _baMasterBillingAccount
+      (\ s a -> s{_baMasterBillingAccount = a})
+
+-- | True if the billing account is open, and will therefore be charged for
+-- any usage on associated projects. False if the billing account is
+-- closed, and therefore projects associated with it will be unable to use
+-- paid services.
+baOpen :: Lens' BillingAccount (Maybe Bool)
+baOpen = lens _baOpen (\ s a -> s{_baOpen = a})
+
+-- | The resource name of the billing account. The resource name has the form
+-- \`billingAccounts\/{billing_account_id}\`. For example,
+-- \`billingAccounts\/012345-567890-ABCDEF\` would be the resource name for
+-- billing account \`012345-567890-ABCDEF\`.
+baName :: Lens' BillingAccount (Maybe Text)
+baName = lens _baName (\ s a -> s{_baName = a})
+
+-- | The display name given to the billing account, such as \`My Billing
+-- Account\`. This name is displayed in the GCP Console.
+baDisplayName :: Lens' BillingAccount (Maybe Text)
+baDisplayName
+  = lens _baDisplayName
+      (\ s a -> s{_baDisplayName = a})
+
+instance FromJSON BillingAccount where
+        parseJSON
+          = withObject "BillingAccount"
+              (\ o ->
+                 BillingAccount' <$>
+                   (o .:? "masterBillingAccount") <*> (o .:? "open") <*>
+                     (o .:? "name")
+                     <*> (o .:? "displayName"))
+
+instance ToJSON BillingAccount where
+        toJSON BillingAccount'{..}
+          = object
+              (catMaybes
+                 [("masterBillingAccount" .=) <$>
+                    _baMasterBillingAccount,
+                  ("open" .=) <$> _baOpen, ("name" .=) <$> _baName,
+                  ("displayName" .=) <$> _baDisplayName])
+
+-- | Encapsulates a single service in Google Cloud Platform.
+--
+-- /See:/ 'service' smart constructor.
+data Service = Service'
+    { _sName        :: !(Maybe Text)
+    , _sDisplayName :: !(Maybe Text)
+    , _sServiceId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Service' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sName'
+--
+-- * 'sDisplayName'
+--
+-- * 'sServiceId'
+service
+    :: Service
+service =
+    Service'
+    { _sName = Nothing
+    , _sDisplayName = Nothing
+    , _sServiceId = Nothing
+    }
+
+-- | The resource name for the service. Example: \"services\/DA34-426B-A397\"
+sName :: Lens' Service (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | A human readable display name for this service.
+sDisplayName :: Lens' Service (Maybe Text)
+sDisplayName
+  = lens _sDisplayName (\ s a -> s{_sDisplayName = a})
+
+-- | The identifier for the service. Example: \"DA34-426B-A397\"
+sServiceId :: Lens' Service (Maybe Text)
+sServiceId
+  = lens _sServiceId (\ s a -> s{_sServiceId = a})
+
+instance FromJSON Service where
+        parseJSON
+          = withObject "Service"
+              (\ o ->
+                 Service' <$>
+                   (o .:? "name") <*> (o .:? "displayName") <*>
+                     (o .:? "serviceId"))
+
+instance ToJSON Service where
+        toJSON Service'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _sName,
+                  ("displayName" .=) <$> _sDisplayName,
+                  ("serviceId" .=) <$> _sServiceId])
+
+-- | Encapsulation of billing information for a GCP Console project. A
+-- project has at most one associated billing account at a time (but a
+-- billing account can be assigned to multiple projects).
+--
+-- /See:/ 'projectBillingInfo' smart constructor.
+data ProjectBillingInfo = ProjectBillingInfo'
+    { _pbiName               :: !(Maybe Text)
+    , _pbiBillingAccountName :: !(Maybe Text)
+    , _pbiProjectId          :: !(Maybe Text)
+    , _pbiBillingEnabled     :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectBillingInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pbiName'
+--
+-- * 'pbiBillingAccountName'
+--
+-- * 'pbiProjectId'
+--
+-- * 'pbiBillingEnabled'
+projectBillingInfo
+    :: ProjectBillingInfo
+projectBillingInfo =
+    ProjectBillingInfo'
+    { _pbiName = Nothing
+    , _pbiBillingAccountName = Nothing
+    , _pbiProjectId = Nothing
+    , _pbiBillingEnabled = Nothing
+    }
+
+-- | The resource name for the \`ProjectBillingInfo\`; has the form
+-- \`projects\/{project_id}\/billingInfo\`. For example, the resource name
+-- for the billing information for project \`tokyo-rain-123\` would be
+-- \`projects\/tokyo-rain-123\/billingInfo\`. This field is read-only.
+pbiName :: Lens' ProjectBillingInfo (Maybe Text)
+pbiName = lens _pbiName (\ s a -> s{_pbiName = a})
+
+-- | The resource name of the billing account associated with the project, if
+-- any. For example, \`billingAccounts\/012345-567890-ABCDEF\`.
+pbiBillingAccountName :: Lens' ProjectBillingInfo (Maybe Text)
+pbiBillingAccountName
+  = lens _pbiBillingAccountName
+      (\ s a -> s{_pbiBillingAccountName = a})
+
+-- | The ID of the project that this \`ProjectBillingInfo\` represents, such
+-- as \`tokyo-rain-123\`. This is a convenience field so that you don\'t
+-- need to parse the \`name\` field to obtain a project ID. This field is
+-- read-only.
+pbiProjectId :: Lens' ProjectBillingInfo (Maybe Text)
+pbiProjectId
+  = lens _pbiProjectId (\ s a -> s{_pbiProjectId = a})
+
+-- | True if the project is associated with an open billing account, to which
+-- usage on the project is charged. False if the project is associated with
+-- a closed billing account, or no billing account at all, and therefore
+-- cannot use paid services. This field is read-only.
+pbiBillingEnabled :: Lens' ProjectBillingInfo (Maybe Bool)
+pbiBillingEnabled
+  = lens _pbiBillingEnabled
+      (\ s a -> s{_pbiBillingEnabled = a})
+
+instance FromJSON ProjectBillingInfo where
+        parseJSON
+          = withObject "ProjectBillingInfo"
+              (\ o ->
+                 ProjectBillingInfo' <$>
+                   (o .:? "name") <*> (o .:? "billingAccountName") <*>
+                     (o .:? "projectId")
+                     <*> (o .:? "billingEnabled"))
+
+instance ToJSON ProjectBillingInfo where
+        toJSON ProjectBillingInfo'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _pbiName,
+                  ("billingAccountName" .=) <$> _pbiBillingAccountName,
+                  ("projectId" .=) <$> _pbiProjectId,
+                  ("billingEnabled" .=) <$> _pbiBillingEnabled])
+
+-- | The price rate indicating starting usage and its corresponding price.
+--
+-- /See:/ 'tierRate' smart constructor.
+data TierRate = TierRate'
+    { _trUnitPrice        :: !(Maybe Money)
+    , _trStartUsageAmount :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TierRate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trUnitPrice'
+--
+-- * 'trStartUsageAmount'
+tierRate
+    :: TierRate
+tierRate =
+    TierRate'
+    { _trUnitPrice = Nothing
+    , _trStartUsageAmount = Nothing
+    }
+
+-- | The price per unit of usage. Example: unit_price of amount $10 indicates
+-- that each unit will cost $10.
+trUnitPrice :: Lens' TierRate (Maybe Money)
+trUnitPrice
+  = lens _trUnitPrice (\ s a -> s{_trUnitPrice = a})
+
+-- | Usage is priced at this rate only after this amount. Example:
+-- start_usage_amount of 10 indicates that the usage will be priced at the
+-- unit_price after the first 10 usage_units.
+trStartUsageAmount :: Lens' TierRate (Maybe Double)
+trStartUsageAmount
+  = lens _trStartUsageAmount
+      (\ s a -> s{_trStartUsageAmount = a})
+      . mapping _Coerce
+
+instance FromJSON TierRate where
+        parseJSON
+          = withObject "TierRate"
+              (\ o ->
+                 TierRate' <$>
+                   (o .:? "unitPrice") <*> (o .:? "startUsageAmount"))
+
+instance ToJSON TierRate where
+        toJSON TierRate'{..}
+          = object
+              (catMaybes
+                 [("unitPrice" .=) <$> _trUnitPrice,
+                  ("startUsageAmount" .=) <$> _trStartUsageAmount])
+
+-- | Represents an amount of money with its currency type.
+--
+-- /See:/ 'money' smart constructor.
+data Money = Money'
+    { _mCurrencyCode :: !(Maybe Text)
+    , _mNanos        :: !(Maybe (Textual Int32))
+    , _mUnits        :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Money' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mCurrencyCode'
+--
+-- * 'mNanos'
+--
+-- * 'mUnits'
+money
+    :: Money
+money =
+    Money'
+    { _mCurrencyCode = Nothing
+    , _mNanos = Nothing
+    , _mUnits = Nothing
+    }
+
+-- | The 3-letter currency code defined in ISO 4217.
+mCurrencyCode :: Lens' Money (Maybe Text)
+mCurrencyCode
+  = lens _mCurrencyCode
+      (\ s a -> s{_mCurrencyCode = a})
+
+-- | Number of nano (10^-9) units of the amount. The value must be between
+-- -999,999,999 and +999,999,999 inclusive. If \`units\` is positive,
+-- \`nanos\` must be positive or zero. If \`units\` is zero, \`nanos\` can
+-- be positive, zero, or negative. If \`units\` is negative, \`nanos\` must
+-- be negative or zero. For example $-1.75 is represented as \`units\`=-1
+-- and \`nanos\`=-750,000,000.
+mNanos :: Lens' Money (Maybe Int32)
+mNanos
+  = lens _mNanos (\ s a -> s{_mNanos = a}) .
+      mapping _Coerce
+
+-- | The whole units of the amount. For example if \`currencyCode\` is
+-- \`\"USD\"\`, then 1 unit is one US dollar.
+mUnits :: Lens' Money (Maybe Int64)
+mUnits
+  = lens _mUnits (\ s a -> s{_mUnits = a}) .
+      mapping _Coerce
+
+instance FromJSON Money where
+        parseJSON
+          = withObject "Money"
+              (\ o ->
+                 Money' <$>
+                   (o .:? "currencyCode") <*> (o .:? "nanos") <*>
+                     (o .:? "units"))
+
+instance ToJSON Money where
+        toJSON Money'{..}
+          = object
+              (catMaybes
+                 [("currencyCode" .=) <$> _mCurrencyCode,
+                  ("nanos" .=) <$> _mNanos, ("units" .=) <$> _mUnits])
+
+-- | Represents the category hierarchy of a SKU.
+--
+-- /See:/ 'category' smart constructor.
+data Category = Category'
+    { _cResourceFamily     :: !(Maybe Text)
+    , _cUsageType          :: !(Maybe Text)
+    , _cServiceDisplayName :: !(Maybe Text)
+    , _cResourceGroup      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Category' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cResourceFamily'
+--
+-- * 'cUsageType'
+--
+-- * 'cServiceDisplayName'
+--
+-- * 'cResourceGroup'
+category
+    :: Category
+category =
+    Category'
+    { _cResourceFamily = Nothing
+    , _cUsageType = Nothing
+    , _cServiceDisplayName = Nothing
+    , _cResourceGroup = Nothing
+    }
+
+-- | The type of product the SKU refers to. Example: \"Compute\",
+-- \"Storage\", \"Network\", \"ApplicationServices\" etc.
+cResourceFamily :: Lens' Category (Maybe Text)
+cResourceFamily
+  = lens _cResourceFamily
+      (\ s a -> s{_cResourceFamily = a})
+
+-- | Represents how the SKU is consumed. Example: \"OnDemand\",
+-- \"Preemptible\", \"Commit1Mo\", \"Commit1Yr\" etc.
+cUsageType :: Lens' Category (Maybe Text)
+cUsageType
+  = lens _cUsageType (\ s a -> s{_cUsageType = a})
+
+-- | The display name of the service this SKU belongs to.
+cServiceDisplayName :: Lens' Category (Maybe Text)
+cServiceDisplayName
+  = lens _cServiceDisplayName
+      (\ s a -> s{_cServiceDisplayName = a})
+
+-- | A group classification for related SKUs. Example: \"RAM\", \"GPU\",
+-- \"Prediction\", \"Ops\", \"GoogleEgress\" etc.
+cResourceGroup :: Lens' Category (Maybe Text)
+cResourceGroup
+  = lens _cResourceGroup
+      (\ s a -> s{_cResourceGroup = a})
+
+instance FromJSON Category where
+        parseJSON
+          = withObject "Category"
+              (\ o ->
+                 Category' <$>
+                   (o .:? "resourceFamily") <*> (o .:? "usageType") <*>
+                     (o .:? "serviceDisplayName")
+                     <*> (o .:? "resourceGroup"))
+
+instance ToJSON Category where
+        toJSON Category'{..}
+          = object
+              (catMaybes
+                 [("resourceFamily" .=) <$> _cResourceFamily,
+                  ("usageType" .=) <$> _cUsageType,
+                  ("serviceDisplayName" .=) <$> _cServiceDisplayName,
+                  ("resourceGroup" .=) <$> _cResourceGroup])
+
+-- | Request message for \`SetIamPolicy\` method.
+--
+-- /See:/ 'setIAMPolicyRequest' smart constructor.
+data SetIAMPolicyRequest = SetIAMPolicyRequest'
+    { _siprUpdateMask :: !(Maybe GFieldMask)
+    , _siprPolicy     :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siprUpdateMask'
+--
+-- * 'siprPolicy'
+setIAMPolicyRequest
+    :: SetIAMPolicyRequest
+setIAMPolicyRequest =
+    SetIAMPolicyRequest'
+    { _siprUpdateMask = Nothing
+    , _siprPolicy = Nothing
+    }
+
+-- | OPTIONAL: A FieldMask specifying which fields of the policy to modify.
+-- Only the fields in the mask will be modified. If no mask is provided,
+-- the following default mask is used: paths: \"bindings, etag\" This field
+-- is only used by Cloud IAM.
+siprUpdateMask :: Lens' SetIAMPolicyRequest (Maybe GFieldMask)
+siprUpdateMask
+  = lens _siprUpdateMask
+      (\ s a -> s{_siprUpdateMask = a})
+
+-- | REQUIRED: The complete policy to be applied to the \`resource\`. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is a
+-- valid policy but certain Cloud Platform services (such as Projects)
+-- might reject them.
+siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
+siprPolicy
+  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
+
+instance FromJSON SetIAMPolicyRequest where
+        parseJSON
+          = withObject "SetIAMPolicyRequest"
+              (\ o ->
+                 SetIAMPolicyRequest' <$>
+                   (o .:? "updateMask") <*> (o .:? "policy"))
+
+instance ToJSON SetIAMPolicyRequest where
+        toJSON SetIAMPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("updateMask" .=) <$> _siprUpdateMask,
+                  ("policy" .=) <$> _siprPolicy])
+
+-- | Request message for \`ListProjectBillingInfoResponse\`.
+--
+-- /See:/ 'listProjectBillingInfoResponse' smart constructor.
+data ListProjectBillingInfoResponse = ListProjectBillingInfoResponse'
+    { _lpbirNextPageToken      :: !(Maybe Text)
+    , _lpbirProjectBillingInfo :: !(Maybe [ProjectBillingInfo])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListProjectBillingInfoResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpbirNextPageToken'
+--
+-- * 'lpbirProjectBillingInfo'
+listProjectBillingInfoResponse
+    :: ListProjectBillingInfoResponse
+listProjectBillingInfoResponse =
+    ListProjectBillingInfoResponse'
+    { _lpbirNextPageToken = Nothing
+    , _lpbirProjectBillingInfo = Nothing
+    }
+
+-- | A token to retrieve the next page of results. To retrieve the next page,
+-- call \`ListProjectBillingInfo\` again with the \`page_token\` field set
+-- to this value. This field is empty if there are no more results to
+-- retrieve.
+lpbirNextPageToken :: Lens' ListProjectBillingInfoResponse (Maybe Text)
+lpbirNextPageToken
+  = lens _lpbirNextPageToken
+      (\ s a -> s{_lpbirNextPageToken = a})
+
+-- | A list of \`ProjectBillingInfo\` resources representing the projects
+-- associated with the billing account.
+lpbirProjectBillingInfo :: Lens' ListProjectBillingInfoResponse [ProjectBillingInfo]
+lpbirProjectBillingInfo
+  = lens _lpbirProjectBillingInfo
+      (\ s a -> s{_lpbirProjectBillingInfo = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListProjectBillingInfoResponse
+         where
+        parseJSON
+          = withObject "ListProjectBillingInfoResponse"
+              (\ o ->
+                 ListProjectBillingInfoResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "projectBillingInfo" .!= mempty))
+
+instance ToJSON ListProjectBillingInfoResponse where
+        toJSON ListProjectBillingInfoResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lpbirNextPageToken,
+                  ("projectBillingInfo" .=) <$>
+                    _lpbirProjectBillingInfo])
+
+-- | Response message for \`ListSkus\`.
+--
+-- /See:/ 'listSKUsResponse' smart constructor.
+data ListSKUsResponse = ListSKUsResponse'
+    { _lskurNextPageToken :: !(Maybe Text)
+    , _lskurSKUs          :: !(Maybe [SKU])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListSKUsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lskurNextPageToken'
+--
+-- * 'lskurSKUs'
+listSKUsResponse
+    :: ListSKUsResponse
+listSKUsResponse =
+    ListSKUsResponse'
+    { _lskurNextPageToken = Nothing
+    , _lskurSKUs = Nothing
+    }
+
+-- | A token to retrieve the next page of results. To retrieve the next page,
+-- call \`ListSkus\` again with the \`page_token\` field set to this value.
+-- This field is empty if there are no more results to retrieve.
+lskurNextPageToken :: Lens' ListSKUsResponse (Maybe Text)
+lskurNextPageToken
+  = lens _lskurNextPageToken
+      (\ s a -> s{_lskurNextPageToken = a})
+
+-- | The list of public SKUs of the given service.
+lskurSKUs :: Lens' ListSKUsResponse [SKU]
+lskurSKUs
+  = lens _lskurSKUs (\ s a -> s{_lskurSKUs = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListSKUsResponse where
+        parseJSON
+          = withObject "ListSKUsResponse"
+              (\ o ->
+                 ListSKUsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "skus" .!= mempty))
+
+instance ToJSON ListSKUsResponse where
+        toJSON ListSKUsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lskurNextPageToken,
+                  ("skus" .=) <$> _lskurSKUs])
+
+-- | Expresses a mathematical pricing formula. For Example:- \`usage_unit:
+-- GBy\` \`tiered_rates:\` \`[start_usage_amount: 20, unit_price: $10]\`
+-- \`[start_usage_amount: 100, unit_price: $5]\` The above expresses a
+-- pricing formula where the first 20GB is free, the next 80GB is priced at
+-- $10 per GB followed by $5 per GB for additional usage.
+--
+-- /See:/ 'pricingExpression' smart constructor.
+data PricingExpression = PricingExpression'
+    { _peUsageUnitDescription     :: !(Maybe Text)
+    , _peBaseUnit                 :: !(Maybe Text)
+    , _peBaseUnitConversionFactor :: !(Maybe (Textual Double))
+    , _peDisplayQuantity          :: !(Maybe (Textual Double))
+    , _peTieredRates              :: !(Maybe [TierRate])
+    , _peBaseUnitDescription      :: !(Maybe Text)
+    , _peUsageUnit                :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PricingExpression' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'peUsageUnitDescription'
+--
+-- * 'peBaseUnit'
+--
+-- * 'peBaseUnitConversionFactor'
+--
+-- * 'peDisplayQuantity'
+--
+-- * 'peTieredRates'
+--
+-- * 'peBaseUnitDescription'
+--
+-- * 'peUsageUnit'
+pricingExpression
+    :: PricingExpression
+pricingExpression =
+    PricingExpression'
+    { _peUsageUnitDescription = Nothing
+    , _peBaseUnit = Nothing
+    , _peBaseUnitConversionFactor = Nothing
+    , _peDisplayQuantity = Nothing
+    , _peTieredRates = Nothing
+    , _peBaseUnitDescription = Nothing
+    , _peUsageUnit = Nothing
+    }
+
+-- | The unit of usage in human readable form. Example: \"gibi byte\".
+peUsageUnitDescription :: Lens' PricingExpression (Maybe Text)
+peUsageUnitDescription
+  = lens _peUsageUnitDescription
+      (\ s a -> s{_peUsageUnitDescription = a})
+
+-- | The base unit for the SKU which is the unit used in usage exports.
+-- Example: \"By\"
+peBaseUnit :: Lens' PricingExpression (Maybe Text)
+peBaseUnit
+  = lens _peBaseUnit (\ s a -> s{_peBaseUnit = a})
+
+-- | Conversion factor for converting from price per usage_unit to price per
+-- base_unit, and start_usage_amount to start_usage_amount in base_unit.
+-- unit_price \/ base_unit_conversion_factor = price per base_unit.
+-- start_usage_amount * base_unit_conversion_factor = start_usage_amount in
+-- base_unit.
+peBaseUnitConversionFactor :: Lens' PricingExpression (Maybe Double)
+peBaseUnitConversionFactor
+  = lens _peBaseUnitConversionFactor
+      (\ s a -> s{_peBaseUnitConversionFactor = a})
+      . mapping _Coerce
+
+-- | The recommended quantity of units for displaying pricing info. When
+-- displaying pricing info it is recommended to display: (unit_price *
+-- display_quantity) per display_quantity usage_unit. This field does not
+-- affect the pricing formula and is for display purposes only. Example: If
+-- the unit_price is \"0.0001 USD\", the usage_unit is \"GB\" and the
+-- display_quantity is \"1000\" then the recommended way of displaying the
+-- pricing info is \"0.10 USD per 1000 GB\"
+peDisplayQuantity :: Lens' PricingExpression (Maybe Double)
+peDisplayQuantity
+  = lens _peDisplayQuantity
+      (\ s a -> s{_peDisplayQuantity = a})
+      . mapping _Coerce
+
+-- | The list of tiered rates for this pricing. The total cost is computed by
+-- applying each of the tiered rates on usage. This repeated list is sorted
+-- by ascending order of start_usage_amount.
+peTieredRates :: Lens' PricingExpression [TierRate]
+peTieredRates
+  = lens _peTieredRates
+      (\ s a -> s{_peTieredRates = a})
+      . _Default
+      . _Coerce
+
+-- | The base unit in human readable form. Example: \"byte\".
+peBaseUnitDescription :: Lens' PricingExpression (Maybe Text)
+peBaseUnitDescription
+  = lens _peBaseUnitDescription
+      (\ s a -> s{_peBaseUnitDescription = a})
+
+-- | The short hand for unit of usage this pricing is specified in. Example:
+-- usage_unit of \"GiBy\" means that usage is specified in \"Gibi Byte\".
+peUsageUnit :: Lens' PricingExpression (Maybe Text)
+peUsageUnit
+  = lens _peUsageUnit (\ s a -> s{_peUsageUnit = a})
+
+instance FromJSON PricingExpression where
+        parseJSON
+          = withObject "PricingExpression"
+              (\ o ->
+                 PricingExpression' <$>
+                   (o .:? "usageUnitDescription") <*> (o .:? "baseUnit")
+                     <*> (o .:? "baseUnitConversionFactor")
+                     <*> (o .:? "displayQuantity")
+                     <*> (o .:? "tieredRates" .!= mempty)
+                     <*> (o .:? "baseUnitDescription")
+                     <*> (o .:? "usageUnit"))
+
+instance ToJSON PricingExpression where
+        toJSON PricingExpression'{..}
+          = object
+              (catMaybes
+                 [("usageUnitDescription" .=) <$>
+                    _peUsageUnitDescription,
+                  ("baseUnit" .=) <$> _peBaseUnit,
+                  ("baseUnitConversionFactor" .=) <$>
+                    _peBaseUnitConversionFactor,
+                  ("displayQuantity" .=) <$> _peDisplayQuantity,
+                  ("tieredRates" .=) <$> _peTieredRates,
+                  ("baseUnitDescription" .=) <$>
+                    _peBaseUnitDescription,
+                  ("usageUnit" .=) <$> _peUsageUnit])
+
+-- | Request message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsRequest' smart constructor.
+newtype TestIAMPermissionsRequest = TestIAMPermissionsRequest'
+    { _tiprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiprPermissions'
+testIAMPermissionsRequest
+    :: TestIAMPermissionsRequest
+testIAMPermissionsRequest =
+    TestIAMPermissionsRequest'
+    { _tiprPermissions = Nothing
+    }
+
+-- | The set of permissions to check for the \`resource\`. Permissions with
+-- wildcards (such as \'*\' or \'storage.*\') are not allowed. For more
+-- information see [IAM
+-- Overview](https:\/\/cloud.google.com\/iam\/docs\/overview#permissions).
+tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
+tiprPermissions
+  = lens _tiprPermissions
+      (\ s a -> s{_tiprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsRequest where
+        parseJSON
+          = withObject "TestIAMPermissionsRequest"
+              (\ o ->
+                 TestIAMPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsRequest where
+        toJSON TestIAMPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tiprPermissions])
+
+-- | Represents the aggregation level and interval for pricing of a single
+-- SKU.
+--
+-- /See:/ 'aggregationInfo' smart constructor.
+data AggregationInfo = AggregationInfo'
+    { _aiAggregationInterval :: !(Maybe AggregationInfoAggregationInterval)
+    , _aiAggregationCount    :: !(Maybe (Textual Int32))
+    , _aiAggregationLevel    :: !(Maybe AggregationInfoAggregationLevel)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AggregationInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiAggregationInterval'
+--
+-- * 'aiAggregationCount'
+--
+-- * 'aiAggregationLevel'
+aggregationInfo
+    :: AggregationInfo
+aggregationInfo =
+    AggregationInfo'
+    { _aiAggregationInterval = Nothing
+    , _aiAggregationCount = Nothing
+    , _aiAggregationLevel = Nothing
+    }
+
+aiAggregationInterval :: Lens' AggregationInfo (Maybe AggregationInfoAggregationInterval)
+aiAggregationInterval
+  = lens _aiAggregationInterval
+      (\ s a -> s{_aiAggregationInterval = a})
+
+-- | The number of intervals to aggregate over. Example: If aggregation_level
+-- is \"DAILY\" and aggregation_count is 14, aggregation will be over 14
+-- days.
+aiAggregationCount :: Lens' AggregationInfo (Maybe Int32)
+aiAggregationCount
+  = lens _aiAggregationCount
+      (\ s a -> s{_aiAggregationCount = a})
+      . mapping _Coerce
+
+aiAggregationLevel :: Lens' AggregationInfo (Maybe AggregationInfoAggregationLevel)
+aiAggregationLevel
+  = lens _aiAggregationLevel
+      (\ s a -> s{_aiAggregationLevel = a})
+
+instance FromJSON AggregationInfo where
+        parseJSON
+          = withObject "AggregationInfo"
+              (\ o ->
+                 AggregationInfo' <$>
+                   (o .:? "aggregationInterval") <*>
+                     (o .:? "aggregationCount")
+                     <*> (o .:? "aggregationLevel"))
+
+instance ToJSON AggregationInfo where
+        toJSON AggregationInfo'{..}
+          = object
+              (catMaybes
+                 [("aggregationInterval" .=) <$>
+                    _aiAggregationInterval,
+                  ("aggregationCount" .=) <$> _aiAggregationCount,
+                  ("aggregationLevel" .=) <$> _aiAggregationLevel])
+
+-- | Encapsulates a single SKU in Google Cloud Platform
+--
+-- /See:/ 'sKU' smart constructor.
+data SKU = SKU'
+    { _skukCategory            :: !(Maybe Category)
+    , _skukSKUId               :: !(Maybe Text)
+    , _skukServiceProviderName :: !(Maybe Text)
+    , _skukServiceRegions      :: !(Maybe [Text])
+    , _skukName                :: !(Maybe Text)
+    , _skukPricingInfo         :: !(Maybe [PricingInfo])
+    , _skukDescription         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SKU' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'skukCategory'
+--
+-- * 'skukSKUId'
+--
+-- * 'skukServiceProviderName'
+--
+-- * 'skukServiceRegions'
+--
+-- * 'skukName'
+--
+-- * 'skukPricingInfo'
+--
+-- * 'skukDescription'
+sKU
+    :: SKU
+sKU =
+    SKU'
+    { _skukCategory = Nothing
+    , _skukSKUId = Nothing
+    , _skukServiceProviderName = Nothing
+    , _skukServiceRegions = Nothing
+    , _skukName = Nothing
+    , _skukPricingInfo = Nothing
+    , _skukDescription = Nothing
+    }
+
+-- | The category hierarchy of this SKU, purely for organizational purpose.
+skukCategory :: Lens' SKU (Maybe Category)
+skukCategory
+  = lens _skukCategory (\ s a -> s{_skukCategory = a})
+
+-- | The identifier for the SKU. Example: \"AA95-CD31-42FE\"
+skukSKUId :: Lens' SKU (Maybe Text)
+skukSKUId
+  = lens _skukSKUId (\ s a -> s{_skukSKUId = a})
+
+-- | Identifies the service provider. This is \'Google\' for first party
+-- services in Google Cloud Platform.
+skukServiceProviderName :: Lens' SKU (Maybe Text)
+skukServiceProviderName
+  = lens _skukServiceProviderName
+      (\ s a -> s{_skukServiceProviderName = a})
+
+-- | List of service regions this SKU is offered at. Example: \"asia-east1\"
+-- Service regions can be found at
+-- https:\/\/cloud.google.com\/about\/locations\/
+skukServiceRegions :: Lens' SKU [Text]
+skukServiceRegions
+  = lens _skukServiceRegions
+      (\ s a -> s{_skukServiceRegions = a})
+      . _Default
+      . _Coerce
+
+-- | The resource name for the SKU. Example:
+-- \"services\/DA34-426B-A397\/skus\/AA95-CD31-42FE\"
+skukName :: Lens' SKU (Maybe Text)
+skukName = lens _skukName (\ s a -> s{_skukName = a})
+
+-- | A timeline of pricing info for this SKU in chronological order.
+skukPricingInfo :: Lens' SKU [PricingInfo]
+skukPricingInfo
+  = lens _skukPricingInfo
+      (\ s a -> s{_skukPricingInfo = a})
+      . _Default
+      . _Coerce
+
+-- | A human readable description of the SKU, has a maximum length of 256
+-- characters.
+skukDescription :: Lens' SKU (Maybe Text)
+skukDescription
+  = lens _skukDescription
+      (\ s a -> s{_skukDescription = a})
+
+instance FromJSON SKU where
+        parseJSON
+          = withObject "SKU"
+              (\ o ->
+                 SKU' <$>
+                   (o .:? "category") <*> (o .:? "skuId") <*>
+                     (o .:? "serviceProviderName")
+                     <*> (o .:? "serviceRegions" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "pricingInfo" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON SKU where
+        toJSON SKU'{..}
+          = object
+              (catMaybes
+                 [("category" .=) <$> _skukCategory,
+                  ("skuId" .=) <$> _skukSKUId,
+                  ("serviceProviderName" .=) <$>
+                    _skukServiceProviderName,
+                  ("serviceRegions" .=) <$> _skukServiceRegions,
+                  ("name" .=) <$> _skukName,
+                  ("pricingInfo" .=) <$> _skukPricingInfo,
+                  ("description" .=) <$> _skukDescription])
+
+-- | Response message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsResponse' smart constructor.
+newtype TestIAMPermissionsResponse = TestIAMPermissionsResponse'
+    { _tiamprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiamprPermissions'
+testIAMPermissionsResponse
+    :: TestIAMPermissionsResponse
+testIAMPermissionsResponse =
+    TestIAMPermissionsResponse'
+    { _tiamprPermissions = Nothing
+    }
+
+-- | A subset of \`TestPermissionsRequest.permissions\` that the caller is
+-- allowed.
+tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
+tiamprPermissions
+  = lens _tiamprPermissions
+      (\ s a -> s{_tiamprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsResponse where
+        parseJSON
+          = withObject "TestIAMPermissionsResponse"
+              (\ o ->
+                 TestIAMPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsResponse where
+        toJSON TestIAMPermissionsResponse'{..}
+          = object
+              (catMaybes
+                 [("permissions" .=) <$> _tiamprPermissions])
+
+-- | Defines an Identity and Access Management (IAM) policy. It is used to
+-- specify access control policies for Cloud Platform resources. A
+-- \`Policy\` consists of a list of \`bindings\`. A \`binding\` binds a
+-- list of \`members\` to a \`role\`, where the members can be user
+-- accounts, Google groups, Google domains, and service accounts. A
+-- \`role\` is a named list of permissions defined by IAM. **JSON Example**
+-- { \"bindings\": [ { \"role\": \"roles\/owner\", \"members\": [
+-- \"user:mike\'example.com\", \"group:admins\'example.com\",
+-- \"domain:google.com\",
+-- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
+-- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
+-- ] } **YAML Example** bindings: - members: - user:mike\'example.com -
+-- group:admins\'example.com - domain:google.com -
+-- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
+-- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
+-- a description of IAM and its features, see the [IAM developer\'s
+-- guide](https:\/\/cloud.google.com\/iam\/docs).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy = Policy'
+    { _pAuditConfigs :: !(Maybe [AuditConfig])
+    , _pEtag         :: !(Maybe Bytes)
+    , _pVersion      :: !(Maybe (Textual Int32))
+    , _pBindings     :: !(Maybe [Binding])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pAuditConfigs'
+--
+-- * 'pEtag'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+policy
+    :: Policy
+policy =
+    Policy'
+    { _pAuditConfigs = Nothing
+    , _pEtag = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    }
+
+-- | Specifies cloud audit logging configuration for this policy.
+pAuditConfigs :: Lens' Policy [AuditConfig]
+pAuditConfigs
+  = lens _pAuditConfigs
+      (\ s a -> s{_pAuditConfigs = a})
+      . _Default
+      . _Coerce
+
+-- | \`etag\` is used for optimistic concurrency control as a way to help
+-- prevent simultaneous updates of a policy from overwriting each other. It
+-- is strongly suggested that systems make use of the \`etag\` in the
+-- read-modify-write cycle to perform policy updates in order to avoid race
+-- conditions: An \`etag\` is returned in the response to \`getIamPolicy\`,
+-- and systems are expected to put that etag in the request to
+-- \`setIamPolicy\` to ensure that their change will be applied to the same
+-- version of the policy. If no \`etag\` is provided in the call to
+-- \`setIamPolicy\`, then the existing policy is overwritten blindly.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of \`members\` to a \`role\`. \`bindings\` with no
+-- members will result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "auditConfigs" .!= mempty) <*> (o .:? "etag")
+                     <*> (o .:? "version")
+                     <*> (o .:? "bindings" .!= mempty))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("auditConfigs" .=) <$> _pAuditConfigs,
+                  ("etag" .=) <$> _pEtag, ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings])
+
+-- | Response message for \`ListBillingAccounts\`.
+--
+-- /See:/ 'listBillingAccountsResponse' smart constructor.
+data ListBillingAccountsResponse = ListBillingAccountsResponse'
+    { _lbarNextPageToken   :: !(Maybe Text)
+    , _lbarBillingAccounts :: !(Maybe [BillingAccount])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListBillingAccountsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbarNextPageToken'
+--
+-- * 'lbarBillingAccounts'
+listBillingAccountsResponse
+    :: ListBillingAccountsResponse
+listBillingAccountsResponse =
+    ListBillingAccountsResponse'
+    { _lbarNextPageToken = Nothing
+    , _lbarBillingAccounts = Nothing
+    }
+
+-- | A token to retrieve the next page of results. To retrieve the next page,
+-- call \`ListBillingAccounts\` again with the \`page_token\` field set to
+-- this value. This field is empty if there are no more results to
+-- retrieve.
+lbarNextPageToken :: Lens' ListBillingAccountsResponse (Maybe Text)
+lbarNextPageToken
+  = lens _lbarNextPageToken
+      (\ s a -> s{_lbarNextPageToken = a})
+
+-- | A list of billing accounts.
+lbarBillingAccounts :: Lens' ListBillingAccountsResponse [BillingAccount]
+lbarBillingAccounts
+  = lens _lbarBillingAccounts
+      (\ s a -> s{_lbarBillingAccounts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListBillingAccountsResponse where
+        parseJSON
+          = withObject "ListBillingAccountsResponse"
+              (\ o ->
+                 ListBillingAccountsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "billingAccounts" .!= mempty))
+
+instance ToJSON ListBillingAccountsResponse where
+        toJSON ListBillingAccountsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lbarNextPageToken,
+                  ("billingAccounts" .=) <$> _lbarBillingAccounts])
+
+-- | Provides the configuration for logging a type of permissions. Example: {
+-- \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", } ] } This enables \'DATA_READ\' and \'DATA_WRITE\'
+-- logging, while exempting foo\'gmail.com from DATA_READ logging.
+--
+-- /See:/ 'auditLogConfig' smart constructor.
+data AuditLogConfig = AuditLogConfig'
+    { _alcLogType         :: !(Maybe AuditLogConfigLogType)
+    , _alcExemptedMembers :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditLogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alcLogType'
+--
+-- * 'alcExemptedMembers'
+auditLogConfig
+    :: AuditLogConfig
+auditLogConfig =
+    AuditLogConfig'
+    { _alcLogType = Nothing
+    , _alcExemptedMembers = Nothing
+    }
+
+-- | The log type that this config enables.
+alcLogType :: Lens' AuditLogConfig (Maybe AuditLogConfigLogType)
+alcLogType
+  = lens _alcLogType (\ s a -> s{_alcLogType = a})
+
+-- | Specifies the identities that do not cause logging for this type of
+-- permission. Follows the same format of Binding.members.
+alcExemptedMembers :: Lens' AuditLogConfig [Text]
+alcExemptedMembers
+  = lens _alcExemptedMembers
+      (\ s a -> s{_alcExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditLogConfig where
+        parseJSON
+          = withObject "AuditLogConfig"
+              (\ o ->
+                 AuditLogConfig' <$>
+                   (o .:? "logType") <*>
+                     (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditLogConfig where
+        toJSON AuditLogConfig'{..}
+          = object
+              (catMaybes
+                 [("logType" .=) <$> _alcLogType,
+                  ("exemptedMembers" .=) <$> _alcExemptedMembers])
+
+-- | Represents the pricing information for a SKU at a single point of time.
+--
+-- /See:/ 'pricingInfo' smart constructor.
+data PricingInfo = PricingInfo'
+    { _piSummary                :: !(Maybe Text)
+    , _piAggregationInfo        :: !(Maybe AggregationInfo)
+    , _piPricingExpression      :: !(Maybe PricingExpression)
+    , _piCurrencyConversionRate :: !(Maybe (Textual Double))
+    , _piEffectiveTime          :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PricingInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piSummary'
+--
+-- * 'piAggregationInfo'
+--
+-- * 'piPricingExpression'
+--
+-- * 'piCurrencyConversionRate'
+--
+-- * 'piEffectiveTime'
+pricingInfo
+    :: PricingInfo
+pricingInfo =
+    PricingInfo'
+    { _piSummary = Nothing
+    , _piAggregationInfo = Nothing
+    , _piPricingExpression = Nothing
+    , _piCurrencyConversionRate = Nothing
+    , _piEffectiveTime = Nothing
+    }
+
+-- | An optional human readable summary of the pricing information, has a
+-- maximum length of 256 characters.
+piSummary :: Lens' PricingInfo (Maybe Text)
+piSummary
+  = lens _piSummary (\ s a -> s{_piSummary = a})
+
+-- | Aggregation Info. This can be left unspecified if the pricing expression
+-- doesn\'t require aggregation.
+piAggregationInfo :: Lens' PricingInfo (Maybe AggregationInfo)
+piAggregationInfo
+  = lens _piAggregationInfo
+      (\ s a -> s{_piAggregationInfo = a})
+
+-- | Expresses the pricing formula. See \`PricingExpression\` for an example.
+piPricingExpression :: Lens' PricingInfo (Maybe PricingExpression)
+piPricingExpression
+  = lens _piPricingExpression
+      (\ s a -> s{_piPricingExpression = a})
+
+-- | Conversion rate used for currency conversion, from USD to the currency
+-- specified in the request. This includes any surcharge collected for
+-- billing in non USD currency. If a currency is not specified in the
+-- request this defaults to 1.0. Example: USD * currency_conversion_rate =
+-- JPY
+piCurrencyConversionRate :: Lens' PricingInfo (Maybe Double)
+piCurrencyConversionRate
+  = lens _piCurrencyConversionRate
+      (\ s a -> s{_piCurrencyConversionRate = a})
+      . mapping _Coerce
+
+-- | The timestamp from which this pricing was effective within the requested
+-- time range. This is guaranteed to be greater than or equal to the
+-- start_time field in the request and less than the end_time field in the
+-- request. If a time range was not specified in the request this field
+-- will be equivalent to a time within the last 12 hours, indicating the
+-- latest pricing info.
+piEffectiveTime :: Lens' PricingInfo (Maybe UTCTime)
+piEffectiveTime
+  = lens _piEffectiveTime
+      (\ s a -> s{_piEffectiveTime = a})
+      . mapping _DateTime
+
+instance FromJSON PricingInfo where
+        parseJSON
+          = withObject "PricingInfo"
+              (\ o ->
+                 PricingInfo' <$>
+                   (o .:? "summary") <*> (o .:? "aggregationInfo") <*>
+                     (o .:? "pricingExpression")
+                     <*> (o .:? "currencyConversionRate")
+                     <*> (o .:? "effectiveTime"))
+
+instance ToJSON PricingInfo where
+        toJSON PricingInfo'{..}
+          = object
+              (catMaybes
+                 [("summary" .=) <$> _piSummary,
+                  ("aggregationInfo" .=) <$> _piAggregationInfo,
+                  ("pricingExpression" .=) <$> _piPricingExpression,
+                  ("currencyConversionRate" .=) <$>
+                    _piCurrencyConversionRate,
+                  ("effectiveTime" .=) <$> _piEffectiveTime])
+
+-- | Associates \`members\` with a \`role\`.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding = Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+    Binding'
+    { _bMembers = Nothing
+    , _bRole = Nothing
+    , _bCondition = Nothing
+    }
+
+-- | Specifies the identities requesting access for a Cloud Platform
+-- resource. \`members\` can have the following values: * \`allUsers\`: A
+-- special identifier that represents anyone who is on the internet; with
+-- or without a Google account. * \`allAuthenticatedUsers\`: A special
+-- identifier that represents anyone who is authenticated with a Google
+-- account or a service account. * \`user:{emailid}\`: An email address
+-- that represents a specific Google account. For example,
+-- \`alice\'gmail.com\` . * \`serviceAccount:{emailid}\`: An email address
+-- that represents a service account. For example,
+-- \`my-other-app\'appspot.gserviceaccount.com\`. * \`group:{emailid}\`: An
+-- email address that represents a Google group. For example,
+-- \`admins\'example.com\`. * \`domain:{domain}\`: A Google Apps domain
+-- name that represents all the users of that domain. For example,
+-- \`google.com\` or \`example.com\`.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to \`members\`. For example, \`roles\/viewer\`,
+-- \`roles\/editor\`, or \`roles\/owner\`.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | Unimplemented. The condition that is associated with this binding. NOTE:
+-- an unsatisfied condition will not allow user access via current binding.
+-- Different bindings, including their conditions, are examined
+-- independently.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
diff --git a/gen/Network/Google/Billing/Types/Sum.hs b/gen/Network/Google/Billing/Types/Sum.hs
--- a/gen/Network/Google/Billing/Types/Sum.hs
+++ b/gen/Network/Google/Billing/Types/Sum.hs
@@ -16,4 +16,132 @@
 --
 module Network.Google.Billing.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
+
+data AggregationInfoAggregationLevel
+    = AggregationLevelUnspecified
+      -- ^ @AGGREGATION_LEVEL_UNSPECIFIED@
+    | Account
+      -- ^ @ACCOUNT@
+    | Project
+      -- ^ @PROJECT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AggregationInfoAggregationLevel
+
+instance FromHttpApiData AggregationInfoAggregationLevel where
+    parseQueryParam = \case
+        "AGGREGATION_LEVEL_UNSPECIFIED" -> Right AggregationLevelUnspecified
+        "ACCOUNT" -> Right Account
+        "PROJECT" -> Right Project
+        x -> Left ("Unable to parse AggregationInfoAggregationLevel from: " <> x)
+
+instance ToHttpApiData AggregationInfoAggregationLevel where
+    toQueryParam = \case
+        AggregationLevelUnspecified -> "AGGREGATION_LEVEL_UNSPECIFIED"
+        Account -> "ACCOUNT"
+        Project -> "PROJECT"
+
+instance FromJSON AggregationInfoAggregationLevel where
+    parseJSON = parseJSONText "AggregationInfoAggregationLevel"
+
+instance ToJSON AggregationInfoAggregationLevel where
+    toJSON = toJSONText
+
+-- | The log type that this config enables.
+data AuditLogConfigLogType
+    = LogTypeUnspecified
+      -- ^ @LOG_TYPE_UNSPECIFIED@
+      -- Default case. Should never be this.
+    | AdminRead
+      -- ^ @ADMIN_READ@
+      -- Admin reads. Example: CloudIAM getIamPolicy
+    | DataWrite
+      -- ^ @DATA_WRITE@
+      -- Data writes. Example: CloudSQL Users create
+    | DataRead
+      -- ^ @DATA_READ@
+      -- Data reads. Example: CloudSQL Users list
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuditLogConfigLogType
+
+instance FromHttpApiData AuditLogConfigLogType where
+    parseQueryParam = \case
+        "LOG_TYPE_UNSPECIFIED" -> Right LogTypeUnspecified
+        "ADMIN_READ" -> Right AdminRead
+        "DATA_WRITE" -> Right DataWrite
+        "DATA_READ" -> Right DataRead
+        x -> Left ("Unable to parse AuditLogConfigLogType from: " <> x)
+
+instance ToHttpApiData AuditLogConfigLogType where
+    toQueryParam = \case
+        LogTypeUnspecified -> "LOG_TYPE_UNSPECIFIED"
+        AdminRead -> "ADMIN_READ"
+        DataWrite -> "DATA_WRITE"
+        DataRead -> "DATA_READ"
+
+instance FromJSON AuditLogConfigLogType where
+    parseJSON = parseJSONText "AuditLogConfigLogType"
+
+instance ToJSON AuditLogConfigLogType where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+data AggregationInfoAggregationInterval
+    = AggregationIntervalUnspecified
+      -- ^ @AGGREGATION_INTERVAL_UNSPECIFIED@
+    | Daily
+      -- ^ @DAILY@
+    | Monthly
+      -- ^ @MONTHLY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AggregationInfoAggregationInterval
+
+instance FromHttpApiData AggregationInfoAggregationInterval where
+    parseQueryParam = \case
+        "AGGREGATION_INTERVAL_UNSPECIFIED" -> Right AggregationIntervalUnspecified
+        "DAILY" -> Right Daily
+        "MONTHLY" -> Right Monthly
+        x -> Left ("Unable to parse AggregationInfoAggregationInterval from: " <> x)
+
+instance ToHttpApiData AggregationInfoAggregationInterval where
+    toQueryParam = \case
+        AggregationIntervalUnspecified -> "AGGREGATION_INTERVAL_UNSPECIFIED"
+        Daily -> "DAILY"
+        Monthly -> "MONTHLY"
+
+instance FromJSON AggregationInfoAggregationInterval where
+    parseJSON = parseJSONText "AggregationInfoAggregationInterval"
+
+instance ToJSON AggregationInfoAggregationInterval where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Create.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Create.hs
@@ -0,0 +1,163 @@
+{-# 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.CloudBilling.BillingAccounts.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a billing account. This method can only be used to create
+-- [billing
+-- subaccounts](https:\/\/cloud.google.com\/billing\/docs\/concepts) by GCP
+-- resellers. When creating a subaccount, the current authenticated user
+-- must have the \`billing.accounts.update\` IAM permission on the master
+-- account, which is typically given to billing account
+-- [administrators](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+-- This method will return an error if the master account has not been
+-- provisioned as a reseller account.
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.create@.
+module Network.Google.Resource.CloudBilling.BillingAccounts.Create
+    (
+    -- * REST Resource
+      BillingAccountsCreateResource
+
+    -- * Creating a Request
+    , billingAccountsCreate
+    , BillingAccountsCreate
+
+    -- * Request Lenses
+    , bacXgafv
+    , bacUploadProtocol
+    , bacAccessToken
+    , bacUploadType
+    , bacPayload
+    , bacCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.billingAccounts.create@ method which the
+-- 'BillingAccountsCreate' request conforms to.
+type BillingAccountsCreateResource =
+     "v1" :>
+       "billingAccounts" :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] BillingAccount :>
+                       Post '[JSON] BillingAccount
+
+-- | Creates a billing account. This method can only be used to create
+-- [billing
+-- subaccounts](https:\/\/cloud.google.com\/billing\/docs\/concepts) by GCP
+-- resellers. When creating a subaccount, the current authenticated user
+-- must have the \`billing.accounts.update\` IAM permission on the master
+-- account, which is typically given to billing account
+-- [administrators](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+-- This method will return an error if the master account has not been
+-- provisioned as a reseller account.
+--
+-- /See:/ 'billingAccountsCreate' smart constructor.
+data BillingAccountsCreate = BillingAccountsCreate'
+    { _bacXgafv          :: !(Maybe Xgafv)
+    , _bacUploadProtocol :: !(Maybe Text)
+    , _bacAccessToken    :: !(Maybe Text)
+    , _bacUploadType     :: !(Maybe Text)
+    , _bacPayload        :: !BillingAccount
+    , _bacCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccountsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bacXgafv'
+--
+-- * 'bacUploadProtocol'
+--
+-- * 'bacAccessToken'
+--
+-- * 'bacUploadType'
+--
+-- * 'bacPayload'
+--
+-- * 'bacCallback'
+billingAccountsCreate
+    :: BillingAccount -- ^ 'bacPayload'
+    -> BillingAccountsCreate
+billingAccountsCreate pBacPayload_ =
+    BillingAccountsCreate'
+    { _bacXgafv = Nothing
+    , _bacUploadProtocol = Nothing
+    , _bacAccessToken = Nothing
+    , _bacUploadType = Nothing
+    , _bacPayload = pBacPayload_
+    , _bacCallback = Nothing
+    }
+
+-- | V1 error format.
+bacXgafv :: Lens' BillingAccountsCreate (Maybe Xgafv)
+bacXgafv = lens _bacXgafv (\ s a -> s{_bacXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+bacUploadProtocol :: Lens' BillingAccountsCreate (Maybe Text)
+bacUploadProtocol
+  = lens _bacUploadProtocol
+      (\ s a -> s{_bacUploadProtocol = a})
+
+-- | OAuth access token.
+bacAccessToken :: Lens' BillingAccountsCreate (Maybe Text)
+bacAccessToken
+  = lens _bacAccessToken
+      (\ s a -> s{_bacAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+bacUploadType :: Lens' BillingAccountsCreate (Maybe Text)
+bacUploadType
+  = lens _bacUploadType
+      (\ s a -> s{_bacUploadType = a})
+
+-- | Multipart request metadata.
+bacPayload :: Lens' BillingAccountsCreate BillingAccount
+bacPayload
+  = lens _bacPayload (\ s a -> s{_bacPayload = a})
+
+-- | JSONP
+bacCallback :: Lens' BillingAccountsCreate (Maybe Text)
+bacCallback
+  = lens _bacCallback (\ s a -> s{_bacCallback = a})
+
+instance GoogleRequest BillingAccountsCreate where
+        type Rs BillingAccountsCreate = BillingAccount
+        type Scopes BillingAccountsCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient BillingAccountsCreate'{..}
+          = go _bacXgafv _bacUploadProtocol _bacAccessToken
+              _bacUploadType
+              _bacCallback
+              (Just AltJSON)
+              _bacPayload
+              billingService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BillingAccountsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Get.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Get.hs
--- a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Get.hs
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Get.hs
@@ -21,10 +21,10 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a billing account. The current authenticated user
--- must be an [owner of the billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- must be a [viewer of the billing
+-- account](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference> for @cloudbilling.billingAccounts.get@.
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.get@.
 module Network.Google.Resource.CloudBilling.BillingAccounts.Get
     (
     -- * REST Resource
@@ -37,10 +37,8 @@
     -- * Request Lenses
     , bagXgafv
     , bagUploadProtocol
-    , bagPp
     , bagAccessToken
     , bagUploadType
-    , bagBearerToken
     , bagName
     , bagCallback
     ) where
@@ -53,28 +51,24 @@
 type BillingAccountsGetResource =
      "v1" :>
        Capture "name" Text :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] BillingAccount
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] BillingAccount
 
 -- | Gets information about a billing account. The current authenticated user
--- must be an [owner of the billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- must be a [viewer of the billing
+-- account](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
 -- /See:/ 'billingAccountsGet' smart constructor.
 data BillingAccountsGet = BillingAccountsGet'
-    { _bagXgafv          :: !(Maybe Text)
+    { _bagXgafv          :: !(Maybe Xgafv)
     , _bagUploadProtocol :: !(Maybe Text)
-    , _bagPp             :: !Bool
     , _bagAccessToken    :: !(Maybe Text)
     , _bagUploadType     :: !(Maybe Text)
-    , _bagBearerToken    :: !(Maybe Text)
     , _bagName           :: !Text
     , _bagCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -87,14 +81,10 @@
 --
 -- * 'bagUploadProtocol'
 --
--- * 'bagPp'
---
 -- * 'bagAccessToken'
 --
 -- * 'bagUploadType'
 --
--- * 'bagBearerToken'
---
 -- * 'bagName'
 --
 -- * 'bagCallback'
@@ -105,16 +95,14 @@
     BillingAccountsGet'
     { _bagXgafv = Nothing
     , _bagUploadProtocol = Nothing
-    , _bagPp = True
     , _bagAccessToken = Nothing
     , _bagUploadType = Nothing
-    , _bagBearerToken = Nothing
     , _bagName = pBagName_
     , _bagCallback = Nothing
     }
 
 -- | V1 error format.
-bagXgafv :: Lens' BillingAccountsGet (Maybe Text)
+bagXgafv :: Lens' BillingAccountsGet (Maybe Xgafv)
 bagXgafv = lens _bagXgafv (\ s a -> s{_bagXgafv = a})
 
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
@@ -123,10 +111,6 @@
   = lens _bagUploadProtocol
       (\ s a -> s{_bagUploadProtocol = a})
 
--- | Pretty-print response.
-bagPp :: Lens' BillingAccountsGet Bool
-bagPp = lens _bagPp (\ s a -> s{_bagPp = a})
-
 -- | OAuth access token.
 bagAccessToken :: Lens' BillingAccountsGet (Maybe Text)
 bagAccessToken
@@ -139,12 +123,6 @@
   = lens _bagUploadType
       (\ s a -> s{_bagUploadType = a})
 
--- | OAuth bearer token.
-bagBearerToken :: Lens' BillingAccountsGet (Maybe Text)
-bagBearerToken
-  = lens _bagBearerToken
-      (\ s a -> s{_bagBearerToken = a})
-
 -- | The resource name of the billing account to retrieve. For example,
 -- \`billingAccounts\/012345-567890-ABCDEF\`.
 bagName :: Lens' BillingAccountsGet Text
@@ -161,10 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient BillingAccountsGet'{..}
           = go _bagName _bagXgafv _bagUploadProtocol
-              (Just _bagPp)
               _bagAccessToken
               _bagUploadType
-              _bagBearerToken
               _bagCallback
               (Just AltJSON)
               billingService
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/GetIAMPolicy.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/GetIAMPolicy.hs
@@ -0,0 +1,156 @@
+{-# 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.CloudBilling.BillingAccounts.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a billing account. The caller must
+-- have the \`billing.accounts.getIamPolicy\` permission on the account,
+-- which is often given to billing account
+-- [viewers](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.getIamPolicy@.
+module Network.Google.Resource.CloudBilling.BillingAccounts.GetIAMPolicy
+    (
+    -- * REST Resource
+      BillingAccountsGetIAMPolicyResource
+
+    -- * Creating a Request
+    , billingAccountsGetIAMPolicy
+    , BillingAccountsGetIAMPolicy
+
+    -- * Request Lenses
+    , bagipXgafv
+    , bagipUploadProtocol
+    , bagipAccessToken
+    , bagipUploadType
+    , bagipResource
+    , bagipCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.billingAccounts.getIamPolicy@ method which the
+-- 'BillingAccountsGetIAMPolicy' request conforms to.
+type BillingAccountsGetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a billing account. The caller must
+-- have the \`billing.accounts.getIamPolicy\` permission on the account,
+-- which is often given to billing account
+-- [viewers](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+--
+-- /See:/ 'billingAccountsGetIAMPolicy' smart constructor.
+data BillingAccountsGetIAMPolicy = BillingAccountsGetIAMPolicy'
+    { _bagipXgafv          :: !(Maybe Xgafv)
+    , _bagipUploadProtocol :: !(Maybe Text)
+    , _bagipAccessToken    :: !(Maybe Text)
+    , _bagipUploadType     :: !(Maybe Text)
+    , _bagipResource       :: !Text
+    , _bagipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccountsGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bagipXgafv'
+--
+-- * 'bagipUploadProtocol'
+--
+-- * 'bagipAccessToken'
+--
+-- * 'bagipUploadType'
+--
+-- * 'bagipResource'
+--
+-- * 'bagipCallback'
+billingAccountsGetIAMPolicy
+    :: Text -- ^ 'bagipResource'
+    -> BillingAccountsGetIAMPolicy
+billingAccountsGetIAMPolicy pBagipResource_ =
+    BillingAccountsGetIAMPolicy'
+    { _bagipXgafv = Nothing
+    , _bagipUploadProtocol = Nothing
+    , _bagipAccessToken = Nothing
+    , _bagipUploadType = Nothing
+    , _bagipResource = pBagipResource_
+    , _bagipCallback = Nothing
+    }
+
+-- | V1 error format.
+bagipXgafv :: Lens' BillingAccountsGetIAMPolicy (Maybe Xgafv)
+bagipXgafv
+  = lens _bagipXgafv (\ s a -> s{_bagipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+bagipUploadProtocol :: Lens' BillingAccountsGetIAMPolicy (Maybe Text)
+bagipUploadProtocol
+  = lens _bagipUploadProtocol
+      (\ s a -> s{_bagipUploadProtocol = a})
+
+-- | OAuth access token.
+bagipAccessToken :: Lens' BillingAccountsGetIAMPolicy (Maybe Text)
+bagipAccessToken
+  = lens _bagipAccessToken
+      (\ s a -> s{_bagipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+bagipUploadType :: Lens' BillingAccountsGetIAMPolicy (Maybe Text)
+bagipUploadType
+  = lens _bagipUploadType
+      (\ s a -> s{_bagipUploadType = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+bagipResource :: Lens' BillingAccountsGetIAMPolicy Text
+bagipResource
+  = lens _bagipResource
+      (\ s a -> s{_bagipResource = a})
+
+-- | JSONP
+bagipCallback :: Lens' BillingAccountsGetIAMPolicy (Maybe Text)
+bagipCallback
+  = lens _bagipCallback
+      (\ s a -> s{_bagipCallback = a})
+
+instance GoogleRequest BillingAccountsGetIAMPolicy
+         where
+        type Rs BillingAccountsGetIAMPolicy = Policy
+        type Scopes BillingAccountsGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient BillingAccountsGetIAMPolicy'{..}
+          = go _bagipResource _bagipXgafv _bagipUploadProtocol
+              _bagipAccessToken
+              _bagipUploadType
+              _bagipCallback
+              (Just AltJSON)
+              billingService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BillingAccountsGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/List.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/List.hs
--- a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/List.hs
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/List.hs
@@ -20,10 +20,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the billing accounts that the current authenticated user
--- [owns](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- Lists the billing accounts that the current authenticated user has
+-- permission to
+-- [view](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference> for @cloudbilling.billingAccounts.list@.
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.list@.
 module Network.Google.Resource.CloudBilling.BillingAccounts.List
     (
     -- * REST Resource
@@ -36,10 +37,9 @@
     -- * Request Lenses
     , balXgafv
     , balUploadProtocol
-    , balPp
     , balAccessToken
     , balUploadType
-    , balBearerToken
+    , balFilter
     , balPageToken
     , balPageSize
     , balCallback
@@ -53,29 +53,28 @@
 type BillingAccountsListResource =
      "v1" :>
        "billingAccounts" :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "pageToken" Text :>
-                       QueryParam "pageSize" (Textual Int32) :>
-                         QueryParam "callback" Text :>
-                           QueryParam "alt" AltJSON :>
-                             Get '[JSON] ListBillingAccountsResponse
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListBillingAccountsResponse
 
--- | Lists the billing accounts that the current authenticated user
--- [owns](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- | Lists the billing accounts that the current authenticated user has
+-- permission to
+-- [view](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
 -- /See:/ 'billingAccountsList' smart constructor.
 data BillingAccountsList = BillingAccountsList'
-    { _balXgafv          :: !(Maybe Text)
+    { _balXgafv          :: !(Maybe Xgafv)
     , _balUploadProtocol :: !(Maybe Text)
-    , _balPp             :: !Bool
     , _balAccessToken    :: !(Maybe Text)
     , _balUploadType     :: !(Maybe Text)
-    , _balBearerToken    :: !(Maybe Text)
+    , _balFilter         :: !(Maybe Text)
     , _balPageToken      :: !(Maybe Text)
     , _balPageSize       :: !(Maybe (Textual Int32))
     , _balCallback       :: !(Maybe Text)
@@ -89,13 +88,11 @@
 --
 -- * 'balUploadProtocol'
 --
--- * 'balPp'
---
 -- * 'balAccessToken'
 --
 -- * 'balUploadType'
 --
--- * 'balBearerToken'
+-- * 'balFilter'
 --
 -- * 'balPageToken'
 --
@@ -108,17 +105,16 @@
     BillingAccountsList'
     { _balXgafv = Nothing
     , _balUploadProtocol = Nothing
-    , _balPp = True
     , _balAccessToken = Nothing
     , _balUploadType = Nothing
-    , _balBearerToken = Nothing
+    , _balFilter = Nothing
     , _balPageToken = Nothing
     , _balPageSize = Nothing
     , _balCallback = Nothing
     }
 
 -- | V1 error format.
-balXgafv :: Lens' BillingAccountsList (Maybe Text)
+balXgafv :: Lens' BillingAccountsList (Maybe Xgafv)
 balXgafv = lens _balXgafv (\ s a -> s{_balXgafv = a})
 
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
@@ -127,10 +123,6 @@
   = lens _balUploadProtocol
       (\ s a -> s{_balUploadProtocol = a})
 
--- | Pretty-print response.
-balPp :: Lens' BillingAccountsList Bool
-balPp = lens _balPp (\ s a -> s{_balPp = a})
-
 -- | OAuth access token.
 balAccessToken :: Lens' BillingAccountsList (Maybe Text)
 balAccessToken
@@ -143,11 +135,15 @@
   = lens _balUploadType
       (\ s a -> s{_balUploadType = a})
 
--- | OAuth bearer token.
-balBearerToken :: Lens' BillingAccountsList (Maybe Text)
-balBearerToken
-  = lens _balBearerToken
-      (\ s a -> s{_balBearerToken = a})
+-- | Options for how to filter the returned billing accounts. Currently this
+-- only supports filtering for
+-- [subaccounts](https:\/\/cloud.google.com\/billing\/docs\/concepts) under
+-- a single provided reseller billing account. (e.g.
+-- \"master_billing_account=billingAccounts\/012345-678901-ABCDEF\").
+-- Boolean algebra and other fields are not currently supported.
+balFilter :: Lens' BillingAccountsList (Maybe Text)
+balFilter
+  = lens _balFilter (\ s a -> s{_balFilter = a})
 
 -- | A token identifying a page of results to return. This should be a
 -- \`next_page_token\` value returned from a previous
@@ -175,10 +171,9 @@
         type Scopes BillingAccountsList =
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient BillingAccountsList'{..}
-          = go _balXgafv _balUploadProtocol (Just _balPp)
-              _balAccessToken
+          = go _balXgafv _balUploadProtocol _balAccessToken
               _balUploadType
-              _balBearerToken
+              _balFilter
               _balPageToken
               _balPageSize
               _balCallback
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Patch.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Patch.hs
@@ -0,0 +1,182 @@
+{-# 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.CloudBilling.BillingAccounts.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)
+--
+-- Updates a billing account\'s fields. Currently the only field that can
+-- be edited is \`display_name\`. The current authenticated user must have
+-- the \`billing.accounts.update\` IAM permission, which is typically given
+-- to the
+-- [administrator](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access)
+-- of the billing account.
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.patch@.
+module Network.Google.Resource.CloudBilling.BillingAccounts.Patch
+    (
+    -- * REST Resource
+      BillingAccountsPatchResource
+
+    -- * Creating a Request
+    , billingAccountsPatch
+    , BillingAccountsPatch
+
+    -- * Request Lenses
+    , bapXgafv
+    , bapUploadProtocol
+    , bapUpdateMask
+    , bapAccessToken
+    , bapUploadType
+    , bapPayload
+    , bapName
+    , bapCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.billingAccounts.patch@ method which the
+-- 'BillingAccountsPatch' request conforms to.
+type BillingAccountsPatchResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BillingAccount :>
+                         Patch '[JSON] BillingAccount
+
+-- | Updates a billing account\'s fields. Currently the only field that can
+-- be edited is \`display_name\`. The current authenticated user must have
+-- the \`billing.accounts.update\` IAM permission, which is typically given
+-- to the
+-- [administrator](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access)
+-- of the billing account.
+--
+-- /See:/ 'billingAccountsPatch' smart constructor.
+data BillingAccountsPatch = BillingAccountsPatch'
+    { _bapXgafv          :: !(Maybe Xgafv)
+    , _bapUploadProtocol :: !(Maybe Text)
+    , _bapUpdateMask     :: !(Maybe GFieldMask)
+    , _bapAccessToken    :: !(Maybe Text)
+    , _bapUploadType     :: !(Maybe Text)
+    , _bapPayload        :: !BillingAccount
+    , _bapName           :: !Text
+    , _bapCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccountsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bapXgafv'
+--
+-- * 'bapUploadProtocol'
+--
+-- * 'bapUpdateMask'
+--
+-- * 'bapAccessToken'
+--
+-- * 'bapUploadType'
+--
+-- * 'bapPayload'
+--
+-- * 'bapName'
+--
+-- * 'bapCallback'
+billingAccountsPatch
+    :: BillingAccount -- ^ 'bapPayload'
+    -> Text -- ^ 'bapName'
+    -> BillingAccountsPatch
+billingAccountsPatch pBapPayload_ pBapName_ =
+    BillingAccountsPatch'
+    { _bapXgafv = Nothing
+    , _bapUploadProtocol = Nothing
+    , _bapUpdateMask = Nothing
+    , _bapAccessToken = Nothing
+    , _bapUploadType = Nothing
+    , _bapPayload = pBapPayload_
+    , _bapName = pBapName_
+    , _bapCallback = Nothing
+    }
+
+-- | V1 error format.
+bapXgafv :: Lens' BillingAccountsPatch (Maybe Xgafv)
+bapXgafv = lens _bapXgafv (\ s a -> s{_bapXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+bapUploadProtocol :: Lens' BillingAccountsPatch (Maybe Text)
+bapUploadProtocol
+  = lens _bapUploadProtocol
+      (\ s a -> s{_bapUploadProtocol = a})
+
+-- | The update mask applied to the resource. Only \"display_name\" is
+-- currently supported.
+bapUpdateMask :: Lens' BillingAccountsPatch (Maybe GFieldMask)
+bapUpdateMask
+  = lens _bapUpdateMask
+      (\ s a -> s{_bapUpdateMask = a})
+
+-- | OAuth access token.
+bapAccessToken :: Lens' BillingAccountsPatch (Maybe Text)
+bapAccessToken
+  = lens _bapAccessToken
+      (\ s a -> s{_bapAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+bapUploadType :: Lens' BillingAccountsPatch (Maybe Text)
+bapUploadType
+  = lens _bapUploadType
+      (\ s a -> s{_bapUploadType = a})
+
+-- | Multipart request metadata.
+bapPayload :: Lens' BillingAccountsPatch BillingAccount
+bapPayload
+  = lens _bapPayload (\ s a -> s{_bapPayload = a})
+
+-- | The name of the billing account resource to be updated.
+bapName :: Lens' BillingAccountsPatch Text
+bapName = lens _bapName (\ s a -> s{_bapName = a})
+
+-- | JSONP
+bapCallback :: Lens' BillingAccountsPatch (Maybe Text)
+bapCallback
+  = lens _bapCallback (\ s a -> s{_bapCallback = a})
+
+instance GoogleRequest BillingAccountsPatch where
+        type Rs BillingAccountsPatch = BillingAccount
+        type Scopes BillingAccountsPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient BillingAccountsPatch'{..}
+          = go _bapName _bapXgafv _bapUploadProtocol
+              _bapUpdateMask
+              _bapAccessToken
+              _bapUploadType
+              _bapCallback
+              (Just AltJSON)
+              _bapPayload
+              billingService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BillingAccountsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Projects/List.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Projects/List.hs
--- a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Projects/List.hs
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/Projects/List.hs
@@ -21,10 +21,11 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Lists the projects associated with a billing account. The current
--- authenticated user must be an [owner of the billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- authenticated user must have the \`billing.resourceAssociations.list\`
+-- IAM permission, which is often given to billing account
+-- [viewers](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference> for @cloudbilling.billingAccounts.projects.list@.
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.projects.list@.
 module Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List
     (
     -- * REST Resource
@@ -37,10 +38,8 @@
     -- * Request Lenses
     , baplXgafv
     , baplUploadProtocol
-    , baplPp
     , baplAccessToken
     , baplUploadType
-    , baplBearerToken
     , baplName
     , baplPageToken
     , baplPageSize
@@ -56,30 +55,27 @@
      "v1" :>
        Capture "name" Text :>
          "projects" :>
-           QueryParam "$.xgafv" Text :>
+           QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "pageToken" Text :>
-                         QueryParam "pageSize" (Textual Int32) :>
-                           QueryParam "callback" Text :>
-                             QueryParam "alt" AltJSON :>
-                               Get '[JSON] ListProjectBillingInfoResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListProjectBillingInfoResponse
 
 -- | Lists the projects associated with a billing account. The current
--- authenticated user must be an [owner of the billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947).
+-- authenticated user must have the \`billing.resourceAssociations.list\`
+-- IAM permission, which is often given to billing account
+-- [viewers](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
 --
 -- /See:/ 'billingAccountsProjectsList' smart constructor.
 data BillingAccountsProjectsList = BillingAccountsProjectsList'
-    { _baplXgafv          :: !(Maybe Text)
+    { _baplXgafv          :: !(Maybe Xgafv)
     , _baplUploadProtocol :: !(Maybe Text)
-    , _baplPp             :: !Bool
     , _baplAccessToken    :: !(Maybe Text)
     , _baplUploadType     :: !(Maybe Text)
-    , _baplBearerToken    :: !(Maybe Text)
     , _baplName           :: !Text
     , _baplPageToken      :: !(Maybe Text)
     , _baplPageSize       :: !(Maybe (Textual Int32))
@@ -94,14 +90,10 @@
 --
 -- * 'baplUploadProtocol'
 --
--- * 'baplPp'
---
 -- * 'baplAccessToken'
 --
 -- * 'baplUploadType'
 --
--- * 'baplBearerToken'
---
 -- * 'baplName'
 --
 -- * 'baplPageToken'
@@ -116,10 +108,8 @@
     BillingAccountsProjectsList'
     { _baplXgafv = Nothing
     , _baplUploadProtocol = Nothing
-    , _baplPp = True
     , _baplAccessToken = Nothing
     , _baplUploadType = Nothing
-    , _baplBearerToken = Nothing
     , _baplName = pBaplName_
     , _baplPageToken = Nothing
     , _baplPageSize = Nothing
@@ -127,7 +117,7 @@
     }
 
 -- | V1 error format.
-baplXgafv :: Lens' BillingAccountsProjectsList (Maybe Text)
+baplXgafv :: Lens' BillingAccountsProjectsList (Maybe Xgafv)
 baplXgafv
   = lens _baplXgafv (\ s a -> s{_baplXgafv = a})
 
@@ -137,10 +127,6 @@
   = lens _baplUploadProtocol
       (\ s a -> s{_baplUploadProtocol = a})
 
--- | Pretty-print response.
-baplPp :: Lens' BillingAccountsProjectsList Bool
-baplPp = lens _baplPp (\ s a -> s{_baplPp = a})
-
 -- | OAuth access token.
 baplAccessToken :: Lens' BillingAccountsProjectsList (Maybe Text)
 baplAccessToken
@@ -153,12 +139,6 @@
   = lens _baplUploadType
       (\ s a -> s{_baplUploadType = a})
 
--- | OAuth bearer token.
-baplBearerToken :: Lens' BillingAccountsProjectsList (Maybe Text)
-baplBearerToken
-  = lens _baplBearerToken
-      (\ s a -> s{_baplBearerToken = a})
-
 -- | The resource name of the billing account associated with the projects
 -- that you want to list. For example,
 -- \`billingAccounts\/012345-567890-ABCDEF\`.
@@ -194,10 +174,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient BillingAccountsProjectsList'{..}
           = go _baplName _baplXgafv _baplUploadProtocol
-              (Just _baplPp)
               _baplAccessToken
               _baplUploadType
-              _baplBearerToken
               _baplPageToken
               _baplPageSize
               _baplCallback
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/SetIAMPolicy.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/SetIAMPolicy.hs
@@ -0,0 +1,172 @@
+{-# 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.CloudBilling.BillingAccounts.SetIAMPolicy
+-- 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)
+--
+-- Sets the access control policy for a billing account. Replaces any
+-- existing policy. The caller must have the
+-- \`billing.accounts.setIamPolicy\` permission on the account, which is
+-- often given to billing account
+-- [administrators](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.setIamPolicy@.
+module Network.Google.Resource.CloudBilling.BillingAccounts.SetIAMPolicy
+    (
+    -- * REST Resource
+      BillingAccountsSetIAMPolicyResource
+
+    -- * Creating a Request
+    , billingAccountsSetIAMPolicy
+    , BillingAccountsSetIAMPolicy
+
+    -- * Request Lenses
+    , basipXgafv
+    , basipUploadProtocol
+    , basipAccessToken
+    , basipUploadType
+    , basipPayload
+    , basipResource
+    , basipCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.billingAccounts.setIamPolicy@ method which the
+-- 'BillingAccountsSetIAMPolicy' request conforms to.
+type BillingAccountsSetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy for a billing account. Replaces any
+-- existing policy. The caller must have the
+-- \`billing.accounts.setIamPolicy\` permission on the account, which is
+-- often given to billing account
+-- [administrators](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+--
+-- /See:/ 'billingAccountsSetIAMPolicy' smart constructor.
+data BillingAccountsSetIAMPolicy = BillingAccountsSetIAMPolicy'
+    { _basipXgafv          :: !(Maybe Xgafv)
+    , _basipUploadProtocol :: !(Maybe Text)
+    , _basipAccessToken    :: !(Maybe Text)
+    , _basipUploadType     :: !(Maybe Text)
+    , _basipPayload        :: !SetIAMPolicyRequest
+    , _basipResource       :: !Text
+    , _basipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccountsSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'basipXgafv'
+--
+-- * 'basipUploadProtocol'
+--
+-- * 'basipAccessToken'
+--
+-- * 'basipUploadType'
+--
+-- * 'basipPayload'
+--
+-- * 'basipResource'
+--
+-- * 'basipCallback'
+billingAccountsSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'basipPayload'
+    -> Text -- ^ 'basipResource'
+    -> BillingAccountsSetIAMPolicy
+billingAccountsSetIAMPolicy pBasipPayload_ pBasipResource_ =
+    BillingAccountsSetIAMPolicy'
+    { _basipXgafv = Nothing
+    , _basipUploadProtocol = Nothing
+    , _basipAccessToken = Nothing
+    , _basipUploadType = Nothing
+    , _basipPayload = pBasipPayload_
+    , _basipResource = pBasipResource_
+    , _basipCallback = Nothing
+    }
+
+-- | V1 error format.
+basipXgafv :: Lens' BillingAccountsSetIAMPolicy (Maybe Xgafv)
+basipXgafv
+  = lens _basipXgafv (\ s a -> s{_basipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+basipUploadProtocol :: Lens' BillingAccountsSetIAMPolicy (Maybe Text)
+basipUploadProtocol
+  = lens _basipUploadProtocol
+      (\ s a -> s{_basipUploadProtocol = a})
+
+-- | OAuth access token.
+basipAccessToken :: Lens' BillingAccountsSetIAMPolicy (Maybe Text)
+basipAccessToken
+  = lens _basipAccessToken
+      (\ s a -> s{_basipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+basipUploadType :: Lens' BillingAccountsSetIAMPolicy (Maybe Text)
+basipUploadType
+  = lens _basipUploadType
+      (\ s a -> s{_basipUploadType = a})
+
+-- | Multipart request metadata.
+basipPayload :: Lens' BillingAccountsSetIAMPolicy SetIAMPolicyRequest
+basipPayload
+  = lens _basipPayload (\ s a -> s{_basipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+basipResource :: Lens' BillingAccountsSetIAMPolicy Text
+basipResource
+  = lens _basipResource
+      (\ s a -> s{_basipResource = a})
+
+-- | JSONP
+basipCallback :: Lens' BillingAccountsSetIAMPolicy (Maybe Text)
+basipCallback
+  = lens _basipCallback
+      (\ s a -> s{_basipCallback = a})
+
+instance GoogleRequest BillingAccountsSetIAMPolicy
+         where
+        type Rs BillingAccountsSetIAMPolicy = Policy
+        type Scopes BillingAccountsSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient BillingAccountsSetIAMPolicy'{..}
+          = go _basipResource _basipXgafv _basipUploadProtocol
+              _basipAccessToken
+              _basipUploadType
+              _basipCallback
+              (Just AltJSON)
+              _basipPayload
+              billingService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BillingAccountsSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/BillingAccounts/TestIAMPermissions.hs b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/BillingAccounts/TestIAMPermissions.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.CloudBilling.BillingAccounts.TestIAMPermissions
+-- 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)
+--
+-- Tests the access control policy for a billing account. This method takes
+-- the resource and a set of permissions as input and returns the subset of
+-- the input permissions that the caller is allowed for that resource.
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.billingAccounts.testIamPermissions@.
+module Network.Google.Resource.CloudBilling.BillingAccounts.TestIAMPermissions
+    (
+    -- * REST Resource
+      BillingAccountsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , billingAccountsTestIAMPermissions
+    , BillingAccountsTestIAMPermissions
+
+    -- * Request Lenses
+    , batipXgafv
+    , batipUploadProtocol
+    , batipAccessToken
+    , batipUploadType
+    , batipPayload
+    , batipResource
+    , batipCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.billingAccounts.testIamPermissions@ method which the
+-- 'BillingAccountsTestIAMPermissions' request conforms to.
+type BillingAccountsTestIAMPermissionsResource =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Tests the access control policy for a billing account. This method takes
+-- the resource and a set of permissions as input and returns the subset of
+-- the input permissions that the caller is allowed for that resource.
+--
+-- /See:/ 'billingAccountsTestIAMPermissions' smart constructor.
+data BillingAccountsTestIAMPermissions = BillingAccountsTestIAMPermissions'
+    { _batipXgafv          :: !(Maybe Xgafv)
+    , _batipUploadProtocol :: !(Maybe Text)
+    , _batipAccessToken    :: !(Maybe Text)
+    , _batipUploadType     :: !(Maybe Text)
+    , _batipPayload        :: !TestIAMPermissionsRequest
+    , _batipResource       :: !Text
+    , _batipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BillingAccountsTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'batipXgafv'
+--
+-- * 'batipUploadProtocol'
+--
+-- * 'batipAccessToken'
+--
+-- * 'batipUploadType'
+--
+-- * 'batipPayload'
+--
+-- * 'batipResource'
+--
+-- * 'batipCallback'
+billingAccountsTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'batipPayload'
+    -> Text -- ^ 'batipResource'
+    -> BillingAccountsTestIAMPermissions
+billingAccountsTestIAMPermissions pBatipPayload_ pBatipResource_ =
+    BillingAccountsTestIAMPermissions'
+    { _batipXgafv = Nothing
+    , _batipUploadProtocol = Nothing
+    , _batipAccessToken = Nothing
+    , _batipUploadType = Nothing
+    , _batipPayload = pBatipPayload_
+    , _batipResource = pBatipResource_
+    , _batipCallback = Nothing
+    }
+
+-- | V1 error format.
+batipXgafv :: Lens' BillingAccountsTestIAMPermissions (Maybe Xgafv)
+batipXgafv
+  = lens _batipXgafv (\ s a -> s{_batipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+batipUploadProtocol :: Lens' BillingAccountsTestIAMPermissions (Maybe Text)
+batipUploadProtocol
+  = lens _batipUploadProtocol
+      (\ s a -> s{_batipUploadProtocol = a})
+
+-- | OAuth access token.
+batipAccessToken :: Lens' BillingAccountsTestIAMPermissions (Maybe Text)
+batipAccessToken
+  = lens _batipAccessToken
+      (\ s a -> s{_batipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+batipUploadType :: Lens' BillingAccountsTestIAMPermissions (Maybe Text)
+batipUploadType
+  = lens _batipUploadType
+      (\ s a -> s{_batipUploadType = a})
+
+-- | Multipart request metadata.
+batipPayload :: Lens' BillingAccountsTestIAMPermissions TestIAMPermissionsRequest
+batipPayload
+  = lens _batipPayload (\ s a -> s{_batipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+batipResource :: Lens' BillingAccountsTestIAMPermissions Text
+batipResource
+  = lens _batipResource
+      (\ s a -> s{_batipResource = a})
+
+-- | JSONP
+batipCallback :: Lens' BillingAccountsTestIAMPermissions (Maybe Text)
+batipCallback
+  = lens _batipCallback
+      (\ s a -> s{_batipCallback = a})
+
+instance GoogleRequest
+         BillingAccountsTestIAMPermissions where
+        type Rs BillingAccountsTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes BillingAccountsTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient BillingAccountsTestIAMPermissions'{..}
+          = go _batipResource _batipXgafv _batipUploadProtocol
+              _batipAccessToken
+              _batipUploadType
+              _batipCallback
+              (Just AltJSON)
+              _batipPayload
+              billingService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BillingAccountsTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/Projects/GetBillingInfo.hs b/gen/Network/Google/Resource/CloudBilling/Projects/GetBillingInfo.hs
--- a/gen/Network/Google/Resource/CloudBilling/Projects/GetBillingInfo.hs
+++ b/gen/Network/Google/Resource/CloudBilling/Projects/GetBillingInfo.hs
@@ -25,7 +25,7 @@
 -- project](https:\/\/cloud.google.com\/docs\/permissions-overview#h.bgs0oxofvnoo
 -- ).
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference> for @cloudbilling.projects.getBillingInfo@.
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.projects.getBillingInfo@.
 module Network.Google.Resource.CloudBilling.Projects.GetBillingInfo
     (
     -- * REST Resource
@@ -38,10 +38,8 @@
     -- * Request Lenses
     , pgbiXgafv
     , pgbiUploadProtocol
-    , pgbiPp
     , pgbiAccessToken
     , pgbiUploadType
-    , pgbiBearerToken
     , pgbiName
     , pgbiCallback
     ) where
@@ -55,15 +53,13 @@
      "v1" :>
        Capture "name" Text :>
          "billingInfo" :>
-           QueryParam "$.xgafv" Text :>
+           QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           Get '[JSON] ProjectBillingInfo
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] ProjectBillingInfo
 
 -- | Gets the billing information for a project. The current authenticated
 -- user must have [permission to view the
@@ -72,12 +68,10 @@
 --
 -- /See:/ 'projectsGetBillingInfo' smart constructor.
 data ProjectsGetBillingInfo = ProjectsGetBillingInfo'
-    { _pgbiXgafv          :: !(Maybe Text)
+    { _pgbiXgafv          :: !(Maybe Xgafv)
     , _pgbiUploadProtocol :: !(Maybe Text)
-    , _pgbiPp             :: !Bool
     , _pgbiAccessToken    :: !(Maybe Text)
     , _pgbiUploadType     :: !(Maybe Text)
-    , _pgbiBearerToken    :: !(Maybe Text)
     , _pgbiName           :: !Text
     , _pgbiCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -90,14 +84,10 @@
 --
 -- * 'pgbiUploadProtocol'
 --
--- * 'pgbiPp'
---
 -- * 'pgbiAccessToken'
 --
 -- * 'pgbiUploadType'
 --
--- * 'pgbiBearerToken'
---
 -- * 'pgbiName'
 --
 -- * 'pgbiCallback'
@@ -108,16 +98,14 @@
     ProjectsGetBillingInfo'
     { _pgbiXgafv = Nothing
     , _pgbiUploadProtocol = Nothing
-    , _pgbiPp = True
     , _pgbiAccessToken = Nothing
     , _pgbiUploadType = Nothing
-    , _pgbiBearerToken = Nothing
     , _pgbiName = pPgbiName_
     , _pgbiCallback = Nothing
     }
 
 -- | V1 error format.
-pgbiXgafv :: Lens' ProjectsGetBillingInfo (Maybe Text)
+pgbiXgafv :: Lens' ProjectsGetBillingInfo (Maybe Xgafv)
 pgbiXgafv
   = lens _pgbiXgafv (\ s a -> s{_pgbiXgafv = a})
 
@@ -127,10 +115,6 @@
   = lens _pgbiUploadProtocol
       (\ s a -> s{_pgbiUploadProtocol = a})
 
--- | Pretty-print response.
-pgbiPp :: Lens' ProjectsGetBillingInfo Bool
-pgbiPp = lens _pgbiPp (\ s a -> s{_pgbiPp = a})
-
 -- | OAuth access token.
 pgbiAccessToken :: Lens' ProjectsGetBillingInfo (Maybe Text)
 pgbiAccessToken
@@ -143,12 +127,6 @@
   = lens _pgbiUploadType
       (\ s a -> s{_pgbiUploadType = a})
 
--- | OAuth bearer token.
-pgbiBearerToken :: Lens' ProjectsGetBillingInfo (Maybe Text)
-pgbiBearerToken
-  = lens _pgbiBearerToken
-      (\ s a -> s{_pgbiBearerToken = a})
-
 -- | The resource name of the project for which billing information is
 -- retrieved. For example, \`projects\/tokyo-rain-123\`.
 pgbiName :: Lens' ProjectsGetBillingInfo Text
@@ -165,10 +143,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsGetBillingInfo'{..}
           = go _pgbiName _pgbiXgafv _pgbiUploadProtocol
-              (Just _pgbiPp)
               _pgbiAccessToken
               _pgbiUploadType
-              _pgbiBearerToken
               _pgbiCallback
               (Just AltJSON)
               billingService
diff --git a/gen/Network/Google/Resource/CloudBilling/Projects/UpdateBillingInfo.hs b/gen/Network/Google/Resource/CloudBilling/Projects/UpdateBillingInfo.hs
--- a/gen/Network/Google/Resource/CloudBilling/Projects/UpdateBillingInfo.hs
+++ b/gen/Network/Google/Resource/CloudBilling/Projects/UpdateBillingInfo.hs
@@ -27,28 +27,27 @@
 -- billing on the project and allows charges for resource usage. If the
 -- project already had a billing account, this method changes the billing
 -- account used for resource usage charges. *Note:* Incurred charges that
--- have not yet been reported in the transaction history of the Google
--- Developers Console may be billed to the new billing account, even if the
--- charge occurred before the new billing account was assigned to the
--- project. The current authenticated user must have ownership privileges
--- for both the
+-- have not yet been reported in the transaction history of the GCP Console
+-- might be billed to the new billing account, even if the charge occurred
+-- before the new billing account was assigned to the project. The current
+-- authenticated user must have ownership privileges for both the
 -- [project](https:\/\/cloud.google.com\/docs\/permissions-overview#h.bgs0oxofvnoo
 -- ) and the [billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947). You can
--- disable billing on the project by setting the \`billing_account_name\`
--- field to empty. This action disassociates the current billing account
--- from the project. Any billable activity of your in-use services will
--- stop, and your application could stop functioning as expected. Any
--- unbilled charges to date will be billed to the previously associated
--- account. The current authenticated user must be either an owner of the
--- project or an owner of the billing account for the project. Note that
--- associating a project with a *closed* billing account will have much the
--- same effect as disabling billing on the project: any paid resources used
--- by the project will be shut down. Thus, unless you wish to disable
--- billing, you should always call this method with the name of an *open*
--- billing account.
+-- account](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+-- You can disable billing on the project by setting the
+-- \`billing_account_name\` field to empty. This action disassociates the
+-- current billing account from the project. Any billable activity of your
+-- in-use services will stop, and your application could stop functioning
+-- as expected. Any unbilled charges to date will be billed to the
+-- previously associated account. The current authenticated user must be
+-- either an owner of the project or an owner of the billing account for
+-- the project. Note that associating a project with a *closed* billing
+-- account will have much the same effect as disabling billing on the
+-- project: any paid resources used by the project will be shut down. Thus,
+-- unless you wish to disable billing, you should always call this method
+-- with the name of an *open* billing account.
 --
--- /See:/ <https://cloud.google.com/billing/ Google Cloud Billing API Reference> for @cloudbilling.projects.updateBillingInfo@.
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.projects.updateBillingInfo@.
 module Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo
     (
     -- * REST Resource
@@ -61,11 +60,9 @@
     -- * Request Lenses
     , pubiXgafv
     , pubiUploadProtocol
-    , pubiPp
     , pubiAccessToken
     , pubiUploadType
     , pubiPayload
-    , pubiBearerToken
     , pubiName
     , pubiCallback
     ) where
@@ -79,16 +76,14 @@
      "v1" :>
        Capture "name" Text :>
          "billingInfo" :>
-           QueryParam "$.xgafv" Text :>
+           QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] ProjectBillingInfo :>
-                             Put '[JSON] ProjectBillingInfo
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] ProjectBillingInfo :>
+                         Put '[JSON] ProjectBillingInfo
 
 -- | Sets or updates the billing account associated with a project. You
 -- specify the new billing account by setting the \`billing_account_name\`
@@ -97,36 +92,33 @@
 -- billing on the project and allows charges for resource usage. If the
 -- project already had a billing account, this method changes the billing
 -- account used for resource usage charges. *Note:* Incurred charges that
--- have not yet been reported in the transaction history of the Google
--- Developers Console may be billed to the new billing account, even if the
--- charge occurred before the new billing account was assigned to the
--- project. The current authenticated user must have ownership privileges
--- for both the
+-- have not yet been reported in the transaction history of the GCP Console
+-- might be billed to the new billing account, even if the charge occurred
+-- before the new billing account was assigned to the project. The current
+-- authenticated user must have ownership privileges for both the
 -- [project](https:\/\/cloud.google.com\/docs\/permissions-overview#h.bgs0oxofvnoo
 -- ) and the [billing
--- account](https:\/\/support.google.com\/cloud\/answer\/4430947). You can
--- disable billing on the project by setting the \`billing_account_name\`
--- field to empty. This action disassociates the current billing account
--- from the project. Any billable activity of your in-use services will
--- stop, and your application could stop functioning as expected. Any
--- unbilled charges to date will be billed to the previously associated
--- account. The current authenticated user must be either an owner of the
--- project or an owner of the billing account for the project. Note that
--- associating a project with a *closed* billing account will have much the
--- same effect as disabling billing on the project: any paid resources used
--- by the project will be shut down. Thus, unless you wish to disable
--- billing, you should always call this method with the name of an *open*
--- billing account.
+-- account](https:\/\/cloud.google.com\/billing\/docs\/how-to\/billing-access).
+-- You can disable billing on the project by setting the
+-- \`billing_account_name\` field to empty. This action disassociates the
+-- current billing account from the project. Any billable activity of your
+-- in-use services will stop, and your application could stop functioning
+-- as expected. Any unbilled charges to date will be billed to the
+-- previously associated account. The current authenticated user must be
+-- either an owner of the project or an owner of the billing account for
+-- the project. Note that associating a project with a *closed* billing
+-- account will have much the same effect as disabling billing on the
+-- project: any paid resources used by the project will be shut down. Thus,
+-- unless you wish to disable billing, you should always call this method
+-- with the name of an *open* billing account.
 --
 -- /See:/ 'projectsUpdateBillingInfo' smart constructor.
 data ProjectsUpdateBillingInfo = ProjectsUpdateBillingInfo'
-    { _pubiXgafv          :: !(Maybe Text)
+    { _pubiXgafv          :: !(Maybe Xgafv)
     , _pubiUploadProtocol :: !(Maybe Text)
-    , _pubiPp             :: !Bool
     , _pubiAccessToken    :: !(Maybe Text)
     , _pubiUploadType     :: !(Maybe Text)
     , _pubiPayload        :: !ProjectBillingInfo
-    , _pubiBearerToken    :: !(Maybe Text)
     , _pubiName           :: !Text
     , _pubiCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -139,16 +131,12 @@
 --
 -- * 'pubiUploadProtocol'
 --
--- * 'pubiPp'
---
 -- * 'pubiAccessToken'
 --
 -- * 'pubiUploadType'
 --
 -- * 'pubiPayload'
 --
--- * 'pubiBearerToken'
---
 -- * 'pubiName'
 --
 -- * 'pubiCallback'
@@ -160,17 +148,15 @@
     ProjectsUpdateBillingInfo'
     { _pubiXgafv = Nothing
     , _pubiUploadProtocol = Nothing
-    , _pubiPp = True
     , _pubiAccessToken = Nothing
     , _pubiUploadType = Nothing
     , _pubiPayload = pPubiPayload_
-    , _pubiBearerToken = Nothing
     , _pubiName = pPubiName_
     , _pubiCallback = Nothing
     }
 
 -- | V1 error format.
-pubiXgafv :: Lens' ProjectsUpdateBillingInfo (Maybe Text)
+pubiXgafv :: Lens' ProjectsUpdateBillingInfo (Maybe Xgafv)
 pubiXgafv
   = lens _pubiXgafv (\ s a -> s{_pubiXgafv = a})
 
@@ -180,10 +166,6 @@
   = lens _pubiUploadProtocol
       (\ s a -> s{_pubiUploadProtocol = a})
 
--- | Pretty-print response.
-pubiPp :: Lens' ProjectsUpdateBillingInfo Bool
-pubiPp = lens _pubiPp (\ s a -> s{_pubiPp = a})
-
 -- | OAuth access token.
 pubiAccessToken :: Lens' ProjectsUpdateBillingInfo (Maybe Text)
 pubiAccessToken
@@ -201,12 +183,6 @@
 pubiPayload
   = lens _pubiPayload (\ s a -> s{_pubiPayload = a})
 
--- | OAuth bearer token.
-pubiBearerToken :: Lens' ProjectsUpdateBillingInfo (Maybe Text)
-pubiBearerToken
-  = lens _pubiBearerToken
-      (\ s a -> s{_pubiBearerToken = a})
-
 -- | The resource name of the project associated with the billing information
 -- that you want to update. For example, \`projects\/tokyo-rain-123\`.
 pubiName :: Lens' ProjectsUpdateBillingInfo Text
@@ -225,10 +201,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsUpdateBillingInfo'{..}
           = go _pubiName _pubiXgafv _pubiUploadProtocol
-              (Just _pubiPp)
               _pubiAccessToken
               _pubiUploadType
-              _pubiBearerToken
               _pubiCallback
               (Just AltJSON)
               _pubiPayload
diff --git a/gen/Network/Google/Resource/CloudBilling/Services/List.hs b/gen/Network/Google/Resource/CloudBilling/Services/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/Services/List.hs
@@ -0,0 +1,159 @@
+{-# 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.CloudBilling.Services.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all public cloud services.
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.services.list@.
+module Network.Google.Resource.CloudBilling.Services.List
+    (
+    -- * REST Resource
+      ServicesListResource
+
+    -- * Creating a Request
+    , servicesList
+    , ServicesList
+
+    -- * Request Lenses
+    , slXgafv
+    , slUploadProtocol
+    , slAccessToken
+    , slUploadType
+    , slPageToken
+    , slPageSize
+    , slCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.services.list@ method which the
+-- 'ServicesList' request conforms to.
+type ServicesListResource =
+     "v1" :>
+       "services" :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "pageSize" (Textual Int32) :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ListServicesResponse
+
+-- | Lists all public cloud services.
+--
+-- /See:/ 'servicesList' smart constructor.
+data ServicesList = ServicesList'
+    { _slXgafv          :: !(Maybe Xgafv)
+    , _slUploadProtocol :: !(Maybe Text)
+    , _slAccessToken    :: !(Maybe Text)
+    , _slUploadType     :: !(Maybe Text)
+    , _slPageToken      :: !(Maybe Text)
+    , _slPageSize       :: !(Maybe (Textual Int32))
+    , _slCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServicesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slXgafv'
+--
+-- * 'slUploadProtocol'
+--
+-- * 'slAccessToken'
+--
+-- * 'slUploadType'
+--
+-- * 'slPageToken'
+--
+-- * 'slPageSize'
+--
+-- * 'slCallback'
+servicesList
+    :: ServicesList
+servicesList =
+    ServicesList'
+    { _slXgafv = Nothing
+    , _slUploadProtocol = Nothing
+    , _slAccessToken = Nothing
+    , _slUploadType = Nothing
+    , _slPageToken = Nothing
+    , _slPageSize = Nothing
+    , _slCallback = Nothing
+    }
+
+-- | V1 error format.
+slXgafv :: Lens' ServicesList (Maybe Xgafv)
+slXgafv = lens _slXgafv (\ s a -> s{_slXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+slUploadProtocol :: Lens' ServicesList (Maybe Text)
+slUploadProtocol
+  = lens _slUploadProtocol
+      (\ s a -> s{_slUploadProtocol = a})
+
+-- | OAuth access token.
+slAccessToken :: Lens' ServicesList (Maybe Text)
+slAccessToken
+  = lens _slAccessToken
+      (\ s a -> s{_slAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+slUploadType :: Lens' ServicesList (Maybe Text)
+slUploadType
+  = lens _slUploadType (\ s a -> s{_slUploadType = a})
+
+-- | A token identifying a page of results to return. This should be a
+-- \`next_page_token\` value returned from a previous \`ListServices\`
+-- call. If unspecified, the first page of results is returned.
+slPageToken :: Lens' ServicesList (Maybe Text)
+slPageToken
+  = lens _slPageToken (\ s a -> s{_slPageToken = a})
+
+-- | Requested page size. Defaults to 5000.
+slPageSize :: Lens' ServicesList (Maybe Int32)
+slPageSize
+  = lens _slPageSize (\ s a -> s{_slPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+slCallback :: Lens' ServicesList (Maybe Text)
+slCallback
+  = lens _slCallback (\ s a -> s{_slCallback = a})
+
+instance GoogleRequest ServicesList where
+        type Rs ServicesList = ListServicesResponse
+        type Scopes ServicesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ServicesList'{..}
+          = go _slXgafv _slUploadProtocol _slAccessToken
+              _slUploadType
+              _slPageToken
+              _slPageSize
+              _slCallback
+              (Just AltJSON)
+              billingService
+          where go
+                  = buildClient (Proxy :: Proxy ServicesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/CloudBilling/Services/SKUs/List.hs b/gen/Network/Google/Resource/CloudBilling/Services/SKUs/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/CloudBilling/Services/SKUs/List.hs
@@ -0,0 +1,230 @@
+{-# 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.CloudBilling.Services.SKUs.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all publicly available SKUs for a given cloud service.
+--
+-- /See:/ <https://cloud.google.com/billing/ Cloud Billing API Reference> for @cloudbilling.services.skus.list@.
+module Network.Google.Resource.CloudBilling.Services.SKUs.List
+    (
+    -- * REST Resource
+      ServicesSKUsListResource
+
+    -- * Creating a Request
+    , servicesSKUsList
+    , ServicesSKUsList
+
+    -- * Request Lenses
+    , sskulParent
+    , sskulXgafv
+    , sskulCurrencyCode
+    , sskulUploadProtocol
+    , sskulStartTime
+    , sskulAccessToken
+    , sskulUploadType
+    , sskulEndTime
+    , sskulPageToken
+    , sskulPageSize
+    , sskulCallback
+    ) where
+
+import           Network.Google.Billing.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @cloudbilling.services.skus.list@ method which the
+-- 'ServicesSKUsList' request conforms to.
+type ServicesSKUsListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "skus" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "currencyCode" Text :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "startTime" DateTime' :>
+                   QueryParam "access_token" Text :>
+                     QueryParam "uploadType" Text :>
+                       QueryParam "endTime" DateTime' :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "pageSize" (Textual Int32) :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] ListSKUsResponse
+
+-- | Lists all publicly available SKUs for a given cloud service.
+--
+-- /See:/ 'servicesSKUsList' smart constructor.
+data ServicesSKUsList = ServicesSKUsList'
+    { _sskulParent         :: !Text
+    , _sskulXgafv          :: !(Maybe Xgafv)
+    , _sskulCurrencyCode   :: !(Maybe Text)
+    , _sskulUploadProtocol :: !(Maybe Text)
+    , _sskulStartTime      :: !(Maybe DateTime')
+    , _sskulAccessToken    :: !(Maybe Text)
+    , _sskulUploadType     :: !(Maybe Text)
+    , _sskulEndTime        :: !(Maybe DateTime')
+    , _sskulPageToken      :: !(Maybe Text)
+    , _sskulPageSize       :: !(Maybe (Textual Int32))
+    , _sskulCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServicesSKUsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sskulParent'
+--
+-- * 'sskulXgafv'
+--
+-- * 'sskulCurrencyCode'
+--
+-- * 'sskulUploadProtocol'
+--
+-- * 'sskulStartTime'
+--
+-- * 'sskulAccessToken'
+--
+-- * 'sskulUploadType'
+--
+-- * 'sskulEndTime'
+--
+-- * 'sskulPageToken'
+--
+-- * 'sskulPageSize'
+--
+-- * 'sskulCallback'
+servicesSKUsList
+    :: Text -- ^ 'sskulParent'
+    -> ServicesSKUsList
+servicesSKUsList pSskulParent_ =
+    ServicesSKUsList'
+    { _sskulParent = pSskulParent_
+    , _sskulXgafv = Nothing
+    , _sskulCurrencyCode = Nothing
+    , _sskulUploadProtocol = Nothing
+    , _sskulStartTime = Nothing
+    , _sskulAccessToken = Nothing
+    , _sskulUploadType = Nothing
+    , _sskulEndTime = Nothing
+    , _sskulPageToken = Nothing
+    , _sskulPageSize = Nothing
+    , _sskulCallback = Nothing
+    }
+
+-- | The name of the service. Example: \"services\/DA34-426B-A397\"
+sskulParent :: Lens' ServicesSKUsList Text
+sskulParent
+  = lens _sskulParent (\ s a -> s{_sskulParent = a})
+
+-- | V1 error format.
+sskulXgafv :: Lens' ServicesSKUsList (Maybe Xgafv)
+sskulXgafv
+  = lens _sskulXgafv (\ s a -> s{_sskulXgafv = a})
+
+-- | The ISO 4217 currency code for the pricing info in the response proto.
+-- Will use the conversion rate as of start_time. Optional. If not
+-- specified USD will be used.
+sskulCurrencyCode :: Lens' ServicesSKUsList (Maybe Text)
+sskulCurrencyCode
+  = lens _sskulCurrencyCode
+      (\ s a -> s{_sskulCurrencyCode = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+sskulUploadProtocol :: Lens' ServicesSKUsList (Maybe Text)
+sskulUploadProtocol
+  = lens _sskulUploadProtocol
+      (\ s a -> s{_sskulUploadProtocol = a})
+
+-- | Optional inclusive start time of the time range for which the pricing
+-- versions will be returned. Timestamps in the future are not allowed. The
+-- time range has to be within a single calendar month in
+-- America\/Los_Angeles timezone. Time range as a whole is optional. If not
+-- specified, the latest pricing will be returned (up to 12 hours old at
+-- most).
+sskulStartTime :: Lens' ServicesSKUsList (Maybe UTCTime)
+sskulStartTime
+  = lens _sskulStartTime
+      (\ s a -> s{_sskulStartTime = a})
+      . mapping _DateTime
+
+-- | OAuth access token.
+sskulAccessToken :: Lens' ServicesSKUsList (Maybe Text)
+sskulAccessToken
+  = lens _sskulAccessToken
+      (\ s a -> s{_sskulAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+sskulUploadType :: Lens' ServicesSKUsList (Maybe Text)
+sskulUploadType
+  = lens _sskulUploadType
+      (\ s a -> s{_sskulUploadType = a})
+
+-- | Optional exclusive end time of the time range for which the pricing
+-- versions will be returned. Timestamps in the future are not allowed. The
+-- time range has to be within a single calendar month in
+-- America\/Los_Angeles timezone. Time range as a whole is optional. If not
+-- specified, the latest pricing will be returned (up to 12 hours old at
+-- most).
+sskulEndTime :: Lens' ServicesSKUsList (Maybe UTCTime)
+sskulEndTime
+  = lens _sskulEndTime (\ s a -> s{_sskulEndTime = a})
+      . mapping _DateTime
+
+-- | A token identifying a page of results to return. This should be a
+-- \`next_page_token\` value returned from a previous \`ListSkus\` call. If
+-- unspecified, the first page of results is returned.
+sskulPageToken :: Lens' ServicesSKUsList (Maybe Text)
+sskulPageToken
+  = lens _sskulPageToken
+      (\ s a -> s{_sskulPageToken = a})
+
+-- | Requested page size. Defaults to 5000.
+sskulPageSize :: Lens' ServicesSKUsList (Maybe Int32)
+sskulPageSize
+  = lens _sskulPageSize
+      (\ s a -> s{_sskulPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+sskulCallback :: Lens' ServicesSKUsList (Maybe Text)
+sskulCallback
+  = lens _sskulCallback
+      (\ s a -> s{_sskulCallback = a})
+
+instance GoogleRequest ServicesSKUsList where
+        type Rs ServicesSKUsList = ListSKUsResponse
+        type Scopes ServicesSKUsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ServicesSKUsList'{..}
+          = go _sskulParent _sskulXgafv _sskulCurrencyCode
+              _sskulUploadProtocol
+              _sskulStartTime
+              _sskulAccessToken
+              _sskulUploadType
+              _sskulEndTime
+              _sskulPageToken
+              _sskulPageSize
+              _sskulCallback
+              (Just AltJSON)
+              billingService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ServicesSKUsListResource)
+                      mempty
diff --git a/gogol-billing.cabal b/gogol-billing.cabal
--- a/gogol-billing.cabal
+++ b/gogol-billing.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-billing
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Cloud Billing SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -14,8 +14,8 @@
 extra-source-files:    README.md src/.gitkeep
 
 description:
-    Retrieves Google Developers Console billing accounts and associates them
-    with projects.
+    Allows developers to manage billing for their Google Cloud Platform
+    projects programmatically.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
@@ -36,16 +36,23 @@
     exposed-modules:
           Network.Google.Billing
         , Network.Google.Billing.Types
+        , Network.Google.Resource.CloudBilling.BillingAccounts.Create
         , Network.Google.Resource.CloudBilling.BillingAccounts.Get
+        , Network.Google.Resource.CloudBilling.BillingAccounts.GetIAMPolicy
         , Network.Google.Resource.CloudBilling.BillingAccounts.List
+        , Network.Google.Resource.CloudBilling.BillingAccounts.Patch
         , Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List
+        , Network.Google.Resource.CloudBilling.BillingAccounts.SetIAMPolicy
+        , Network.Google.Resource.CloudBilling.BillingAccounts.TestIAMPermissions
         , Network.Google.Resource.CloudBilling.Projects.GetBillingInfo
         , Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo
+        , Network.Google.Resource.CloudBilling.Services.List
+        , Network.Google.Resource.CloudBilling.Services.SKUs.List
 
     other-modules:
           Network.Google.Billing.Types.Product
         , Network.Google.Billing.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
