From dd9b7996b9616b90a540c488742cf44c8544c143 Mon Sep 17 00:00:00 2001 From: yoshi-code-bot <70984784+yoshi-code-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:38:33 -0700 Subject: [PATCH] feat: Automated regeneration of CloudBilling client (#10945) Auto-created at 2024-03-12 02:36:18 +0000 using the toys pull request generator. --- clients/cloud_billing/README.md | 4 +- .../cloud_billing/v1/api/billing_accounts.ex | 222 +++++++++++++++- .../cloud_billing/v1/api/organizations.ex | 251 ++++++++++++++++++ .../google_api/cloud_billing/v1/metadata.ex | 2 +- .../cloud_billing/v1/model/billing_account.ex | 7 +- .../cloud_billing/v1/model/binding.ex | 4 +- .../v1/model/move_billing_account_request.ex | 46 ++++ .../cloud_billing/v1/model/policy.ex | 2 +- .../v1/model/project_billing_info.ex | 6 +- clients/cloud_billing/mix.exs | 4 +- 10 files changed, 532 insertions(+), 16 deletions(-) create mode 100644 clients/cloud_billing/lib/google_api/cloud_billing/v1/api/organizations.ex create mode 100644 clients/cloud_billing/lib/google_api/cloud_billing/v1/model/move_billing_account_request.ex diff --git a/clients/cloud_billing/README.md b/clients/cloud_billing/README.md index b569d47f05..acc47b3207 100644 --- a/clients/cloud_billing/README.md +++ b/clients/cloud_billing/README.md @@ -11,13 +11,13 @@ Install this package from [Hex](https://hex.pm) by adding ```elixir def deps do - [{:google_api_cloud_billing, "~> 0.23"}] + [{:google_api_cloud_billing, "~> 0.24"}] end ``` ## For more information -Product documentation is available at [https://cloud.google.com/billing/](https://cloud.google.com/billing/). +Product documentation is available at [https://cloud.google.com/billing/docs/apis](https://cloud.google.com/billing/docs/apis). Library reference documentation is published on Hexdocs at [https://hexdocs.pm/google_api_cloud_billing](https://hexdocs.pm/google_api_cloud_billing). diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/billing_accounts.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/billing_accounts.ex index 2cec6b9c25..a94a187ae4 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/billing_accounts.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/billing_accounts.ex @@ -26,7 +26,7 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do @library_version Mix.Project.config() |> Keyword.get(:version, "") @doc """ - This method creates [billing subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts). Google Cloud resellers should use the Channel Services APIs, [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create) and [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create). When creating a subaccount, the current authenticated user must have the `billing.accounts.update` IAM permission on the parent 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 parent account has not been provisioned as a reseller account. + This method creates [billing subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts). Google Cloud resellers should use the Channel Services APIs, [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create) and [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create). When creating a subaccount, the current authenticated user must have the `billing.accounts.update` IAM permission on the parent 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 parent account has not been provisioned for subaccounts. ## Parameters @@ -43,6 +43,7 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:parent` (*type:* `String.t`) - Optional. The parent to create a billing account from. Format: - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` * `:body` (*type:* `GoogleApi.CloudBilling.V1.Model.BillingAccount.t`) - * `opts` (*type:* `keyword()`) - Call options @@ -69,6 +70,7 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do :quotaUser => :query, :uploadType => :query, :upload_protocol => :query, + :parent => :query, :body => :body } @@ -234,9 +236,10 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). - * `:filter` (*type:* `String.t`) - 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. + * `:filter` (*type:* `String.t`) - Options for how to filter the returned billing accounts. This only supports filtering for [subaccounts](https://cloud.google.com/billing/docs/concepts) under a single provided parent billing account. (for example, `master_billing_account=billingAccounts/012345-678901-ABCDEF`). Boolean algebra and other fields are not currently supported. * `:pageSize` (*type:* `integer()`) - Requested page size. The maximum page size is 100; this is also the default. * `:pageToken` (*type:* `String.t`) - 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. + * `:parent` (*type:* `String.t`) - Optional. The parent resource to list billing accounts from. Format: - `organizations/{organization_id}`, for example, `organizations/12345678` - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` * `opts` (*type:* `keyword()`) - Call options ## Returns @@ -264,7 +267,8 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do :upload_protocol => :query, :filter => :query, :pageSize => :query, - :pageToken => :query + :pageToken => :query, + :parent => :query } request = @@ -281,6 +285,68 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do ) end + @doc """ + Changes which parent organization a billing account belongs to. + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `name` (*type:* `String.t`) - Required. The resource name of the billing account to move. Must be of the form `billingAccounts/{billing_account_id}`. The specified billing account cannot be a subaccount, since a subaccount always belongs to the same organization as its parent account. + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:body` (*type:* `GoogleApi.CloudBilling.V1.Model.MoveBillingAccountRequest.t`) - + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.BillingAccount{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_billing_accounts_move(Tesla.Env.client(), String.t(), keyword(), keyword()) :: + {:ok, GoogleApi.CloudBilling.V1.Model.BillingAccount.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_billing_accounts_move(connection, name, optional_params \\ [], opts \\ []) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query, + :body => :body + } + + request = + Request.new() + |> Request.method(:post) + |> Request.url("/v1/{+name}:move", %{ + "name" => URI.encode(name, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode(opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.BillingAccount{}]) + end + @doc """ 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. @@ -566,4 +632,154 @@ defmodule GoogleApi.CloudBilling.V1.Api.BillingAccounts do opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.ListProjectBillingInfoResponse{}] ) end + + @doc """ + This method creates [billing subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts). Google Cloud resellers should use the Channel Services APIs, [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create) and [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create). When creating a subaccount, the current authenticated user must have the `billing.accounts.update` IAM permission on the parent 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 parent account has not been provisioned for subaccounts. + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `parent` (*type:* `String.t`) - Optional. The parent to create a billing account from. Format: - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:body` (*type:* `GoogleApi.CloudBilling.V1.Model.BillingAccount.t`) - + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.BillingAccount{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_billing_accounts_sub_accounts_create( + Tesla.Env.client(), + String.t(), + keyword(), + keyword() + ) :: + {:ok, GoogleApi.CloudBilling.V1.Model.BillingAccount.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_billing_accounts_sub_accounts_create( + connection, + parent, + optional_params \\ [], + opts \\ [] + ) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query, + :body => :body + } + + request = + Request.new() + |> Request.method(:post) + |> Request.url("/v1/{+parent}/subAccounts", %{ + "parent" => URI.encode(parent, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode(opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.BillingAccount{}]) + end + + @doc """ + Lists the billing accounts that the current authenticated user has permission to [view](https://cloud.google.com/billing/docs/how-to/billing-access). + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `parent` (*type:* `String.t`) - Optional. The parent resource to list billing accounts from. Format: - `organizations/{organization_id}`, for example, `organizations/12345678` - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:filter` (*type:* `String.t`) - Options for how to filter the returned billing accounts. This only supports filtering for [subaccounts](https://cloud.google.com/billing/docs/concepts) under a single provided parent billing account. (for example, `master_billing_account=billingAccounts/012345-678901-ABCDEF`). Boolean algebra and other fields are not currently supported. + * `:pageSize` (*type:* `integer()`) - Requested page size. The maximum page size is 100; this is also the default. + * `:pageToken` (*type:* `String.t`) - 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. + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_billing_accounts_sub_accounts_list( + Tesla.Env.client(), + String.t(), + keyword(), + keyword() + ) :: + {:ok, GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_billing_accounts_sub_accounts_list( + connection, + parent, + optional_params \\ [], + opts \\ [] + ) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query, + :filter => :query, + :pageSize => :query, + :pageToken => :query + } + + request = + Request.new() + |> Request.method(:get) + |> Request.url("/v1/{+parent}/subAccounts", %{ + "parent" => URI.encode(parent, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode( + opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse{}] + ) + end end diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/organizations.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/organizations.ex new file mode 100644 index 0000000000..1b9603b132 --- /dev/null +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/api/organizations.ex @@ -0,0 +1,251 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# NOTE: This file is auto generated by the elixir code generator program. +# Do not edit this file manually. + +defmodule GoogleApi.CloudBilling.V1.Api.Organizations do + @moduledoc """ + API calls for all endpoints tagged `Organizations`. + """ + + alias GoogleApi.CloudBilling.V1.Connection + alias GoogleApi.Gax.{Request, Response} + + @library_version Mix.Project.config() |> Keyword.get(:version, "") + + @doc """ + This method creates [billing subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts). Google Cloud resellers should use the Channel Services APIs, [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create) and [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create). When creating a subaccount, the current authenticated user must have the `billing.accounts.update` IAM permission on the parent 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 parent account has not been provisioned for subaccounts. + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `parent` (*type:* `String.t`) - Optional. The parent to create a billing account from. Format: - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:body` (*type:* `GoogleApi.CloudBilling.V1.Model.BillingAccount.t`) - + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.BillingAccount{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_organizations_billing_accounts_create( + Tesla.Env.client(), + String.t(), + keyword(), + keyword() + ) :: + {:ok, GoogleApi.CloudBilling.V1.Model.BillingAccount.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_organizations_billing_accounts_create( + connection, + parent, + optional_params \\ [], + opts \\ [] + ) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query, + :body => :body + } + + request = + Request.new() + |> Request.method(:post) + |> Request.url("/v1/{+parent}/billingAccounts", %{ + "parent" => URI.encode(parent, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode(opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.BillingAccount{}]) + end + + @doc """ + Lists the billing accounts that the current authenticated user has permission to [view](https://cloud.google.com/billing/docs/how-to/billing-access). + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `parent` (*type:* `String.t`) - Optional. The parent resource to list billing accounts from. Format: - `organizations/{organization_id}`, for example, `organizations/12345678` - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `:filter` (*type:* `String.t`) - Options for how to filter the returned billing accounts. This only supports filtering for [subaccounts](https://cloud.google.com/billing/docs/concepts) under a single provided parent billing account. (for example, `master_billing_account=billingAccounts/012345-678901-ABCDEF`). Boolean algebra and other fields are not currently supported. + * `:pageSize` (*type:* `integer()`) - Requested page size. The maximum page size is 100; this is also the default. + * `:pageToken` (*type:* `String.t`) - 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. + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_organizations_billing_accounts_list( + Tesla.Env.client(), + String.t(), + keyword(), + keyword() + ) :: + {:ok, GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_organizations_billing_accounts_list( + connection, + parent, + optional_params \\ [], + opts \\ [] + ) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query, + :filter => :query, + :pageSize => :query, + :pageToken => :query + } + + request = + Request.new() + |> Request.method(:get) + |> Request.url("/v1/{+parent}/billingAccounts", %{ + "parent" => URI.encode(parent, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode( + opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.ListBillingAccountsResponse{}] + ) + end + + @doc """ + Changes which parent organization a billing account belongs to. + + ## Parameters + + * `connection` (*type:* `GoogleApi.CloudBilling.V1.Connection.t`) - Connection to server + * `destination_parent` (*type:* `String.t`) - Required. The resource name of the Organization to move the billing account under. Must be of the form `organizations/{organization_id}`. + * `name` (*type:* `String.t`) - Required. The resource name of the billing account to move. Must be of the form `billingAccounts/{billing_account_id}`. The specified billing account cannot be a subaccount, since a subaccount always belongs to the same organization as its parent account. + * `optional_params` (*type:* `keyword()`) - Optional parameters + * `:"$.xgafv"` (*type:* `String.t`) - V1 error format. + * `:access_token` (*type:* `String.t`) - OAuth access token. + * `:alt` (*type:* `String.t`) - Data format for response. + * `:callback` (*type:* `String.t`) - JSONP + * `:fields` (*type:* `String.t`) - Selector specifying which fields to include in a partial response. + * `:key` (*type:* `String.t`) - API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + * `:oauth_token` (*type:* `String.t`) - OAuth 2.0 token for the current user. + * `:prettyPrint` (*type:* `boolean()`) - Returns response with indentations and line breaks. + * `:quotaUser` (*type:* `String.t`) - Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + * `:uploadType` (*type:* `String.t`) - Legacy upload protocol for media (e.g. "media", "multipart"). + * `:upload_protocol` (*type:* `String.t`) - Upload protocol for media (e.g. "raw", "multipart"). + * `opts` (*type:* `keyword()`) - Call options + + ## Returns + + * `{:ok, %GoogleApi.CloudBilling.V1.Model.BillingAccount{}}` on success + * `{:error, info}` on failure + """ + @spec cloudbilling_organizations_billing_accounts_move( + Tesla.Env.client(), + String.t(), + String.t(), + keyword(), + keyword() + ) :: + {:ok, GoogleApi.CloudBilling.V1.Model.BillingAccount.t()} + | {:ok, Tesla.Env.t()} + | {:ok, list()} + | {:error, any()} + def cloudbilling_organizations_billing_accounts_move( + connection, + destination_parent, + name, + optional_params \\ [], + opts \\ [] + ) do + optional_params_config = %{ + :"$.xgafv" => :query, + :access_token => :query, + :alt => :query, + :callback => :query, + :fields => :query, + :key => :query, + :oauth_token => :query, + :prettyPrint => :query, + :quotaUser => :query, + :uploadType => :query, + :upload_protocol => :query + } + + request = + Request.new() + |> Request.method(:get) + |> Request.url("/v1/{+destinationParent}/{+name}:move", %{ + "destinationParent" => URI.encode(destination_parent, &URI.char_unreserved?/1), + "name" => URI.encode(name, &URI.char_unreserved?/1) + }) + |> Request.add_optional_params(optional_params_config, optional_params) + |> Request.library_version(@library_version) + + connection + |> Connection.execute(request) + |> Response.decode(opts ++ [struct: %GoogleApi.CloudBilling.V1.Model.BillingAccount{}]) + end +end diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/metadata.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/metadata.ex index 244c50159f..c69ae1ab14 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/metadata.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/metadata.ex @@ -20,7 +20,7 @@ defmodule GoogleApi.CloudBilling.V1 do API client metadata for GoogleApi.CloudBilling.V1. """ - @discovery_revision "20220908" + @discovery_revision "20240301" def discovery_revision(), do: @discovery_revision end diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/billing_account.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/billing_account.ex index a132e99d8f..0547142bda 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/billing_account.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/billing_account.ex @@ -24,7 +24,8 @@ defmodule GoogleApi.CloudBilling.V1.Model.BillingAccount do * `displayName` (*type:* `String.t`, *default:* `nil`) - The display name given to the billing account, such as `My Billing Account`. This name is displayed in the Google Cloud Console. * `masterBillingAccount` (*type:* `String.t`, *default:* `nil`) - If this account is a [subaccount](https://cloud.google.com/billing/docs/concepts), then this will be the resource name of the parent billing account that it is being resold through. Otherwise this will be empty. * `name` (*type:* `String.t`, *default:* `nil`) - Output only. 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`. - * `open` (*type:* `boolean()`, *default:* `nil`) - Output only. 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. + * `open` (*type:* `boolean()`, *default:* `nil`) - Output only. 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 are unable to use paid services. + * `parent` (*type:* `String.t`, *default:* `nil`) - Output only. The billing account's parent resource identifier. Use the `MoveBillingAccount` method to update the account's parent resource if it is a organization. Format: - `organizations/{organization_id}`, for example, `organizations/12345678` - `billingAccounts/{billing_account_id}`, for example, `billingAccounts/012345-567890-ABCDEF` """ use GoogleApi.Gax.ModelBase @@ -33,13 +34,15 @@ defmodule GoogleApi.CloudBilling.V1.Model.BillingAccount do :displayName => String.t() | nil, :masterBillingAccount => String.t() | nil, :name => String.t() | nil, - :open => boolean() | nil + :open => boolean() | nil, + :parent => String.t() | nil } field(:displayName) field(:masterBillingAccount) field(:name) field(:open) + field(:parent) end defimpl Poison.Decoder, for: GoogleApi.CloudBilling.V1.Model.BillingAccount do diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/binding.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/binding.ex index f9881f9dc4..35007a3d48 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/binding.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/binding.ex @@ -22,8 +22,8 @@ defmodule GoogleApi.CloudBilling.V1.Model.Binding do ## Attributes * `condition` (*type:* `GoogleApi.CloudBilling.V1.Model.Expr.t`, *default:* `nil`) - The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). - * `members` (*type:* `list(String.t)`, *default:* `nil`) - Specifies the principals requesting access for a Google Cloud 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. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. - * `role` (*type:* `String.t`, *default:* `nil`) - Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. + * `members` (*type:* `list(String.t)`, *default:* `nil`) - Specifies the principals requesting access for a Google Cloud 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. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`. + * `role` (*type:* `String.t`, *default:* `nil`) - Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles). """ use GoogleApi.Gax.ModelBase diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/move_billing_account_request.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/move_billing_account_request.ex new file mode 100644 index 0000000000..b143bb4245 --- /dev/null +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/move_billing_account_request.ex @@ -0,0 +1,46 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# NOTE: This file is auto generated by the elixir code generator program. +# Do not edit this file manually. + +defmodule GoogleApi.CloudBilling.V1.Model.MoveBillingAccountRequest do + @moduledoc """ + Request message for `MoveBillingAccount` RPC. + + ## Attributes + + * `destinationParent` (*type:* `String.t`, *default:* `nil`) - Required. The resource name of the Organization to move the billing account under. Must be of the form `organizations/{organization_id}`. + """ + + use GoogleApi.Gax.ModelBase + + @type t :: %__MODULE__{ + :destinationParent => String.t() | nil + } + + field(:destinationParent) +end + +defimpl Poison.Decoder, for: GoogleApi.CloudBilling.V1.Model.MoveBillingAccountRequest do + def decode(value, options) do + GoogleApi.CloudBilling.V1.Model.MoveBillingAccountRequest.decode(value, options) + end +end + +defimpl Poison.Encoder, for: GoogleApi.CloudBilling.V1.Model.MoveBillingAccountRequest do + def encode(value, options) do + GoogleApi.Gax.ModelBase.encode(value, options) + end +end diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/policy.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/policy.ex index 11e4fc8e83..0fe2faf821 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/policy.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/policy.ex @@ -17,7 +17,7 @@ defmodule GoogleApi.CloudBilling.V1.Model.Policy do @moduledoc """ - An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { "bindings": [ { "role": "roles/resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { "role": "roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com" ], "condition": { "title": "expirable access", "description": "Does not grant access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag": "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). + An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { "bindings": [ { "role": "roles/resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { "role": "roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com" ], "condition": { "title": "expirable access", "description": "Does not grant access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag": "BwWWja0YfJA=", "version": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). ## Attributes diff --git a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/project_billing_info.ex b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/project_billing_info.ex index d59e4ab6ab..ba4baff50e 100644 --- a/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/project_billing_info.ex +++ b/clients/cloud_billing/lib/google_api/cloud_billing/v1/model/project_billing_info.ex @@ -22,9 +22,9 @@ defmodule GoogleApi.CloudBilling.V1.Model.ProjectBillingInfo do ## Attributes * `billingAccountName` (*type:* `String.t`, *default:* `nil`) - The resource name of the billing account associated with the project, if any. For example, `billingAccounts/012345-567890-ABCDEF`. - * `billingEnabled` (*type:* `boolean()`, *default:* `nil`) - 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. - * `name` (*type:* `String.t`, *default:* `nil`) - 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. - * `projectId` (*type:* `String.t`, *default:* `nil`) - 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. + * `billingEnabled` (*type:* `boolean()`, *default:* `nil`) - Output only. 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. + * `name` (*type:* `String.t`, *default:* `nil`) - Output only. 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`. + * `projectId` (*type:* `String.t`, *default:* `nil`) - Output only. 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. """ use GoogleApi.Gax.ModelBase diff --git a/clients/cloud_billing/mix.exs b/clients/cloud_billing/mix.exs index ee8a1127e7..8686053ed8 100644 --- a/clients/cloud_billing/mix.exs +++ b/clients/cloud_billing/mix.exs @@ -18,7 +18,7 @@ defmodule GoogleApi.CloudBilling.Mixfile do use Mix.Project - @version "0.23.6" + @version "0.24.0" def project() do [ @@ -59,7 +59,7 @@ defmodule GoogleApi.CloudBilling.Mixfile do licenses: ["Apache 2.0"], links: %{ "GitHub" => "https://github.com/googleapis/elixir-google-api/tree/master/clients/cloud_billing", - "Homepage" => "https://cloud.google.com/billing/" + "Homepage" => "https://cloud.google.com/billing/docs/apis" } ] end