-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Cloud Billing SDK.
--   
--   Retrieves Google Developers Console billing accounts and associates
--   them with projects.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-billing
@version 0.3.0


module Network.Google.Billing.Types

-- | Default request referring to version <tt>v1</tt> of the Google Cloud
--   Billing API. This contains the host and root path used as a starting
--   point for constructing service requests.
billingService :: ServiceConfig

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | A billing account in <a>Google Developers Console</a>. You can assign
--   a billing account to one or more projects.
--   
--   <i>See:</i> <a>billingAccount</a> smart constructor.
data BillingAccount

-- | Creates a value of <a>BillingAccount</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>baOpen</a></li>
--   <li><a>baName</a></li>
--   <li><a>baDisplayName</a></li>
--   </ul>
billingAccount :: BillingAccount

-- | 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)

-- | 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)

-- | 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)

-- | 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).
--   
--   <i>See:</i> <a>projectBillingInfo</a> smart constructor.
data ProjectBillingInfo

-- | Creates a value of <a>ProjectBillingInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pbiName</a></li>
--   <li><a>pbiBillingAccountName</a></li>
--   <li><a>pbiProjectId</a></li>
--   <li><a>pbiBillingEnabled</a></li>
--   </ul>
projectBillingInfo :: ProjectBillingInfo

-- | 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)

-- | The resource name of the billing account associated with the project,
--   if any. For example, `billingAccounts/012345-567890-ABCDEF`.
pbiBillingAccountName :: Lens' ProjectBillingInfo (Maybe Text)

-- | 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)

-- | 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)

-- | Request message for `ListProjectBillingInfoResponse`.
--   
--   <i>See:</i> <a>listProjectBillingInfoResponse</a> smart constructor.
data ListProjectBillingInfoResponse

-- | Creates a value of <a>ListProjectBillingInfoResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpbirNextPageToken</a></li>
--   <li><a>lpbirProjectBillingInfo</a></li>
--   </ul>
listProjectBillingInfoResponse :: ListProjectBillingInfoResponse

-- | 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)

-- | A list of `ProjectBillingInfo` resources representing the projects
--   associated with the billing account.
lpbirProjectBillingInfo :: Lens' ListProjectBillingInfoResponse [ProjectBillingInfo]

-- | Response message for `ListBillingAccounts`.
--   
--   <i>See:</i> <a>listBillingAccountsResponse</a> smart constructor.
data ListBillingAccountsResponse

-- | Creates a value of <a>ListBillingAccountsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbarNextPageToken</a></li>
--   <li><a>lbarBillingAccounts</a></li>
--   </ul>
listBillingAccountsResponse :: ListBillingAccountsResponse

-- | 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)

-- | A list of billing accounts.
lbarBillingAccounts :: Lens' ListBillingAccountsResponse [BillingAccount]


-- | Gets information about a billing account. The current authenticated
--   user must be an <a>owner of the billing account</a>.
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a> for
--   <tt>cloudbilling.billingAccounts.get</tt>.
module Network.Google.Resource.CloudBilling.BillingAccounts.Get

-- | A resource alias for <tt>cloudbilling.billingAccounts.get</tt> method
--   which the <a>BillingAccountsGet</a> request conforms to.
type BillingAccountsGetResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Text :> (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)))))))))

-- | Creates a value of <a>BillingAccountsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bagXgafv</a></li>
--   <li><a>bagUploadProtocol</a></li>
--   <li><a>bagPp</a></li>
--   <li><a>bagAccessToken</a></li>
--   <li><a>bagUploadType</a></li>
--   <li><a>bagBearerToken</a></li>
--   <li><a>bagName</a></li>
--   <li><a>bagCallback</a></li>
--   </ul>
billingAccountsGet :: Text -> BillingAccountsGet

-- | Gets information about a billing account. The current authenticated
--   user must be an <a>owner of the billing account</a>.
--   
--   <i>See:</i> <a>billingAccountsGet</a> smart constructor.
data BillingAccountsGet

-- | V1 error format.
bagXgafv :: Lens' BillingAccountsGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
bagUploadProtocol :: Lens' BillingAccountsGet (Maybe Text)

-- | Pretty-print response.
bagPp :: Lens' BillingAccountsGet Bool

-- | OAuth access token.
bagAccessToken :: Lens' BillingAccountsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
bagUploadType :: Lens' BillingAccountsGet (Maybe Text)

-- | OAuth bearer token.
bagBearerToken :: Lens' BillingAccountsGet (Maybe Text)

-- | The resource name of the billing account to retrieve. For example,
--   `billingAccounts/012345-567890-ABCDEF`.
bagName :: Lens' BillingAccountsGet Text

-- | JSONP
bagCallback :: Lens' BillingAccountsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudBilling.BillingAccounts.Get.BillingAccountsGet
instance Data.Data.Data Network.Google.Resource.CloudBilling.BillingAccounts.Get.BillingAccountsGet
instance GHC.Show.Show Network.Google.Resource.CloudBilling.BillingAccounts.Get.BillingAccountsGet
instance GHC.Classes.Eq Network.Google.Resource.CloudBilling.BillingAccounts.Get.BillingAccountsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudBilling.BillingAccounts.Get.BillingAccountsGet


-- | Lists the billing accounts that the current authenticated user
--   <a>owns</a>.
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a> for
--   <tt>cloudbilling.billingAccounts.list</tt>.
module Network.Google.Resource.CloudBilling.BillingAccounts.List

-- | A resource alias for <tt>cloudbilling.billingAccounts.list</tt> method
--   which the <a>BillingAccountsList</a> request conforms to.
type BillingAccountsListResource = "v1" :> ("billingAccounts" :> (QueryParam "$.xgafv" Text :> (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)))))))))))

-- | Creates a value of <a>BillingAccountsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>balXgafv</a></li>
--   <li><a>balUploadProtocol</a></li>
--   <li><a>balPp</a></li>
--   <li><a>balAccessToken</a></li>
--   <li><a>balUploadType</a></li>
--   <li><a>balBearerToken</a></li>
--   <li><a>balPageToken</a></li>
--   <li><a>balPageSize</a></li>
--   <li><a>balCallback</a></li>
--   </ul>
billingAccountsList :: BillingAccountsList

-- | Lists the billing accounts that the current authenticated user
--   <a>owns</a>.
--   
--   <i>See:</i> <a>billingAccountsList</a> smart constructor.
data BillingAccountsList

-- | V1 error format.
balXgafv :: Lens' BillingAccountsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
balUploadProtocol :: Lens' BillingAccountsList (Maybe Text)

-- | Pretty-print response.
balPp :: Lens' BillingAccountsList Bool

-- | OAuth access token.
balAccessToken :: Lens' BillingAccountsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
balUploadType :: Lens' BillingAccountsList (Maybe Text)

-- | OAuth bearer token.
balBearerToken :: Lens' BillingAccountsList (Maybe Text)

-- | A token identifying a page of results to return. This should be a
--   `next_page_token` value returned from a previous `ListBillingAccounts`
--   call. If unspecified, the first page of results is returned.
balPageToken :: Lens' BillingAccountsList (Maybe Text)

-- | Requested page size. The maximum page size is 100; this is also the
--   default.
balPageSize :: Lens' BillingAccountsList (Maybe Int32)

-- | JSONP
balCallback :: Lens' BillingAccountsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudBilling.BillingAccounts.List.BillingAccountsList
instance Data.Data.Data Network.Google.Resource.CloudBilling.BillingAccounts.List.BillingAccountsList
instance GHC.Show.Show Network.Google.Resource.CloudBilling.BillingAccounts.List.BillingAccountsList
instance GHC.Classes.Eq Network.Google.Resource.CloudBilling.BillingAccounts.List.BillingAccountsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudBilling.BillingAccounts.List.BillingAccountsList


-- | Lists the projects associated with a billing account. The current
--   authenticated user must be an <a>owner of the billing account</a>.
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a> for
--   <tt>cloudbilling.billingAccounts.projects.list</tt>.
module Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List

-- | A resource alias for
--   <tt>cloudbilling.billingAccounts.projects.list</tt> method which the
--   <a>BillingAccountsProjectsList</a> request conforms to.
type BillingAccountsProjectsListResource = "v1" :> (Capture "name" Text :> ("projects" :> (QueryParam "$.xgafv" Text :> (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))))))))))))

-- | Creates a value of <a>BillingAccountsProjectsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>baplXgafv</a></li>
--   <li><a>baplUploadProtocol</a></li>
--   <li><a>baplPp</a></li>
--   <li><a>baplAccessToken</a></li>
--   <li><a>baplUploadType</a></li>
--   <li><a>baplBearerToken</a></li>
--   <li><a>baplName</a></li>
--   <li><a>baplPageToken</a></li>
--   <li><a>baplPageSize</a></li>
--   <li><a>baplCallback</a></li>
--   </ul>
billingAccountsProjectsList :: Text -> BillingAccountsProjectsList

-- | Lists the projects associated with a billing account. The current
--   authenticated user must be an <a>owner of the billing account</a>.
--   
--   <i>See:</i> <a>billingAccountsProjectsList</a> smart constructor.
data BillingAccountsProjectsList

-- | V1 error format.
baplXgafv :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
baplUploadProtocol :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | Pretty-print response.
baplPp :: Lens' BillingAccountsProjectsList Bool

-- | OAuth access token.
baplAccessToken :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
baplUploadType :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | OAuth bearer token.
baplBearerToken :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | The resource name of the billing account associated with the projects
--   that you want to list. For example,
--   `billingAccounts/012345-567890-ABCDEF`.
baplName :: Lens' BillingAccountsProjectsList Text

-- | A token identifying a page of results to be returned. This should be a
--   `next_page_token` value returned from a previous
--   `ListProjectBillingInfo` call. If unspecified, the first page of
--   results is returned.
baplPageToken :: Lens' BillingAccountsProjectsList (Maybe Text)

-- | Requested page size. The maximum page size is 100; this is also the
--   default.
baplPageSize :: Lens' BillingAccountsProjectsList (Maybe Int32)

-- | JSONP
baplCallback :: Lens' BillingAccountsProjectsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List.BillingAccountsProjectsList
instance Data.Data.Data Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List.BillingAccountsProjectsList
instance GHC.Show.Show Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List.BillingAccountsProjectsList
instance GHC.Classes.Eq Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List.BillingAccountsProjectsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudBilling.BillingAccounts.Projects.List.BillingAccountsProjectsList


-- | Gets the billing information for a project. The current authenticated
--   user must have [permission to view the
--   project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
--   ).
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a> for
--   <tt>cloudbilling.projects.getBillingInfo</tt>.
module Network.Google.Resource.CloudBilling.Projects.GetBillingInfo

-- | A resource alias for <tt>cloudbilling.projects.getBillingInfo</tt>
--   method which the <a>ProjectsGetBillingInfo</a> request conforms to.
type ProjectsGetBillingInfoResource = "v1" :> (Capture "name" Text :> ("billingInfo" :> (QueryParam "$.xgafv" Text :> (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))))))))))

-- | Creates a value of <a>ProjectsGetBillingInfo</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgbiXgafv</a></li>
--   <li><a>pgbiUploadProtocol</a></li>
--   <li><a>pgbiPp</a></li>
--   <li><a>pgbiAccessToken</a></li>
--   <li><a>pgbiUploadType</a></li>
--   <li><a>pgbiBearerToken</a></li>
--   <li><a>pgbiName</a></li>
--   <li><a>pgbiCallback</a></li>
--   </ul>
projectsGetBillingInfo :: Text -> ProjectsGetBillingInfo

-- | Gets the billing information for a project. The current authenticated
--   user must have [permission to view the
--   project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
--   ).
--   
--   <i>See:</i> <a>projectsGetBillingInfo</a> smart constructor.
data ProjectsGetBillingInfo

-- | V1 error format.
pgbiXgafv :: Lens' ProjectsGetBillingInfo (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
pgbiUploadProtocol :: Lens' ProjectsGetBillingInfo (Maybe Text)

-- | Pretty-print response.
pgbiPp :: Lens' ProjectsGetBillingInfo Bool

-- | OAuth access token.
pgbiAccessToken :: Lens' ProjectsGetBillingInfo (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pgbiUploadType :: Lens' ProjectsGetBillingInfo (Maybe Text)

-- | OAuth bearer token.
pgbiBearerToken :: Lens' ProjectsGetBillingInfo (Maybe Text)

-- | The resource name of the project for which billing information is
--   retrieved. For example, `projects/tokyo-rain-123`.
pgbiName :: Lens' ProjectsGetBillingInfo Text

-- | JSONP
pgbiCallback :: Lens' ProjectsGetBillingInfo (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudBilling.Projects.GetBillingInfo.ProjectsGetBillingInfo
instance Data.Data.Data Network.Google.Resource.CloudBilling.Projects.GetBillingInfo.ProjectsGetBillingInfo
instance GHC.Show.Show Network.Google.Resource.CloudBilling.Projects.GetBillingInfo.ProjectsGetBillingInfo
instance GHC.Classes.Eq Network.Google.Resource.CloudBilling.Projects.GetBillingInfo.ProjectsGetBillingInfo
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudBilling.Projects.GetBillingInfo.ProjectsGetBillingInfo


-- | Sets or updates the billing account associated with a project. You
--   specify the new billing account by setting the `billing_account_name`
--   in the `ProjectBillingInfo` resource to the resource name of a billing
--   account. Associating a project with an open billing account enables
--   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
--   [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
--   ) and the <a>billing account</a>. 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.
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a> for
--   <tt>cloudbilling.projects.updateBillingInfo</tt>.
module Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo

-- | A resource alias for <tt>cloudbilling.projects.updateBillingInfo</tt>
--   method which the <a>ProjectsUpdateBillingInfo</a> request conforms to.
type ProjectsUpdateBillingInfoResource = "v1" :> (Capture "name" Text :> ("billingInfo" :> (QueryParam "$.xgafv" Text :> (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)))))))))))

-- | Creates a value of <a>ProjectsUpdateBillingInfo</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pubiXgafv</a></li>
--   <li><a>pubiUploadProtocol</a></li>
--   <li><a>pubiPp</a></li>
--   <li><a>pubiAccessToken</a></li>
--   <li><a>pubiUploadType</a></li>
--   <li><a>pubiPayload</a></li>
--   <li><a>pubiBearerToken</a></li>
--   <li><a>pubiName</a></li>
--   <li><a>pubiCallback</a></li>
--   </ul>
projectsUpdateBillingInfo :: ProjectBillingInfo -> Text -> ProjectsUpdateBillingInfo

-- | Sets or updates the billing account associated with a project. You
--   specify the new billing account by setting the `billing_account_name`
--   in the `ProjectBillingInfo` resource to the resource name of a billing
--   account. Associating a project with an open billing account enables
--   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
--   [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo
--   ) and the <a>billing account</a>. 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.
--   
--   <i>See:</i> <a>projectsUpdateBillingInfo</a> smart constructor.
data ProjectsUpdateBillingInfo

-- | V1 error format.
pubiXgafv :: Lens' ProjectsUpdateBillingInfo (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
pubiUploadProtocol :: Lens' ProjectsUpdateBillingInfo (Maybe Text)

-- | Pretty-print response.
pubiPp :: Lens' ProjectsUpdateBillingInfo Bool

-- | OAuth access token.
pubiAccessToken :: Lens' ProjectsUpdateBillingInfo (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pubiUploadType :: Lens' ProjectsUpdateBillingInfo (Maybe Text)

-- | Multipart request metadata.
pubiPayload :: Lens' ProjectsUpdateBillingInfo ProjectBillingInfo

-- | OAuth bearer token.
pubiBearerToken :: Lens' ProjectsUpdateBillingInfo (Maybe Text)

-- | 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

-- | JSONP
pubiCallback :: Lens' ProjectsUpdateBillingInfo (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo.ProjectsUpdateBillingInfo
instance Data.Data.Data Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo.ProjectsUpdateBillingInfo
instance GHC.Show.Show Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo.ProjectsUpdateBillingInfo
instance GHC.Classes.Eq Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo.ProjectsUpdateBillingInfo
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudBilling.Projects.UpdateBillingInfo.ProjectsUpdateBillingInfo


-- | Retrieves Google Developers Console billing accounts and associates
--   them with projects.
--   
--   <i>See:</i> <a>Google Cloud Billing API Reference</a>
module Network.Google.Billing

-- | Default request referring to version <tt>v1</tt> of the Google Cloud
--   Billing API. This contains the host and root path used as a starting
--   point for constructing service requests.
billingService :: ServiceConfig

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | Represents the entirety of the methods and resources available for the
--   Google Cloud Billing API service.
type BillingAPI = ProjectsGetBillingInfoResource :<|> (ProjectsUpdateBillingInfoResource :<|> (BillingAccountsProjectsListResource :<|> (BillingAccountsListResource :<|> BillingAccountsGetResource)))

-- | A billing account in <a>Google Developers Console</a>. You can assign
--   a billing account to one or more projects.
--   
--   <i>See:</i> <a>billingAccount</a> smart constructor.
data BillingAccount

-- | Creates a value of <a>BillingAccount</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>baOpen</a></li>
--   <li><a>baName</a></li>
--   <li><a>baDisplayName</a></li>
--   </ul>
billingAccount :: BillingAccount

-- | 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)

-- | 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)

-- | 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)

-- | 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).
--   
--   <i>See:</i> <a>projectBillingInfo</a> smart constructor.
data ProjectBillingInfo

-- | Creates a value of <a>ProjectBillingInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pbiName</a></li>
--   <li><a>pbiBillingAccountName</a></li>
--   <li><a>pbiProjectId</a></li>
--   <li><a>pbiBillingEnabled</a></li>
--   </ul>
projectBillingInfo :: ProjectBillingInfo

-- | 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)

-- | The resource name of the billing account associated with the project,
--   if any. For example, `billingAccounts/012345-567890-ABCDEF`.
pbiBillingAccountName :: Lens' ProjectBillingInfo (Maybe Text)

-- | 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)

-- | 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)

-- | Request message for `ListProjectBillingInfoResponse`.
--   
--   <i>See:</i> <a>listProjectBillingInfoResponse</a> smart constructor.
data ListProjectBillingInfoResponse

-- | Creates a value of <a>ListProjectBillingInfoResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpbirNextPageToken</a></li>
--   <li><a>lpbirProjectBillingInfo</a></li>
--   </ul>
listProjectBillingInfoResponse :: ListProjectBillingInfoResponse

-- | 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)

-- | A list of `ProjectBillingInfo` resources representing the projects
--   associated with the billing account.
lpbirProjectBillingInfo :: Lens' ListProjectBillingInfoResponse [ProjectBillingInfo]

-- | Response message for `ListBillingAccounts`.
--   
--   <i>See:</i> <a>listBillingAccountsResponse</a> smart constructor.
data ListBillingAccountsResponse

-- | Creates a value of <a>ListBillingAccountsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbarNextPageToken</a></li>
--   <li><a>lbarBillingAccounts</a></li>
--   </ul>
listBillingAccountsResponse :: ListBillingAccountsResponse

-- | 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)

-- | A list of billing accounts.
lbarBillingAccounts :: Lens' ListBillingAccountsResponse [BillingAccount]
