diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Budget.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Budget.java index e4680a30..5ba5c4c8 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Budget.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Budget.java @@ -25,8 +25,8 @@ * A budget is a plan that describes what you expect to spend on Cloud * projects, plus the rules to execute as spend is tracked against that plan, * (for example, send an alert when 90% of the target spend is met). - * Currently all plans are monthly budgets so the usage period(s) tracked are - * implied (calendar months of usage back-to-back). + * The budget time period is configurable, with options such as month (default), + * quarter, year, or custom time period. * * * Protobuf type {@code google.cloud.billing.budgets.v1.Budget} @@ -308,8 +308,9 @@ public com.google.protobuf.ByteString getDisplayNameBytes() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -326,8 +327,9 @@ public boolean hasBudgetFilter() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -346,8 +348,9 @@ public com.google.cloud.billing.budgets.v1.Filter getBudgetFilter() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -846,8 +849,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * A budget is a plan that describes what you expect to spend on Cloud * projects, plus the rules to execute as spend is tracked against that plan, * (for example, send an alert when 90% of the target spend is met). - * Currently all plans are monthly budgets so the usage period(s) tracked are - * implied (calendar months of usage back-to-back). + * The budget time period is configurable, with options such as month (default), + * quarter, year, or custom time period. * * * Protobuf type {@code google.cloud.billing.budgets.v1.Budget} @@ -1340,8 +1343,9 @@ public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1357,8 +1361,9 @@ public boolean hasBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1380,8 +1385,9 @@ public com.google.cloud.billing.budgets.v1.Filter getBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1405,8 +1411,9 @@ public Builder setBudgetFilter(com.google.cloud.billing.budgets.v1.Filter value) * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1428,8 +1435,9 @@ public Builder setBudgetFilter( * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1457,8 +1465,9 @@ public Builder mergeBudgetFilter(com.google.cloud.billing.budgets.v1.Filter valu * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1480,8 +1489,9 @@ public Builder clearBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1497,8 +1507,9 @@ public com.google.cloud.billing.budgets.v1.Filter.Builder getBudgetFilterBuilder * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1518,8 +1529,9 @@ public com.google.cloud.billing.budgets.v1.FilterOrBuilder getBudgetFilterOrBuil * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmount.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmount.java index 251fe6b0..ca3fdb08 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmount.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmount.java @@ -252,6 +252,10 @@ public com.google.type.MoneyOrBuilder getSpecifiedAmountOrBuilder() { * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -267,6 +271,10 @@ public boolean hasLastPeriodAmount() { * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -285,6 +293,10 @@ public com.google.cloud.billing.budgets.v1.LastPeriodAmount getLastPeriodAmount( * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -931,6 +943,10 @@ public com.google.type.MoneyOrBuilder getSpecifiedAmountOrBuilder() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -946,6 +962,10 @@ public boolean hasLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -971,6 +991,10 @@ public com.google.cloud.billing.budgets.v1.LastPeriodAmount getLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -993,6 +1017,10 @@ public Builder setLastPeriodAmount(com.google.cloud.billing.budgets.v1.LastPerio * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -1013,6 +1041,10 @@ public Builder setLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -1046,6 +1078,10 @@ public Builder mergeLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -1071,6 +1107,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -1084,6 +1124,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -1105,6 +1149,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmountOrBuilder.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmountOrBuilder.java index 59955311..2406cdff 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmountOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetAmountOrBuilder.java @@ -75,6 +75,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -87,6 +91,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; @@ -99,6 +107,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1.LastPeriodAmount last_period_amount = 2; diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetModelProto.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetModelProto.java index 056668d6..9993f6af 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetModelProto.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetModelProto.java @@ -55,6 +55,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_billing_budgets_v1_Filter_LabelsEntry_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_billing_budgets_v1_Filter_LabelsEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_billing_budgets_v1_CustomPeriod_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -68,49 +72,59 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "_model.proto\022\037google.cloud.billing.budge" + "ts.v1\032\037google/api/field_behavior.proto\032\031" + "google/api/resource.proto\032\034google/protob" - + "uf/struct.proto\032\027google/type/money.proto" - + "\"\317\003\n\006Budget\022\021\n\004name\030\001 \001(\tB\003\340A\003\022\024\n\014displa" - + "y_name\030\002 \001(\t\022C\n\rbudget_filter\030\003 \001(\0132\'.go" - + "ogle.cloud.billing.budgets.v1.FilterB\003\340A" - + "\001\022B\n\006amount\030\004 \001(\0132-.google.cloud.billing" - + ".budgets.v1.BudgetAmountB\003\340A\002\022L\n\017thresho" - + "ld_rules\030\005 \003(\0132..google.cloud.billing.bu" - + "dgets.v1.ThresholdRuleB\003\340A\001\022S\n\022notificat" - + "ions_rule\030\006 \001(\01322.google.cloud.billing.b" - + "udgets.v1.NotificationsRuleB\003\340A\001\022\021\n\004etag" - + "\030\007 \001(\tB\003\340A\001:]\352AZ\n$billingbudgets.googlea" - + "pis.com/Budget\0222billingAccounts/{billing" - + "_account}/budgets/{budget}\"\240\001\n\014BudgetAmo" - + "unt\022.\n\020specified_amount\030\001 \001(\0132\022.google.t" - + "ype.MoneyH\000\022O\n\022last_period_amount\030\002 \001(\0132" - + "1.google.cloud.billing.budgets.v1.LastPe" - + "riodAmountH\000B\017\n\rbudget_amount\"\022\n\020LastPer" - + "iodAmount\"\310\001\n\rThresholdRule\022\036\n\021threshold" - + "_percent\030\001 \001(\001B\003\340A\002\022N\n\013spend_basis\030\002 \001(\016" - + "24.google.cloud.billing.budgets.v1.Thres" - + "holdRule.BasisB\003\340A\001\"G\n\005Basis\022\025\n\021BASIS_UN" - + "SPECIFIED\020\000\022\021\n\rCURRENT_SPEND\020\001\022\024\n\020FORECA" - + "STED_SPEND\020\002\"\247\001\n\021NotificationsRule\022\031\n\014pu" - + "bsub_topic\030\001 \001(\tB\003\340A\001\022\033\n\016schema_version\030" - + "\002 \001(\tB\003\340A\001\022-\n monitoring_notification_ch" - + "annels\030\003 \003(\tB\003\340A\001\022+\n\036disable_default_iam" - + "_recipients\030\004 \001(\010B\003\340A\001\"\365\003\n\006Filter\022\025\n\010pro" - + "jects\030\001 \003(\tB\003\340A\001\022\031\n\014credit_types\030\007 \003(\tB\003" - + "\340A\001\022a\n\026credit_types_treatment\030\004 \001(\0162<.go" - + "ogle.cloud.billing.budgets.v1.Filter.Cre" - + "ditTypesTreatmentB\003\340A\001\022\025\n\010services\030\003 \003(\t" - + "B\003\340A\001\022\030\n\013subaccounts\030\005 \003(\tB\003\340A\001\022H\n\006label" - + "s\030\006 \003(\01323.google.cloud.billing.budgets.v" - + "1.Filter.LabelsEntryB\003\340A\001\032I\n\013LabelsEntry" - + "\022\013\n\003key\030\001 \001(\t\022)\n\005value\030\002 \001(\0132\032.google.pr" - + "otobuf.ListValue:\0028\001\"\217\001\n\024CreditTypesTrea" - + "tment\022&\n\"CREDIT_TYPES_TREATMENT_UNSPECIF" - + "IED\020\000\022\027\n\023INCLUDE_ALL_CREDITS\020\001\022\027\n\023EXCLUD" - + "E_ALL_CREDITS\020\002\022\035\n\031INCLUDE_SPECIFIED_CRE" - + "DITS\020\003B\201\001\n#com.google.cloud.billing.budg" - + "ets.v1B\020BudgetModelProtoP\001ZFgoogle.golan" - + "g.org/genproto/googleapis/cloud/billing/" - + "budgets/v1;budgetsb\006proto3" + + "uf/struct.proto\032\026google/type/date.proto\032" + + "\027google/type/money.proto\"\317\003\n\006Budget\022\021\n\004n" + + "ame\030\001 \001(\tB\003\340A\003\022\024\n\014display_name\030\002 \001(\t\022C\n\r" + + "budget_filter\030\003 \001(\0132\'.google.cloud.billi" + + "ng.budgets.v1.FilterB\003\340A\001\022B\n\006amount\030\004 \001(" + + "\0132-.google.cloud.billing.budgets.v1.Budg" + + "etAmountB\003\340A\002\022L\n\017threshold_rules\030\005 \003(\0132." + + ".google.cloud.billing.budgets.v1.Thresho" + + "ldRuleB\003\340A\001\022S\n\022notifications_rule\030\006 \001(\0132" + + "2.google.cloud.billing.budgets.v1.Notifi" + + "cationsRuleB\003\340A\001\022\021\n\004etag\030\007 \001(\tB\003\340A\001:]\352AZ" + + "\n$billingbudgets.googleapis.com/Budget\0222" + + "billingAccounts/{billing_account}/budget" + + "s/{budget}\"\240\001\n\014BudgetAmount\022.\n\020specified" + + "_amount\030\001 \001(\0132\022.google.type.MoneyH\000\022O\n\022l" + + "ast_period_amount\030\002 \001(\01321.google.cloud.b" + + "illing.budgets.v1.LastPeriodAmountH\000B\017\n\r" + + "budget_amount\"\022\n\020LastPeriodAmount\"\310\001\n\rTh" + + "resholdRule\022\036\n\021threshold_percent\030\001 \001(\001B\003" + + "\340A\002\022N\n\013spend_basis\030\002 \001(\01624.google.cloud." + + "billing.budgets.v1.ThresholdRule.BasisB\003" + + "\340A\001\"G\n\005Basis\022\025\n\021BASIS_UNSPECIFIED\020\000\022\021\n\rC" + + "URRENT_SPEND\020\001\022\024\n\020FORECASTED_SPEND\020\002\"\247\001\n" + + "\021NotificationsRule\022\031\n\014pubsub_topic\030\001 \001(\t" + + "B\003\340A\001\022\033\n\016schema_version\030\002 \001(\tB\003\340A\001\022-\n mo" + + "nitoring_notification_channels\030\003 \003(\tB\003\340A" + + "\001\022+\n\036disable_default_iam_recipients\030\004 \001(" + + "\010B\003\340A\001\"\243\005\n\006Filter\022\025\n\010projects\030\001 \003(\tB\003\340A\001" + + "\022\031\n\014credit_types\030\007 \003(\tB\003\340A\001\022a\n\026credit_ty" + + "pes_treatment\030\004 \001(\0162<.google.cloud.billi" + + "ng.budgets.v1.Filter.CreditTypesTreatmen" + + "tB\003\340A\001\022\025\n\010services\030\003 \003(\tB\003\340A\001\022\030\n\013subacco" + + "unts\030\005 \003(\tB\003\340A\001\022H\n\006labels\030\006 \003(\01323.google" + + ".cloud.billing.budgets.v1.Filter.LabelsE" + + "ntryB\003\340A\001\022O\n\017calendar_period\030\010 \001(\0162/.goo" + + "gle.cloud.billing.budgets.v1.CalendarPer" + + "iodB\003\340A\001H\000\022K\n\rcustom_period\030\t \001(\0132-.goog" + + "le.cloud.billing.budgets.v1.CustomPeriod" + + "B\003\340A\001H\000\032I\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022)\n\005v" + + "alue\030\002 \001(\0132\032.google.protobuf.ListValue:\002" + + "8\001\"\217\001\n\024CreditTypesTreatment\022&\n\"CREDIT_TY" + + "PES_TREATMENT_UNSPECIFIED\020\000\022\027\n\023INCLUDE_A" + + "LL_CREDITS\020\001\022\027\n\023EXCLUDE_ALL_CREDITS\020\002\022\035\n" + + "\031INCLUDE_SPECIFIED_CREDITS\020\003B\016\n\014usage_pe" + + "riod\"d\n\014CustomPeriod\022*\n\nstart_date\030\001 \001(\013" + + "2\021.google.type.DateB\003\340A\002\022(\n\010end_date\030\002 \001" + + "(\0132\021.google.type.DateB\003\340A\001*S\n\016CalendarPe" + + "riod\022\037\n\033CALENDAR_PERIOD_UNSPECIFIED\020\000\022\t\n" + + "\005MONTH\020\001\022\013\n\007QUARTER\020\002\022\010\n\004YEAR\020\003B\201\001\n#com." + + "google.cloud.billing.budgets.v1B\020BudgetM" + + "odelProtoP\001ZFgoogle.golang.org/genproto/" + + "googleapis/cloud/billing/budgets/v1;budg" + + "etsb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -119,6 +133,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.api.FieldBehaviorProto.getDescriptor(), com.google.api.ResourceProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), + com.google.type.DateProto.getDescriptor(), com.google.type.MoneyProto.getDescriptor(), }); internal_static_google_cloud_billing_budgets_v1_Budget_descriptor = @@ -180,6 +195,9 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Services", "Subaccounts", "Labels", + "CalendarPeriod", + "CustomPeriod", + "UsagePeriod", }); internal_static_google_cloud_billing_budgets_v1_Filter_LabelsEntry_descriptor = internal_static_google_cloud_billing_budgets_v1_Filter_descriptor.getNestedTypes().get(0); @@ -189,6 +207,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Key", "Value", }); + internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_google_cloud_billing_budgets_v1_CustomPeriod_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor, + new java.lang.String[] { + "StartDate", "EndDate", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); @@ -198,6 +224,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.api.FieldBehaviorProto.getDescriptor(); com.google.api.ResourceProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); + com.google.type.DateProto.getDescriptor(); com.google.type.MoneyProto.getDescriptor(); } diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetOrBuilder.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetOrBuilder.java index 7d30fad5..a4f0d489 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetOrBuilder.java @@ -83,8 +83,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -98,8 +99,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -113,8 +115,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CalendarPeriod.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CalendarPeriod.java new file mode 100644 index 00000000..e33a4f3c --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CalendarPeriod.java @@ -0,0 +1,191 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1/budget_model.proto + +package com.google.cloud.billing.budgets.v1; + +/** + * + * + *
+ * A `CalendarPeriod` represents the abstract concept of a time period that
+ * has a canonical start. Grammatically, "the start of the current
+ * `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian
+ * Pacific Time (UTC-8).
+ * 
+ * + * Protobuf enum {@code google.cloud.billing.budgets.v1.CalendarPeriod} + */ +public enum CalendarPeriod implements com.google.protobuf.ProtocolMessageEnum { + /** CALENDAR_PERIOD_UNSPECIFIED = 0; */ + CALENDAR_PERIOD_UNSPECIFIED(0), + /** + * + * + *
+   * A month. Month starts on the first day of each month, such as January 1,
+   * February 1, March 1, and so on.
+   * 
+ * + * MONTH = 1; + */ + MONTH(1), + /** + * + * + *
+   * A quarter. Quarters start on dates January 1, April 1, July 1, and October
+   * 1 of each year.
+   * 
+ * + * QUARTER = 2; + */ + QUARTER(2), + /** + * + * + *
+   * A year. Year starts on January 1.
+   * 
+ * + * YEAR = 3; + */ + YEAR(3), + UNRECOGNIZED(-1), + ; + + /** CALENDAR_PERIOD_UNSPECIFIED = 0; */ + public static final int CALENDAR_PERIOD_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+   * A month. Month starts on the first day of each month, such as January 1,
+   * February 1, March 1, and so on.
+   * 
+ * + * MONTH = 1; + */ + public static final int MONTH_VALUE = 1; + /** + * + * + *
+   * A quarter. Quarters start on dates January 1, April 1, July 1, and October
+   * 1 of each year.
+   * 
+ * + * QUARTER = 2; + */ + public static final int QUARTER_VALUE = 2; + /** + * + * + *
+   * A year. Year starts on January 1.
+   * 
+ * + * YEAR = 3; + */ + public static final int YEAR_VALUE = 3; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CalendarPeriod valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CalendarPeriod forNumber(int value) { + switch (value) { + case 0: + return CALENDAR_PERIOD_UNSPECIFIED; + case 1: + return MONTH; + case 2: + return QUARTER; + case 3: + return YEAR; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CalendarPeriod findValueByNumber(int number) { + return CalendarPeriod.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto.getDescriptor() + .getEnumTypes() + .get(0); + } + + private static final CalendarPeriod[] VALUES = values(); + + public static CalendarPeriod valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private CalendarPeriod(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.cloud.billing.budgets.v1.CalendarPeriod) +} diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriod.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriod.java new file mode 100644 index 00000000..16ccd2fc --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriod.java @@ -0,0 +1,999 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1/budget_model.proto + +package com.google.cloud.billing.budgets.v1; + +/** + * + * + *
+ * All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).
+ * 
+ * + * Protobuf type {@code google.cloud.billing.budgets.v1.CustomPeriod} + */ +public final class CustomPeriod extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.billing.budgets.v1.CustomPeriod) + CustomPeriodOrBuilder { + private static final long serialVersionUID = 0L; + // Use CustomPeriod.newBuilder() to construct. + private CustomPeriod(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CustomPeriod() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CustomPeriod(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private CustomPeriod( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.type.Date.Builder subBuilder = null; + if (startDate_ != null) { + subBuilder = startDate_.toBuilder(); + } + startDate_ = input.readMessage(com.google.type.Date.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startDate_); + startDate_ = subBuilder.buildPartial(); + } + + break; + } + case 18: + { + com.google.type.Date.Builder subBuilder = null; + if (endDate_ != null) { + subBuilder = endDate_.toBuilder(); + } + endDate_ = input.readMessage(com.google.type.Date.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endDate_); + endDate_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto + .internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto + .internal_static_google_cloud_billing_budgets_v1_CustomPeriod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.billing.budgets.v1.CustomPeriod.class, + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder.class); + } + + public static final int START_DATE_FIELD_NUMBER = 1; + private com.google.type.Date startDate_; + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + @java.lang.Override + public boolean hasStartDate() { + return startDate_ != null; + } + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + @java.lang.Override + public com.google.type.Date getStartDate() { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getStartDateOrBuilder() { + return getStartDate(); + } + + public static final int END_DATE_FIELD_NUMBER = 2; + private com.google.type.Date endDate_; + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + @java.lang.Override + public boolean hasEndDate() { + return endDate_ != null; + } + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + @java.lang.Override + public com.google.type.Date getEndDate() { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getEndDateOrBuilder() { + return getEndDate(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (startDate_ != null) { + output.writeMessage(1, getStartDate()); + } + if (endDate_ != null) { + output.writeMessage(2, getEndDate()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (startDate_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStartDate()); + } + if (endDate_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getEndDate()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.billing.budgets.v1.CustomPeriod)) { + return super.equals(obj); + } + com.google.cloud.billing.budgets.v1.CustomPeriod other = + (com.google.cloud.billing.budgets.v1.CustomPeriod) obj; + + if (hasStartDate() != other.hasStartDate()) return false; + if (hasStartDate()) { + if (!getStartDate().equals(other.getStartDate())) return false; + } + if (hasEndDate() != other.hasEndDate()) return false; + if (hasEndDate()) { + if (!getEndDate().equals(other.getEndDate())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasStartDate()) { + hash = (37 * hash) + START_DATE_FIELD_NUMBER; + hash = (53 * hash) + getStartDate().hashCode(); + } + if (hasEndDate()) { + hash = (37 * hash) + END_DATE_FIELD_NUMBER; + hash = (53 * hash) + getEndDate().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.cloud.billing.budgets.v1.CustomPeriod prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).
+   * 
+ * + * Protobuf type {@code google.cloud.billing.budgets.v1.CustomPeriod} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.billing.budgets.v1.CustomPeriod) + com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto + .internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto + .internal_static_google_cloud_billing_budgets_v1_CustomPeriod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.billing.budgets.v1.CustomPeriod.class, + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder.class); + } + + // Construct using com.google.cloud.billing.budgets.v1.CustomPeriod.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (startDateBuilder_ == null) { + startDate_ = null; + } else { + startDate_ = null; + startDateBuilder_ = null; + } + if (endDateBuilder_ == null) { + endDate_ = null; + } else { + endDate_ = null; + endDateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.billing.budgets.v1.BudgetModelProto + .internal_static_google_cloud_billing_budgets_v1_CustomPeriod_descriptor; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod getDefaultInstanceForType() { + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod build() { + com.google.cloud.billing.budgets.v1.CustomPeriod result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod buildPartial() { + com.google.cloud.billing.budgets.v1.CustomPeriod result = + new com.google.cloud.billing.budgets.v1.CustomPeriod(this); + if (startDateBuilder_ == null) { + result.startDate_ = startDate_; + } else { + result.startDate_ = startDateBuilder_.build(); + } + if (endDateBuilder_ == null) { + result.endDate_ = endDate_; + } else { + result.endDate_ = endDateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.billing.budgets.v1.CustomPeriod) { + return mergeFrom((com.google.cloud.billing.budgets.v1.CustomPeriod) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.billing.budgets.v1.CustomPeriod other) { + if (other == com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance()) + return this; + if (other.hasStartDate()) { + mergeStartDate(other.getStartDate()); + } + if (other.hasEndDate()) { + mergeEndDate(other.getEndDate()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.billing.budgets.v1.CustomPeriod parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.cloud.billing.budgets.v1.CustomPeriod) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private com.google.type.Date startDate_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + startDateBuilder_; + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + public boolean hasStartDate() { + return startDateBuilder_ != null || startDate_ != null; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + public com.google.type.Date getStartDate() { + if (startDateBuilder_ == null) { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } else { + return startDateBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder setStartDate(com.google.type.Date value) { + if (startDateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + startDate_ = value; + onChanged(); + } else { + startDateBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder setStartDate(com.google.type.Date.Builder builderForValue) { + if (startDateBuilder_ == null) { + startDate_ = builderForValue.build(); + onChanged(); + } else { + startDateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder mergeStartDate(com.google.type.Date value) { + if (startDateBuilder_ == null) { + if (startDate_ != null) { + startDate_ = com.google.type.Date.newBuilder(startDate_).mergeFrom(value).buildPartial(); + } else { + startDate_ = value; + } + onChanged(); + } else { + startDateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder clearStartDate() { + if (startDateBuilder_ == null) { + startDate_ = null; + onChanged(); + } else { + startDate_ = null; + startDateBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public com.google.type.Date.Builder getStartDateBuilder() { + + onChanged(); + return getStartDateFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public com.google.type.DateOrBuilder getStartDateOrBuilder() { + if (startDateBuilder_ != null) { + return startDateBuilder_.getMessageOrBuilder(); + } else { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + getStartDateFieldBuilder() { + if (startDateBuilder_ == null) { + startDateBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder>( + getStartDate(), getParentForChildren(), isClean()); + startDate_ = null; + } + return startDateBuilder_; + } + + private com.google.type.Date endDate_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + endDateBuilder_; + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + public boolean hasEndDate() { + return endDateBuilder_ != null || endDate_ != null; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + public com.google.type.Date getEndDate() { + if (endDateBuilder_ == null) { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } else { + return endDateBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder setEndDate(com.google.type.Date value) { + if (endDateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endDate_ = value; + onChanged(); + } else { + endDateBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder setEndDate(com.google.type.Date.Builder builderForValue) { + if (endDateBuilder_ == null) { + endDate_ = builderForValue.build(); + onChanged(); + } else { + endDateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder mergeEndDate(com.google.type.Date value) { + if (endDateBuilder_ == null) { + if (endDate_ != null) { + endDate_ = com.google.type.Date.newBuilder(endDate_).mergeFrom(value).buildPartial(); + } else { + endDate_ = value; + } + onChanged(); + } else { + endDateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder clearEndDate() { + if (endDateBuilder_ == null) { + endDate_ = null; + onChanged(); + } else { + endDate_ = null; + endDateBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public com.google.type.Date.Builder getEndDateBuilder() { + + onChanged(); + return getEndDateFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public com.google.type.DateOrBuilder getEndDateOrBuilder() { + if (endDateBuilder_ != null) { + return endDateBuilder_.getMessageOrBuilder(); + } else { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + getEndDateFieldBuilder() { + if (endDateBuilder_ == null) { + endDateBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder>( + getEndDate(), getParentForChildren(), isClean()); + endDate_ = null; + } + return endDateBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.billing.budgets.v1.CustomPeriod) + } + + // @@protoc_insertion_point(class_scope:google.cloud.billing.budgets.v1.CustomPeriod) + private static final com.google.cloud.billing.budgets.v1.CustomPeriod DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.billing.budgets.v1.CustomPeriod(); + } + + public static com.google.cloud.billing.budgets.v1.CustomPeriod getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CustomPeriod parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CustomPeriod(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriodOrBuilder.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriodOrBuilder.java new file mode 100644 index 00000000..51d71a3c --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriodOrBuilder.java @@ -0,0 +1,101 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1/budget_model.proto + +package com.google.cloud.billing.budgets.v1; + +public interface CustomPeriodOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.billing.budgets.v1.CustomPeriod) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + boolean hasStartDate(); + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + com.google.type.Date getStartDate(); + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + com.google.type.DateOrBuilder getStartDateOrBuilder(); + + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + boolean hasEndDate(); + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + com.google.type.Date getEndDate(); + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + com.google.type.DateOrBuilder getEndDateOrBuilder(); +} diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Filter.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Filter.java index 17988c17..bd6323f3 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Filter.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Filter.java @@ -137,6 +137,31 @@ private Filter( creditTypes_.add(s); break; } + case 64: + { + int rawValue = input.readEnum(); + usagePeriodCase_ = 8; + usagePeriod_ = rawValue; + break; + } + case 74: + { + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder subBuilder = null; + if (usagePeriodCase_ == 9) { + subBuilder = + ((com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_).toBuilder(); + } + usagePeriod_ = + input.readMessage( + com.google.cloud.billing.budgets.v1.CustomPeriod.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom( + (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_); + usagePeriod_ = subBuilder.buildPartial(); + } + usagePeriodCase_ = 9; + break; + } default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { @@ -198,22 +223,17 @@ protected com.google.protobuf.MapField internalGetMapField(int number) { * * *
-   * Specifies how credits should be treated when determining spend for
-   * threshold calculations.
+   * Specifies how credits are applied when determining the spend for
+   * threshold calculations. Budgets track the total cost minus any applicable
+   * selected credits.
+   * [See the documentation for a list of credit
+   * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type).
    * 
* * Protobuf enum {@code google.cloud.billing.budgets.v1.Filter.CreditTypesTreatment} */ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageEnum { - /** - * - * - *
-     * This is an invalid value.
-     * 
- * - * CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; - */ + /** CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; */ CREDIT_TYPES_TREATMENT_UNSPECIFIED(0), /** * @@ -241,7 +261,9 @@ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageE * * *
-     * Credit types specified in the credit_types field are subtracted from the
+     * [Credit
+     * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type)
+     * specified in the credit_types field are subtracted from the
      * gross cost to determine the spend for threshold calculations.
      * 
* @@ -251,15 +273,7 @@ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageE UNRECOGNIZED(-1), ; - /** - * - * - *
-     * This is an invalid value.
-     * 
- * - * CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; - */ + /** CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; */ public static final int CREDIT_TYPES_TREATMENT_UNSPECIFIED_VALUE = 0; /** * @@ -287,7 +301,9 @@ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageE * * *
-     * Credit types specified in the credit_types field are subtracted from the
+     * [Credit
+     * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type)
+     * specified in the credit_types field are subtracted from the
      * gross cost to determine the spend for threshold calculations.
      * 
* @@ -383,6 +399,53 @@ private CreditTypesTreatment(int value) { // @@protoc_insertion_point(enum_scope:google.cloud.billing.budgets.v1.Filter.CreditTypesTreatment) } + private int usagePeriodCase_ = 0; + private java.lang.Object usagePeriod_; + + public enum UsagePeriodCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + CALENDAR_PERIOD(8), + CUSTOM_PERIOD(9), + USAGEPERIOD_NOT_SET(0); + private final int value; + + private UsagePeriodCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static UsagePeriodCase valueOf(int value) { + return forNumber(value); + } + + public static UsagePeriodCase forNumber(int value) { + switch (value) { + case 8: + return CALENDAR_PERIOD; + case 9: + return CUSTOM_PERIOD; + case 0: + return USAGEPERIOD_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public UsagePeriodCase getUsagePeriodCase() { + return UsagePeriodCase.forNumber(usagePeriodCase_); + } + public static final int PROJECTS_FIELD_NUMBER = 1; private com.google.protobuf.LazyStringList projects_; /** @@ -470,12 +533,11 @@ public com.google.protobuf.ByteString getProjectsBytes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -493,12 +555,11 @@ public com.google.protobuf.ProtocolStringList getCreditTypesList() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -516,12 +577,11 @@ public int getCreditTypesCount() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -540,12 +600,11 @@ public java.lang.String getCreditTypes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -886,6 +945,143 @@ public com.google.protobuf.ListValue getLabelsOrThrow(java.lang.String key) { return map.get(key); } + public static final int CALENDAR_PERIOD_FIELD_NUMBER = 8; + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + public boolean hasCalendarPeriod() { + return usagePeriodCase_ == 8; + } + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + public int getCalendarPeriodValue() { + if (usagePeriodCase_ == 8) { + return (java.lang.Integer) usagePeriod_; + } + return 0; + } + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + public com.google.cloud.billing.budgets.v1.CalendarPeriod getCalendarPeriod() { + if (usagePeriodCase_ == 8) { + @SuppressWarnings("deprecation") + com.google.cloud.billing.budgets.v1.CalendarPeriod result = + com.google.cloud.billing.budgets.v1.CalendarPeriod.valueOf( + (java.lang.Integer) usagePeriod_); + return result == null + ? com.google.cloud.billing.budgets.v1.CalendarPeriod.UNRECOGNIZED + : result; + } + return com.google.cloud.billing.budgets.v1.CalendarPeriod.CALENDAR_PERIOD_UNSPECIFIED; + } + + public static final int CUSTOM_PERIOD_FIELD_NUMBER = 9; + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + @java.lang.Override + public boolean hasCustomPeriod() { + return usagePeriodCase_ == 9; + } + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod getCustomPeriod() { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder getCustomPeriodOrBuilder() { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -920,6 +1116,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < creditTypes_.size(); i++) { com.google.protobuf.GeneratedMessageV3.writeString(output, 7, creditTypes_.getRaw(i)); } + if (usagePeriodCase_ == 8) { + output.writeEnum(8, ((java.lang.Integer) usagePeriod_)); + } + if (usagePeriodCase_ == 9) { + output.writeMessage(9, (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_); + } unknownFields.writeTo(output); } @@ -977,6 +1179,16 @@ public int getSerializedSize() { size += dataSize; size += 1 * getCreditTypesList().size(); } + if (usagePeriodCase_ == 8) { + size += + com.google.protobuf.CodedOutputStream.computeEnumSize( + 8, ((java.lang.Integer) usagePeriod_)); + } + if (usagePeriodCase_ == 9) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 9, (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -999,6 +1211,17 @@ public boolean equals(final java.lang.Object obj) { if (!getServicesList().equals(other.getServicesList())) return false; if (!getSubaccountsList().equals(other.getSubaccountsList())) return false; if (!internalGetLabels().equals(other.internalGetLabels())) return false; + if (!getUsagePeriodCase().equals(other.getUsagePeriodCase())) return false; + switch (usagePeriodCase_) { + case 8: + if (getCalendarPeriodValue() != other.getCalendarPeriodValue()) return false; + break; + case 9: + if (!getCustomPeriod().equals(other.getCustomPeriod())) return false; + break; + case 0: + default: + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1032,6 +1255,18 @@ public int hashCode() { hash = (37 * hash) + LABELS_FIELD_NUMBER; hash = (53 * hash) + internalGetLabels().hashCode(); } + switch (usagePeriodCase_) { + case 8: + hash = (37 * hash) + CALENDAR_PERIOD_FIELD_NUMBER; + hash = (53 * hash) + getCalendarPeriodValue(); + break; + case 9: + hash = (37 * hash) + CUSTOM_PERIOD_FIELD_NUMBER; + hash = (53 * hash) + getCustomPeriod().hashCode(); + break; + case 0: + default: + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1208,6 +1443,8 @@ public Builder clear() { subaccounts_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000008); internalGetMutableLabels().clear(); + usagePeriodCase_ = 0; + usagePeriod_ = null; return this; } @@ -1259,6 +1496,17 @@ public com.google.cloud.billing.budgets.v1.Filter buildPartial() { result.subaccounts_ = subaccounts_; result.labels_ = internalGetLabels(); result.labels_.makeImmutable(); + if (usagePeriodCase_ == 8) { + result.usagePeriod_ = usagePeriod_; + } + if (usagePeriodCase_ == 9) { + if (customPeriodBuilder_ == null) { + result.usagePeriod_ = usagePeriod_; + } else { + result.usagePeriod_ = customPeriodBuilder_.build(); + } + } + result.usagePeriodCase_ = usagePeriodCase_; onBuilt(); return result; } @@ -1352,6 +1600,22 @@ public Builder mergeFrom(com.google.cloud.billing.budgets.v1.Filter other) { onChanged(); } internalGetMutableLabels().mergeFrom(other.internalGetLabels()); + switch (other.getUsagePeriodCase()) { + case CALENDAR_PERIOD: + { + setCalendarPeriodValue(other.getCalendarPeriodValue()); + break; + } + case CUSTOM_PERIOD: + { + mergeCustomPeriod(other.getCustomPeriod()); + break; + } + case USAGEPERIOD_NOT_SET: + { + break; + } + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -1381,6 +1645,20 @@ public Builder mergeFrom( return this; } + private int usagePeriodCase_ = 0; + private java.lang.Object usagePeriod_; + + public UsagePeriodCase getUsagePeriodCase() { + return UsagePeriodCase.forNumber(usagePeriodCase_); + } + + public Builder clearUsagePeriod() { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + return this; + } + private int bitField0_; private com.google.protobuf.LazyStringList projects_ = @@ -1604,12 +1882,11 @@ private void ensureCreditTypesIsMutable() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1627,12 +1904,11 @@ public com.google.protobuf.ProtocolStringList getCreditTypesList() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1650,12 +1926,11 @@ public int getCreditTypesCount() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1674,12 +1949,11 @@ public java.lang.String getCreditTypes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1698,12 +1972,11 @@ public com.google.protobuf.ByteString getCreditTypesBytes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1729,12 +2002,11 @@ public Builder setCreditTypes(int index, java.lang.String value) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1759,12 +2031,11 @@ public Builder addCreditTypes(java.lang.String value) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1786,12 +2057,11 @@ public Builder addAllCreditTypes(java.lang.Iterable values) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1812,12 +2082,11 @@ public Builder clearCreditTypes() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -2564,6 +2833,401 @@ public Builder putAllLabels( return this; } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + @java.lang.Override + public boolean hasCalendarPeriod() { + return usagePeriodCase_ == 8; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + @java.lang.Override + public int getCalendarPeriodValue() { + if (usagePeriodCase_ == 8) { + return ((java.lang.Integer) usagePeriod_).intValue(); + } + return 0; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The enum numeric value on the wire for calendarPeriod to set. + * @return This builder for chaining. + */ + public Builder setCalendarPeriodValue(int value) { + usagePeriodCase_ = 8; + usagePeriod_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CalendarPeriod getCalendarPeriod() { + if (usagePeriodCase_ == 8) { + @SuppressWarnings("deprecation") + com.google.cloud.billing.budgets.v1.CalendarPeriod result = + com.google.cloud.billing.budgets.v1.CalendarPeriod.valueOf( + (java.lang.Integer) usagePeriod_); + return result == null + ? com.google.cloud.billing.budgets.v1.CalendarPeriod.UNRECOGNIZED + : result; + } + return com.google.cloud.billing.budgets.v1.CalendarPeriod.CALENDAR_PERIOD_UNSPECIFIED; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The calendarPeriod to set. + * @return This builder for chaining. + */ + public Builder setCalendarPeriod(com.google.cloud.billing.budgets.v1.CalendarPeriod value) { + if (value == null) { + throw new NullPointerException(); + } + usagePeriodCase_ = 8; + usagePeriod_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearCalendarPeriod() { + if (usagePeriodCase_ == 8) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + } + return this; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1.CustomPeriod, + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder> + customPeriodBuilder_; + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + @java.lang.Override + public boolean hasCustomPeriod() { + return usagePeriodCase_ == 9; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriod getCustomPeriod() { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } else { + if (usagePeriodCase_ == 9) { + return customPeriodBuilder_.getMessage(); + } + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setCustomPeriod(com.google.cloud.billing.budgets.v1.CustomPeriod value) { + if (customPeriodBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + usagePeriod_ = value; + onChanged(); + } else { + customPeriodBuilder_.setMessage(value); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setCustomPeriod( + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder builderForValue) { + if (customPeriodBuilder_ == null) { + usagePeriod_ = builderForValue.build(); + onChanged(); + } else { + customPeriodBuilder_.setMessage(builderForValue.build()); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergeCustomPeriod(com.google.cloud.billing.budgets.v1.CustomPeriod value) { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9 + && usagePeriod_ + != com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance()) { + usagePeriod_ = + com.google.cloud.billing.budgets.v1.CustomPeriod.newBuilder( + (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_) + .mergeFrom(value) + .buildPartial(); + } else { + usagePeriod_ = value; + } + onChanged(); + } else { + if (usagePeriodCase_ == 9) { + customPeriodBuilder_.mergeFrom(value); + } + customPeriodBuilder_.setMessage(value); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearCustomPeriod() { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + } + } else { + if (usagePeriodCase_ == 9) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + } + customPeriodBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.cloud.billing.budgets.v1.CustomPeriod.Builder getCustomPeriodBuilder() { + return getCustomPeriodFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder getCustomPeriodOrBuilder() { + if ((usagePeriodCase_ == 9) && (customPeriodBuilder_ != null)) { + return customPeriodBuilder_.getMessageOrBuilder(); + } else { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1.CustomPeriod, + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder> + getCustomPeriodFieldBuilder() { + if (customPeriodBuilder_ == null) { + if (!(usagePeriodCase_ == 9)) { + usagePeriod_ = com.google.cloud.billing.budgets.v1.CustomPeriod.getDefaultInstance(); + } + customPeriodBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1.CustomPeriod, + com.google.cloud.billing.budgets.v1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder>( + (com.google.cloud.billing.budgets.v1.CustomPeriod) usagePeriod_, + getParentForChildren(), + isClean()); + usagePeriod_ = null; + } + usagePeriodCase_ = 9; + onChanged(); + ; + return customPeriodBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/FilterOrBuilder.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/FilterOrBuilder.java index 200705ce..b85f7a2b 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/FilterOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/FilterOrBuilder.java @@ -98,12 +98,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -119,12 +118,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -140,12 +138,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -162,12 +159,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -427,4 +423,108 @@ com.google.protobuf.ListValue getLabelsOrDefault( *
*/ com.google.protobuf.ListValue getLabelsOrThrow(java.lang.String key); + + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + boolean hasCalendarPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + int getCalendarPeriodValue(); + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + com.google.cloud.billing.budgets.v1.CalendarPeriod getCalendarPeriod(); + + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + boolean hasCustomPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + com.google.cloud.billing.budgets.v1.CustomPeriod getCustomPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.cloud.billing.budgets.v1.CustomPeriodOrBuilder getCustomPeriodOrBuilder(); + + public com.google.cloud.billing.budgets.v1.Filter.UsagePeriodCase getUsagePeriodCase(); } diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/LastPeriodAmount.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/LastPeriodAmount.java index 0e1e4d57..d9461f62 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/LastPeriodAmount.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/LastPeriodAmount.java @@ -22,11 +22,15 @@ * * *
- * Describes a budget amount targeted to last period's spend.
- * At this time, the amount is automatically 100% of last period's spend;
- * that is, there are no other options yet.
- * Future configuration will be described here (for example, configuring a
- * percentage of last period's spend).
+ * Describes a budget amount targeted to the last
+ * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period]
+ * spend. At this time, the amount is automatically 100% of the last calendar
+ * period's spend; that is, there are no other options yet.
+ * Future configuration options will be described here (for example, configuring
+ * a percentage of last period's spend).
+ * LastPeriodAmount cannot be set for a budget configured with
+ * a
+ * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
  * 
* * Protobuf type {@code google.cloud.billing.budgets.v1.LastPeriodAmount} @@ -260,11 +264,15 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * Describes a budget amount targeted to last period's spend.
-   * At this time, the amount is automatically 100% of last period's spend;
-   * that is, there are no other options yet.
-   * Future configuration will be described here (for example, configuring a
-   * percentage of last period's spend).
+   * Describes a budget amount targeted to the last
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period]
+   * spend. At this time, the amount is automatically 100% of the last calendar
+   * period's spend; that is, there are no other options yet.
+   * Future configuration options will be described here (for example, configuring
+   * a percentage of last period's spend).
+   * LastPeriodAmount cannot be set for a budget configured with
+   * a
+   * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
    * 
* * Protobuf type {@code google.cloud.billing.budgets.v1.LastPeriodAmount} diff --git a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/ThresholdRule.java b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/ThresholdRule.java index 1e16b806..5e69872f 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/ThresholdRule.java +++ b/proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/ThresholdRule.java @@ -158,6 +158,10 @@ public enum Basis implements com.google.protobuf.ProtocolMessageEnum { *
      * Use forecasted spend for the period as the basis for comparison against
      * the threshold.
+     * FORECASTED_SPEND can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * FORECASTED_SPEND = 2; @@ -192,6 +196,10 @@ public enum Basis implements com.google.protobuf.ProtocolMessageEnum { *
      * Use forecasted spend for the period as the basis for comparison against
      * the threshold.
+     * FORECASTED_SPEND can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
      * 
* * FORECASTED_SPEND = 2; diff --git a/proto-google-cloud-billingbudgets-v1/src/main/proto/google/cloud/billing/budgets/v1/budget_model.proto b/proto-google-cloud-billingbudgets-v1/src/main/proto/google/cloud/billing/budgets/v1/budget_model.proto index eefe3db4..6758f5ca 100644 --- a/proto-google-cloud-billingbudgets-v1/src/main/proto/google/cloud/billing/budgets/v1/budget_model.proto +++ b/proto-google-cloud-billingbudgets-v1/src/main/proto/google/cloud/billing/budgets/v1/budget_model.proto @@ -19,6 +19,7 @@ package google.cloud.billing.budgets.v1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/struct.proto"; +import "google/type/date.proto"; import "google/type/money.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/billing/budgets/v1;budgets"; @@ -29,8 +30,8 @@ option java_package = "com.google.cloud.billing.budgets.v1"; // A budget is a plan that describes what you expect to spend on Cloud // projects, plus the rules to execute as spend is tracked against that plan, // (for example, send an alert when 90% of the target spend is met). -// Currently all plans are monthly budgets so the usage period(s) tracked are -// implied (calendar months of usage back-to-back). +// The budget time period is configurable, with options such as month (default), +// quarter, year, or custom time period. message Budget { option (google.api.resource) = { type: "billingbudgets.googleapis.com/Budget" @@ -46,8 +47,9 @@ message Budget { // characters. string display_name = 2; - // Optional. Filters that define which resources are used to compute - // the actual spend against the budget. + // Optional. Filters that define which resources are used to compute the + // actual spend against the budget amount, such as projects, services, and the + // budget's time period, as well as other filters. Filter budget_filter = 3 [(google.api.field_behavior) = OPTIONAL]; // Required. Budgeted amount. @@ -81,15 +83,23 @@ message BudgetAmount { google.type.Money specified_amount = 1; // Use the last period's actual spend as the budget for the present period. + // LastPeriodAmount can only be set when the budget's time period is a + // [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period]. + // It cannot be set in combination with + // [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period]. LastPeriodAmount last_period_amount = 2; } } -// Describes a budget amount targeted to last period's spend. -// At this time, the amount is automatically 100% of last period's spend; -// that is, there are no other options yet. -// Future configuration will be described here (for example, configuring a -// percentage of last period's spend). +// Describes a budget amount targeted to the last +// [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period] +// spend. At this time, the amount is automatically 100% of the last calendar +// period's spend; that is, there are no other options yet. +// Future configuration options will be described here (for example, configuring +// a percentage of last period's spend). +// LastPeriodAmount cannot be set for a budget configured with +// a +// [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period]. message LastPeriodAmount {} // ThresholdRule contains a definition of a threshold which triggers @@ -110,6 +120,10 @@ message ThresholdRule { // Use forecasted spend for the period as the basis for comparison against // the threshold. + // FORECASTED_SPEND can only be set when the budget's time period is a + // [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period]. + // It cannot be set in combination with + // [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period]. FORECASTED_SPEND = 2; } @@ -168,10 +182,12 @@ message NotificationsRule { // A filter for a budget, limiting the scope of the cost to calculate. message Filter { - // Specifies how credits should be treated when determining spend for - // threshold calculations. + // Specifies how credits are applied when determining the spend for + // threshold calculations. Budgets track the total cost minus any applicable + // selected credits. + // [See the documentation for a list of credit + // types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). enum CreditTypesTreatment { - // This is an invalid value. CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; // All types of credit are subtracted from the gross cost to determine the @@ -182,7 +198,9 @@ message Filter { // threshold calculations. EXCLUDE_ALL_CREDITS = 2; - // Credit types specified in the credit_types field are subtracted from the + // [Credit + // types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type) + // specified in the credit_types field are subtracted from the // gross cost to determine the spend for threshold calculations. INCLUDE_SPECIFIED_CREDITS = 3; } @@ -198,13 +216,12 @@ message Filter { // [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] // is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be // subtracted from gross cost to determine the spend for threshold - // calculations. + // calculations. See [a list of acceptable credit type + // values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). // // If // [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment] - // is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - // of acceptable credit type - // values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + // is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. repeated string credit_types = 7 [(google.api.field_behavior) = OPTIONAL]; // Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`. @@ -233,4 +250,51 @@ message Filter { // the report will include all labeled and unlabeled usage. map labels = 6 [(google.api.field_behavior) = OPTIONAL]; + + // Multiple options to choose the budget's time period, specifying that only + // usage that occurs during this time period should be included in the budget. + // If not set, the `usage_period` defaults to CalendarPeriod.MONTH. + oneof usage_period { + // Optional. Specifies to track usage for recurring calendar period. + // For example, assume that CalendarPeriod.QUARTER is set. The budget will + // track usage from April 1 to June 30, when the current calendar month is + // April, May, June. After that, it will track usage from July 1 to + // September 30 when the current calendar month is July, August, September, + // so on. + CalendarPeriod calendar_period = 8 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Specifies to track usage from any start date (required) to any + // end date (optional). This time period is static, it does not recur. + CustomPeriod custom_period = 9 [(google.api.field_behavior) = OPTIONAL]; + } +} + +// All date times begin at 12 AM US and Canadian Pacific Time (UTC-8). +message CustomPeriod { + // Required. The start date must be after January 1, 2017. + google.type.Date start_date = 1 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The end date of the time period. Budgets with elapsed end date + // won't be processed. If unset, specifies to track all usage incurred since + // the start_date. + google.type.Date end_date = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// A `CalendarPeriod` represents the abstract concept of a time period that +// has a canonical start. Grammatically, "the start of the current +// `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian +// Pacific Time (UTC-8). +enum CalendarPeriod { + CALENDAR_PERIOD_UNSPECIFIED = 0; + + // A month. Month starts on the first day of each month, such as January 1, + // February 1, March 1, and so on. + MONTH = 1; + + // A quarter. Quarters start on dates January 1, April 1, July 1, and October + // 1 of each year. + QUARTER = 2; + + // A year. Year starts on January 1. + YEAR = 3; } diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRule.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRule.java index 416af37b..8dd2f0ed 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRule.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRule.java @@ -150,12 +150,12 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -183,12 +183,12 @@ public java.lang.String getPubsubTopic() { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -785,12 +785,12 @@ public Builder mergeFrom( * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -817,12 +817,12 @@ public java.lang.String getPubsubTopic() { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -849,12 +849,12 @@ public com.google.protobuf.ByteString getPubsubTopicBytes() { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -880,12 +880,12 @@ public Builder setPubsubTopic(java.lang.String value) { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -907,12 +907,12 @@ public Builder clearPubsubTopic() { * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRuleOrBuilder.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRuleOrBuilder.java index ce3aee32..0e23f7d0 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRuleOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/AllUpdatesRuleOrBuilder.java @@ -31,12 +31,12 @@ public interface AllUpdatesRuleOrBuilder * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * @@ -53,12 +53,12 @@ public interface AllUpdatesRuleOrBuilder * be published, in the form `projects/{project_id}/topics/{topic_id}`. * Updates are sent at regular intervals to the topic. The topic needs to be * created before the budget is created; see - * https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications * for more details. * Caller is expected to have * `pubsub.topics.setIamPolicy` permission on the topic when it's set for a * budget, otherwise, the API call will fail with PERMISSION_DENIED. See - * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + * https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task * for more details on Pub/Sub roles and permissions. * * diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Budget.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Budget.java index ad65034b..1c23ebe9 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Budget.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Budget.java @@ -25,8 +25,8 @@ * A budget is a plan that describes what you expect to spend on Cloud * projects, plus the rules to execute as spend is tracked against that plan, * (for example, send an alert when 90% of the target spend is met). - * Currently all plans are monthly budgets so the usage period(s) tracked are - * implied (calendar months of usage back-to-back). + * The budget time period is configurable, with options such as month (default), + * quarter, year, or custom time period. * * * Protobuf type {@code google.cloud.billing.budgets.v1beta1.Budget} @@ -310,8 +310,9 @@ public com.google.protobuf.ByteString getDisplayNameBytes() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -328,8 +329,9 @@ public boolean hasBudgetFilter() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -348,8 +350,9 @@ public com.google.cloud.billing.budgets.v1beta1.Filter getBudgetFilter() { * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -849,8 +852,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * A budget is a plan that describes what you expect to spend on Cloud * projects, plus the rules to execute as spend is tracked against that plan, * (for example, send an alert when 90% of the target spend is met). - * Currently all plans are monthly budgets so the usage period(s) tracked are - * implied (calendar months of usage back-to-back). + * The budget time period is configurable, with options such as month (default), + * quarter, year, or custom time period. * * * Protobuf type {@code google.cloud.billing.budgets.v1beta1.Budget} @@ -1344,8 +1347,9 @@ public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1361,8 +1365,9 @@ public boolean hasBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1384,8 +1389,9 @@ public com.google.cloud.billing.budgets.v1beta1.Filter getBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1409,8 +1415,9 @@ public Builder setBudgetFilter(com.google.cloud.billing.budgets.v1beta1.Filter v * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1432,8 +1439,9 @@ public Builder setBudgetFilter( * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1461,8 +1469,9 @@ public Builder mergeBudgetFilter(com.google.cloud.billing.budgets.v1beta1.Filter * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1484,8 +1493,9 @@ public Builder clearBudgetFilter() { * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1501,8 +1511,9 @@ public com.google.cloud.billing.budgets.v1beta1.Filter.Builder getBudgetFilterBu * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * @@ -1522,8 +1533,9 @@ public com.google.cloud.billing.budgets.v1beta1.FilterOrBuilder getBudgetFilterO * * *
-     * Optional. Filters that define which resources are used to compute
-     * the actual spend against the budget.
+     * Optional. Filters that define which resources are used to compute the
+     * actual spend against the budget amount, such as projects, services, and the
+     * budget's time period, as well as other filters.
      * 
* * diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmount.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmount.java index 8c412b23..46ad181d 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmount.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmount.java @@ -191,7 +191,7 @@ public BudgetAmountCase getBudgetAmountCase() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -210,7 +210,7 @@ public boolean hasSpecifiedAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -232,7 +232,7 @@ public com.google.type.Money getSpecifiedAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -252,6 +252,10 @@ public com.google.type.MoneyOrBuilder getSpecifiedAmountOrBuilder() { * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -267,6 +271,10 @@ public boolean hasLastPeriodAmount() { * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -285,6 +293,10 @@ public com.google.cloud.billing.budgets.v1beta1.LastPeriodAmount getLastPeriodAm * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -698,7 +710,7 @@ public Builder clearBudgetAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -717,7 +729,7 @@ public boolean hasSpecifiedAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -746,7 +758,7 @@ public com.google.type.Money getSpecifiedAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -772,7 +784,7 @@ public Builder setSpecifiedAmount(com.google.type.Money value) { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -795,7 +807,7 @@ public Builder setSpecifiedAmount(com.google.type.Money.Builder builderForValue) * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -828,7 +840,7 @@ public Builder mergeSpecifiedAmount(com.google.type.Money value) { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -857,7 +869,7 @@ public Builder clearSpecifiedAmount() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -873,7 +885,7 @@ public com.google.type.Money.Builder getSpecifiedAmountBuilder() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -897,7 +909,7 @@ public com.google.type.MoneyOrBuilder getSpecifiedAmountOrBuilder() { * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -934,6 +946,10 @@ public com.google.type.MoneyOrBuilder getSpecifiedAmountOrBuilder() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -949,6 +965,10 @@ public boolean hasLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -974,6 +994,10 @@ public com.google.cloud.billing.budgets.v1beta1.LastPeriodAmount getLastPeriodAm * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -997,6 +1021,10 @@ public Builder setLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -1017,6 +1045,10 @@ public Builder setLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -1050,6 +1082,10 @@ public Builder mergeLastPeriodAmount( * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -1075,6 +1111,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -1088,6 +1128,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -1109,6 +1153,10 @@ public Builder clearLastPeriodAmount() { * *
      * Use the last period's actual spend as the budget for the present period.
+     * LastPeriodAmount can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmountOrBuilder.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmountOrBuilder.java index 0a58c1ec..46bbb041 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmountOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetAmountOrBuilder.java @@ -30,7 +30,7 @@ public interface BudgetAmountOrBuilder * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -46,7 +46,7 @@ public interface BudgetAmountOrBuilder * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -62,7 +62,7 @@ public interface BudgetAmountOrBuilder * A specified amount to use as the budget. * `currency_code` is optional. If specified when creating a budget, it must * match the currency of the billing account. If specified when updating a - * budget, it must match the existing budget currency_code. + * budget, it must match the currency_code of the existing budget. * The `currency_code` is provided on output. * * @@ -75,6 +75,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -87,6 +91,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; @@ -99,6 +107,10 @@ public interface BudgetAmountOrBuilder * *
    * Use the last period's actual spend as the budget for the present period.
+   * LastPeriodAmount can only be set when the budget's time period is a
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+   * It cannot be set in combination with
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * .google.cloud.billing.budgets.v1beta1.LastPeriodAmount last_period_amount = 2; diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetModel.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetModel.java index c2b4cdd2..3fb45980 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetModel.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetModel.java @@ -55,6 +55,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_billing_budgets_v1beta1_Filter_LabelsEntry_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_billing_budgets_v1beta1_Filter_LabelsEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -68,50 +72,60 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "udget_model.proto\022$google.cloud.billing." + "budgets.v1beta1\032\037google/api/field_behavi" + "or.proto\032\031google/api/resource.proto\032\034goo" - + "gle/protobuf/struct.proto\032\027google/type/m" - + "oney.proto\"\336\003\n\006Budget\022\021\n\004name\030\001 \001(\tB\003\340A\003" - + "\022\024\n\014display_name\030\002 \001(\t\022H\n\rbudget_filter\030" - + "\003 \001(\0132,.google.cloud.billing.budgets.v1b" - + "eta1.FilterB\003\340A\001\022G\n\006amount\030\004 \001(\01322.googl" - + "e.cloud.billing.budgets.v1beta1.BudgetAm" - + "ountB\003\340A\002\022Q\n\017threshold_rules\030\005 \003(\01323.goo" - + "gle.cloud.billing.budgets.v1beta1.Thresh" - + "oldRuleB\003\340A\001\022S\n\020all_updates_rule\030\006 \001(\01324" - + ".google.cloud.billing.budgets.v1beta1.Al" - + "lUpdatesRuleB\003\340A\001\022\021\n\004etag\030\007 \001(\tB\003\340A\001:]\352A" - + "Z\n$billingbudgets.googleapis.com/Budget\022" - + "2billingAccounts/{billing_account}/budge" - + "ts/{budget}\"\245\001\n\014BudgetAmount\022.\n\020specifie" - + "d_amount\030\001 \001(\0132\022.google.type.MoneyH\000\022T\n\022" - + "last_period_amount\030\002 \001(\01326.google.cloud." - + "billing.budgets.v1beta1.LastPeriodAmount" - + "H\000B\017\n\rbudget_amount\"\022\n\020LastPeriodAmount\"" - + "\315\001\n\rThresholdRule\022\036\n\021threshold_percent\030\001" - + " \001(\001B\003\340A\002\022S\n\013spend_basis\030\002 \001(\01629.google." - + "cloud.billing.budgets.v1beta1.ThresholdR" - + "ule.BasisB\003\340A\001\"G\n\005Basis\022\025\n\021BASIS_UNSPECI" - + "FIED\020\000\022\021\n\rCURRENT_SPEND\020\001\022\024\n\020FORECASTED_" - + "SPEND\020\002\"\244\001\n\016AllUpdatesRule\022\031\n\014pubsub_top" - + "ic\030\001 \001(\tB\003\340A\001\022\033\n\016schema_version\030\002 \001(\tB\003\340" - + "A\001\022-\n monitoring_notification_channels\030\003" - + " \003(\tB\003\340A\001\022+\n\036disable_default_iam_recipie" - + "nts\030\004 \001(\010B\003\340A\001\"\377\003\n\006Filter\022\025\n\010projects\030\001 " - + "\003(\tB\003\340A\001\022\031\n\014credit_types\030\007 \003(\tB\003\340A\001\022f\n\026c" - + "redit_types_treatment\030\004 \001(\0162A.google.clo" - + "ud.billing.budgets.v1beta1.Filter.Credit" - + "TypesTreatmentB\003\340A\001\022\025\n\010services\030\003 \003(\tB\003\340" - + "A\001\022\030\n\013subaccounts\030\005 \003(\tB\003\340A\001\022M\n\006labels\030\006" - + " \003(\01328.google.cloud.billing.budgets.v1be" - + "ta1.Filter.LabelsEntryB\003\340A\001\032I\n\013LabelsEnt" - + "ry\022\013\n\003key\030\001 \001(\t\022)\n\005value\030\002 \001(\0132\032.google." - + "protobuf.ListValue:\0028\001\"\217\001\n\024CreditTypesTr" - + "eatment\022&\n\"CREDIT_TYPES_TREATMENT_UNSPEC" - + "IFIED\020\000\022\027\n\023INCLUDE_ALL_CREDITS\020\001\022\027\n\023EXCL" - + "UDE_ALL_CREDITS\020\002\022\035\n\031INCLUDE_SPECIFIED_C" - + "REDITS\020\003By\n(com.google.cloud.billing.bud" - + "gets.v1beta1P\001ZKgoogle.golang.org/genpro" - + "to/googleapis/cloud/billing/budgets/v1be" - + "ta1;budgetsb\006proto3" + + "gle/protobuf/struct.proto\032\026google/type/d" + + "ate.proto\032\027google/type/money.proto\"\336\003\n\006B" + + "udget\022\021\n\004name\030\001 \001(\tB\003\340A\003\022\024\n\014display_name" + + "\030\002 \001(\t\022H\n\rbudget_filter\030\003 \001(\0132,.google.c" + + "loud.billing.budgets.v1beta1.FilterB\003\340A\001" + + "\022G\n\006amount\030\004 \001(\01322.google.cloud.billing." + + "budgets.v1beta1.BudgetAmountB\003\340A\002\022Q\n\017thr" + + "eshold_rules\030\005 \003(\01323.google.cloud.billin" + + "g.budgets.v1beta1.ThresholdRuleB\003\340A\001\022S\n\020" + + "all_updates_rule\030\006 \001(\01324.google.cloud.bi" + + "lling.budgets.v1beta1.AllUpdatesRuleB\003\340A" + + "\001\022\021\n\004etag\030\007 \001(\tB\003\340A\001:]\352AZ\n$billingbudget" + + "s.googleapis.com/Budget\0222billingAccounts" + + "/{billing_account}/budgets/{budget}\"\245\001\n\014" + + "BudgetAmount\022.\n\020specified_amount\030\001 \001(\0132\022" + + ".google.type.MoneyH\000\022T\n\022last_period_amou" + + "nt\030\002 \001(\01326.google.cloud.billing.budgets." + + "v1beta1.LastPeriodAmountH\000B\017\n\rbudget_amo" + + "unt\"\022\n\020LastPeriodAmount\"\315\001\n\rThresholdRul" + + "e\022\036\n\021threshold_percent\030\001 \001(\001B\003\340A\002\022S\n\013spe" + + "nd_basis\030\002 \001(\01629.google.cloud.billing.bu" + + "dgets.v1beta1.ThresholdRule.BasisB\003\340A\001\"G" + + "\n\005Basis\022\025\n\021BASIS_UNSPECIFIED\020\000\022\021\n\rCURREN" + + "T_SPEND\020\001\022\024\n\020FORECASTED_SPEND\020\002\"\244\001\n\016AllU" + + "pdatesRule\022\031\n\014pubsub_topic\030\001 \001(\tB\003\340A\001\022\033\n" + + "\016schema_version\030\002 \001(\tB\003\340A\001\022-\n monitoring" + + "_notification_channels\030\003 \003(\tB\003\340A\001\022+\n\036dis" + + "able_default_iam_recipients\030\004 \001(\010B\003\340A\001\"\267" + + "\005\n\006Filter\022\025\n\010projects\030\001 \003(\tB\003\340A\001\022\031\n\014cred" + + "it_types\030\007 \003(\tB\003\340A\001\022f\n\026credit_types_trea" + + "tment\030\004 \001(\0162A.google.cloud.billing.budge" + + "ts.v1beta1.Filter.CreditTypesTreatmentB\003" + + "\340A\001\022\025\n\010services\030\003 \003(\tB\003\340A\001\022\030\n\013subaccount" + + "s\030\005 \003(\tB\003\340A\001\022M\n\006labels\030\006 \003(\01328.google.cl" + + "oud.billing.budgets.v1beta1.Filter.Label" + + "sEntryB\003\340A\001\022T\n\017calendar_period\030\010 \001(\01624.g" + + "oogle.cloud.billing.budgets.v1beta1.Cale" + + "ndarPeriodB\003\340A\001H\000\022P\n\rcustom_period\030\t \001(\013" + + "22.google.cloud.billing.budgets.v1beta1." + + "CustomPeriodB\003\340A\001H\000\032I\n\013LabelsEntry\022\013\n\003ke" + + "y\030\001 \001(\t\022)\n\005value\030\002 \001(\0132\032.google.protobuf" + + ".ListValue:\0028\001\"\217\001\n\024CreditTypesTreatment\022" + + "&\n\"CREDIT_TYPES_TREATMENT_UNSPECIFIED\020\000\022" + + "\027\n\023INCLUDE_ALL_CREDITS\020\001\022\027\n\023EXCLUDE_ALL_" + + "CREDITS\020\002\022\035\n\031INCLUDE_SPECIFIED_CREDITS\020\003" + + "B\016\n\014usage_period\"d\n\014CustomPeriod\022*\n\nstar" + + "t_date\030\001 \001(\0132\021.google.type.DateB\003\340A\002\022(\n\010" + + "end_date\030\002 \001(\0132\021.google.type.DateB\003\340A\001*S" + + "\n\016CalendarPeriod\022\037\n\033CALENDAR_PERIOD_UNSP" + + "ECIFIED\020\000\022\t\n\005MONTH\020\001\022\013\n\007QUARTER\020\002\022\010\n\004YEA" + + "R\020\003By\n(com.google.cloud.billing.budgets." + + "v1beta1P\001ZKgoogle.golang.org/genproto/go" + + "ogleapis/cloud/billing/budgets/v1beta1;b" + + "udgetsb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -120,6 +134,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.api.FieldBehaviorProto.getDescriptor(), com.google.api.ResourceProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), + com.google.type.DateProto.getDescriptor(), com.google.type.MoneyProto.getDescriptor(), }); internal_static_google_cloud_billing_budgets_v1beta1_Budget_descriptor = @@ -181,6 +196,9 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Services", "Subaccounts", "Labels", + "CalendarPeriod", + "CustomPeriod", + "UsagePeriod", }); internal_static_google_cloud_billing_budgets_v1beta1_Filter_LabelsEntry_descriptor = internal_static_google_cloud_billing_budgets_v1beta1_Filter_descriptor @@ -192,6 +210,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Key", "Value", }); + internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor, + new java.lang.String[] { + "StartDate", "EndDate", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); @@ -201,6 +227,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.api.FieldBehaviorProto.getDescriptor(); com.google.api.ResourceProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); + com.google.type.DateProto.getDescriptor(); com.google.type.MoneyProto.getDescriptor(); } diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetOrBuilder.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetOrBuilder.java index 1b0ca7aa..3fac535c 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetOrBuilder.java @@ -83,8 +83,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -98,8 +99,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * @@ -113,8 +115,9 @@ public interface BudgetOrBuilder * * *
-   * Optional. Filters that define which resources are used to compute
-   * the actual spend against the budget.
+   * Optional. Filters that define which resources are used to compute the
+   * actual spend against the budget amount, such as projects, services, and the
+   * budget's time period, as well as other filters.
    * 
* * diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CalendarPeriod.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CalendarPeriod.java new file mode 100644 index 00000000..b61f97c3 --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CalendarPeriod.java @@ -0,0 +1,191 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1beta1/budget_model.proto + +package com.google.cloud.billing.budgets.v1beta1; + +/** + * + * + *
+ * A `CalendarPeriod` represents the abstract concept of a time period that
+ * has a canonical start. Grammatically, "the start of the current
+ * `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian
+ * Pacific Time (UTC-8).
+ * 
+ * + * Protobuf enum {@code google.cloud.billing.budgets.v1beta1.CalendarPeriod} + */ +public enum CalendarPeriod implements com.google.protobuf.ProtocolMessageEnum { + /** CALENDAR_PERIOD_UNSPECIFIED = 0; */ + CALENDAR_PERIOD_UNSPECIFIED(0), + /** + * + * + *
+   * A month. Month starts on the first day of each month, such as January 1,
+   * February 1, March 1, and so on.
+   * 
+ * + * MONTH = 1; + */ + MONTH(1), + /** + * + * + *
+   * A quarter. Quarters start on dates January 1, April 1, July 1, and October
+   * 1 of each year.
+   * 
+ * + * QUARTER = 2; + */ + QUARTER(2), + /** + * + * + *
+   * A year. Year starts on January 1.
+   * 
+ * + * YEAR = 3; + */ + YEAR(3), + UNRECOGNIZED(-1), + ; + + /** CALENDAR_PERIOD_UNSPECIFIED = 0; */ + public static final int CALENDAR_PERIOD_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+   * A month. Month starts on the first day of each month, such as January 1,
+   * February 1, March 1, and so on.
+   * 
+ * + * MONTH = 1; + */ + public static final int MONTH_VALUE = 1; + /** + * + * + *
+   * A quarter. Quarters start on dates January 1, April 1, July 1, and October
+   * 1 of each year.
+   * 
+ * + * QUARTER = 2; + */ + public static final int QUARTER_VALUE = 2; + /** + * + * + *
+   * A year. Year starts on January 1.
+   * 
+ * + * YEAR = 3; + */ + public static final int YEAR_VALUE = 3; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CalendarPeriod valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CalendarPeriod forNumber(int value) { + switch (value) { + case 0: + return CALENDAR_PERIOD_UNSPECIFIED; + case 1: + return MONTH; + case 2: + return QUARTER; + case 3: + return YEAR; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CalendarPeriod findValueByNumber(int number) { + return CalendarPeriod.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel.getDescriptor() + .getEnumTypes() + .get(0); + } + + private static final CalendarPeriod[] VALUES = values(); + + public static CalendarPeriod valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private CalendarPeriod(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.cloud.billing.budgets.v1beta1.CalendarPeriod) +} diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriod.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriod.java new file mode 100644 index 00000000..66512860 --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriod.java @@ -0,0 +1,1001 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1beta1/budget_model.proto + +package com.google.cloud.billing.budgets.v1beta1; + +/** + * + * + *
+ * All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).
+ * 
+ * + * Protobuf type {@code google.cloud.billing.budgets.v1beta1.CustomPeriod} + */ +public final class CustomPeriod extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.billing.budgets.v1beta1.CustomPeriod) + CustomPeriodOrBuilder { + private static final long serialVersionUID = 0L; + // Use CustomPeriod.newBuilder() to construct. + private CustomPeriod(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CustomPeriod() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CustomPeriod(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private CustomPeriod( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.type.Date.Builder subBuilder = null; + if (startDate_ != null) { + subBuilder = startDate_.toBuilder(); + } + startDate_ = input.readMessage(com.google.type.Date.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startDate_); + startDate_ = subBuilder.buildPartial(); + } + + break; + } + case 18: + { + com.google.type.Date.Builder subBuilder = null; + if (endDate_ != null) { + subBuilder = endDate_.toBuilder(); + } + endDate_ = input.readMessage(com.google.type.Date.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endDate_); + endDate_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel + .internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel + .internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.class, + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder.class); + } + + public static final int START_DATE_FIELD_NUMBER = 1; + private com.google.type.Date startDate_; + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + @java.lang.Override + public boolean hasStartDate() { + return startDate_ != null; + } + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + @java.lang.Override + public com.google.type.Date getStartDate() { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getStartDateOrBuilder() { + return getStartDate(); + } + + public static final int END_DATE_FIELD_NUMBER = 2; + private com.google.type.Date endDate_; + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + @java.lang.Override + public boolean hasEndDate() { + return endDate_ != null; + } + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + @java.lang.Override + public com.google.type.Date getEndDate() { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getEndDateOrBuilder() { + return getEndDate(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (startDate_ != null) { + output.writeMessage(1, getStartDate()); + } + if (endDate_ != null) { + output.writeMessage(2, getEndDate()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (startDate_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStartDate()); + } + if (endDate_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getEndDate()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.billing.budgets.v1beta1.CustomPeriod)) { + return super.equals(obj); + } + com.google.cloud.billing.budgets.v1beta1.CustomPeriod other = + (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) obj; + + if (hasStartDate() != other.hasStartDate()) return false; + if (hasStartDate()) { + if (!getStartDate().equals(other.getStartDate())) return false; + } + if (hasEndDate() != other.hasEndDate()) return false; + if (hasEndDate()) { + if (!getEndDate().equals(other.getEndDate())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasStartDate()) { + hash = (37 * hash) + START_DATE_FIELD_NUMBER; + hash = (53 * hash) + getStartDate().hashCode(); + } + if (hasEndDate()) { + hash = (37 * hash) + END_DATE_FIELD_NUMBER; + hash = (53 * hash) + getEndDate().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.billing.budgets.v1beta1.CustomPeriod prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).
+   * 
+ * + * Protobuf type {@code google.cloud.billing.budgets.v1beta1.CustomPeriod} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.billing.budgets.v1beta1.CustomPeriod) + com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel + .internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel + .internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.class, + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder.class); + } + + // Construct using com.google.cloud.billing.budgets.v1beta1.CustomPeriod.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (startDateBuilder_ == null) { + startDate_ = null; + } else { + startDate_ = null; + startDateBuilder_ = null; + } + if (endDateBuilder_ == null) { + endDate_ = null; + } else { + endDate_ = null; + endDateBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.billing.budgets.v1beta1.BudgetModel + .internal_static_google_cloud_billing_budgets_v1beta1_CustomPeriod_descriptor; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod getDefaultInstanceForType() { + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod build() { + com.google.cloud.billing.budgets.v1beta1.CustomPeriod result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod buildPartial() { + com.google.cloud.billing.budgets.v1beta1.CustomPeriod result = + new com.google.cloud.billing.budgets.v1beta1.CustomPeriod(this); + if (startDateBuilder_ == null) { + result.startDate_ = startDate_; + } else { + result.startDate_ = startDateBuilder_.build(); + } + if (endDateBuilder_ == null) { + result.endDate_ = endDate_; + } else { + result.endDate_ = endDateBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.billing.budgets.v1beta1.CustomPeriod) { + return mergeFrom((com.google.cloud.billing.budgets.v1beta1.CustomPeriod) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.billing.budgets.v1beta1.CustomPeriod other) { + if (other == com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance()) + return this; + if (other.hasStartDate()) { + mergeStartDate(other.getStartDate()); + } + if (other.hasEndDate()) { + mergeEndDate(other.getEndDate()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.billing.budgets.v1beta1.CustomPeriod parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private com.google.type.Date startDate_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + startDateBuilder_; + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + public boolean hasStartDate() { + return startDateBuilder_ != null || startDate_ != null; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + public com.google.type.Date getStartDate() { + if (startDateBuilder_ == null) { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } else { + return startDateBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder setStartDate(com.google.type.Date value) { + if (startDateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + startDate_ = value; + onChanged(); + } else { + startDateBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder setStartDate(com.google.type.Date.Builder builderForValue) { + if (startDateBuilder_ == null) { + startDate_ = builderForValue.build(); + onChanged(); + } else { + startDateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder mergeStartDate(com.google.type.Date value) { + if (startDateBuilder_ == null) { + if (startDate_ != null) { + startDate_ = com.google.type.Date.newBuilder(startDate_).mergeFrom(value).buildPartial(); + } else { + startDate_ = value; + } + onChanged(); + } else { + startDateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public Builder clearStartDate() { + if (startDateBuilder_ == null) { + startDate_ = null; + onChanged(); + } else { + startDate_ = null; + startDateBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public com.google.type.Date.Builder getStartDateBuilder() { + + onChanged(); + return getStartDateFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + public com.google.type.DateOrBuilder getStartDateOrBuilder() { + if (startDateBuilder_ != null) { + return startDateBuilder_.getMessageOrBuilder(); + } else { + return startDate_ == null ? com.google.type.Date.getDefaultInstance() : startDate_; + } + } + /** + * + * + *
+     * Required. The start date must be after January 1, 2017.
+     * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + getStartDateFieldBuilder() { + if (startDateBuilder_ == null) { + startDateBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder>( + getStartDate(), getParentForChildren(), isClean()); + startDate_ = null; + } + return startDateBuilder_; + } + + private com.google.type.Date endDate_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + endDateBuilder_; + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + public boolean hasEndDate() { + return endDateBuilder_ != null || endDate_ != null; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + public com.google.type.Date getEndDate() { + if (endDateBuilder_ == null) { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } else { + return endDateBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder setEndDate(com.google.type.Date value) { + if (endDateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endDate_ = value; + onChanged(); + } else { + endDateBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder setEndDate(com.google.type.Date.Builder builderForValue) { + if (endDateBuilder_ == null) { + endDate_ = builderForValue.build(); + onChanged(); + } else { + endDateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder mergeEndDate(com.google.type.Date value) { + if (endDateBuilder_ == null) { + if (endDate_ != null) { + endDate_ = com.google.type.Date.newBuilder(endDate_).mergeFrom(value).buildPartial(); + } else { + endDate_ = value; + } + onChanged(); + } else { + endDateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public Builder clearEndDate() { + if (endDateBuilder_ == null) { + endDate_ = null; + onChanged(); + } else { + endDate_ = null; + endDateBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public com.google.type.Date.Builder getEndDateBuilder() { + + onChanged(); + return getEndDateFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + public com.google.type.DateOrBuilder getEndDateOrBuilder() { + if (endDateBuilder_ != null) { + return endDateBuilder_.getMessageOrBuilder(); + } else { + return endDate_ == null ? com.google.type.Date.getDefaultInstance() : endDate_; + } + } + /** + * + * + *
+     * Optional. The end date of the time period. Budgets with elapsed end date
+     * won't be processed. If unset, specifies to track all usage incurred since
+     * the start_date.
+     * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + getEndDateFieldBuilder() { + if (endDateBuilder_ == null) { + endDateBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder>( + getEndDate(), getParentForChildren(), isClean()); + endDate_ = null; + } + return endDateBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.billing.budgets.v1beta1.CustomPeriod) + } + + // @@protoc_insertion_point(class_scope:google.cloud.billing.budgets.v1beta1.CustomPeriod) + private static final com.google.cloud.billing.budgets.v1beta1.CustomPeriod DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.billing.budgets.v1beta1.CustomPeriod(); + } + + public static com.google.cloud.billing.budgets.v1beta1.CustomPeriod getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CustomPeriod parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CustomPeriod(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriodOrBuilder.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriodOrBuilder.java new file mode 100644 index 00000000..dd4c4866 --- /dev/null +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriodOrBuilder.java @@ -0,0 +1,101 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/billing/budgets/v1beta1/budget_model.proto + +package com.google.cloud.billing.budgets.v1beta1; + +public interface CustomPeriodOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.billing.budgets.v1beta1.CustomPeriod) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return Whether the startDate field is set. + */ + boolean hasStartDate(); + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The startDate. + */ + com.google.type.Date getStartDate(); + /** + * + * + *
+   * Required. The start date must be after January 1, 2017.
+   * 
+ * + * .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + com.google.type.DateOrBuilder getStartDateOrBuilder(); + + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the endDate field is set. + */ + boolean hasEndDate(); + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The endDate. + */ + com.google.type.Date getEndDate(); + /** + * + * + *
+   * Optional. The end date of the time period. Budgets with elapsed end date
+   * won't be processed. If unset, specifies to track all usage incurred since
+   * the start_date.
+   * 
+ * + * .google.type.Date end_date = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + com.google.type.DateOrBuilder getEndDateOrBuilder(); +} diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Filter.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Filter.java index 26805fbf..4ac01e7d 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Filter.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Filter.java @@ -137,6 +137,33 @@ private Filter( creditTypes_.add(s); break; } + case 64: + { + int rawValue = input.readEnum(); + usagePeriodCase_ = 8; + usagePeriod_ = rawValue; + break; + } + case 74: + { + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder subBuilder = null; + if (usagePeriodCase_ == 9) { + subBuilder = + ((com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_) + .toBuilder(); + } + usagePeriod_ = + input.readMessage( + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom( + (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_); + usagePeriod_ = subBuilder.buildPartial(); + } + usagePeriodCase_ = 9; + break; + } default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { @@ -198,8 +225,11 @@ protected com.google.protobuf.MapField internalGetMapField(int number) { * * *
-   * Specifies how credits should be treated when determining spend for
-   * threshold calculations.
+   * Specifies how credits are applied when determining the spend for
+   * threshold calculations. Budgets track the total cost minus any applicable
+   * selected credits.
+   * [See the documentation for a list of credit
+   * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type).
    * 
* * Protobuf enum {@code google.cloud.billing.budgets.v1beta1.Filter.CreditTypesTreatment} @@ -233,7 +263,9 @@ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageE * * *
-     * Credit types specified in the credit_types field are subtracted from the
+     * [Credit
+     * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type)
+     * specified in the credit_types field are subtracted from the
      * gross cost to determine the spend for threshold calculations.
      * 
* @@ -271,7 +303,9 @@ public enum CreditTypesTreatment implements com.google.protobuf.ProtocolMessageE * * *
-     * Credit types specified in the credit_types field are subtracted from the
+     * [Credit
+     * types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type)
+     * specified in the credit_types field are subtracted from the
      * gross cost to determine the spend for threshold calculations.
      * 
* @@ -367,6 +401,53 @@ private CreditTypesTreatment(int value) { // @@protoc_insertion_point(enum_scope:google.cloud.billing.budgets.v1beta1.Filter.CreditTypesTreatment) } + private int usagePeriodCase_ = 0; + private java.lang.Object usagePeriod_; + + public enum UsagePeriodCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + CALENDAR_PERIOD(8), + CUSTOM_PERIOD(9), + USAGEPERIOD_NOT_SET(0); + private final int value; + + private UsagePeriodCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static UsagePeriodCase valueOf(int value) { + return forNumber(value); + } + + public static UsagePeriodCase forNumber(int value) { + switch (value) { + case 8: + return CALENDAR_PERIOD; + case 9: + return CUSTOM_PERIOD; + case 0: + return USAGEPERIOD_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public UsagePeriodCase getUsagePeriodCase() { + return UsagePeriodCase.forNumber(usagePeriodCase_); + } + public static final int PROJECTS_FIELD_NUMBER = 1; private com.google.protobuf.LazyStringList projects_; /** @@ -454,12 +535,11 @@ public com.google.protobuf.ByteString getProjectsBytes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -477,12 +557,11 @@ public com.google.protobuf.ProtocolStringList getCreditTypesList() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -500,12 +579,11 @@ public int getCreditTypesCount() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -524,12 +602,11 @@ public java.lang.String getCreditTypes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -871,6 +948,143 @@ public com.google.protobuf.ListValue getLabelsOrThrow(java.lang.String key) { return map.get(key); } + public static final int CALENDAR_PERIOD_FIELD_NUMBER = 8; + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + public boolean hasCalendarPeriod() { + return usagePeriodCase_ == 8; + } + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + public int getCalendarPeriodValue() { + if (usagePeriodCase_ == 8) { + return (java.lang.Integer) usagePeriod_; + } + return 0; + } + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + public com.google.cloud.billing.budgets.v1beta1.CalendarPeriod getCalendarPeriod() { + if (usagePeriodCase_ == 8) { + @SuppressWarnings("deprecation") + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod result = + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.valueOf( + (java.lang.Integer) usagePeriod_); + return result == null + ? com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.UNRECOGNIZED + : result; + } + return com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.CALENDAR_PERIOD_UNSPECIFIED; + } + + public static final int CUSTOM_PERIOD_FIELD_NUMBER = 9; + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + @java.lang.Override + public boolean hasCustomPeriod() { + return usagePeriodCase_ == 9; + } + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod getCustomPeriod() { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder getCustomPeriodOrBuilder() { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -905,6 +1119,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < creditTypes_.size(); i++) { com.google.protobuf.GeneratedMessageV3.writeString(output, 7, creditTypes_.getRaw(i)); } + if (usagePeriodCase_ == 8) { + output.writeEnum(8, ((java.lang.Integer) usagePeriod_)); + } + if (usagePeriodCase_ == 9) { + output.writeMessage(9, (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_); + } unknownFields.writeTo(output); } @@ -962,6 +1182,16 @@ public int getSerializedSize() { size += dataSize; size += 1 * getCreditTypesList().size(); } + if (usagePeriodCase_ == 8) { + size += + com.google.protobuf.CodedOutputStream.computeEnumSize( + 8, ((java.lang.Integer) usagePeriod_)); + } + if (usagePeriodCase_ == 9) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 9, (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -984,6 +1214,17 @@ public boolean equals(final java.lang.Object obj) { if (!getServicesList().equals(other.getServicesList())) return false; if (!getSubaccountsList().equals(other.getSubaccountsList())) return false; if (!internalGetLabels().equals(other.internalGetLabels())) return false; + if (!getUsagePeriodCase().equals(other.getUsagePeriodCase())) return false; + switch (usagePeriodCase_) { + case 8: + if (getCalendarPeriodValue() != other.getCalendarPeriodValue()) return false; + break; + case 9: + if (!getCustomPeriod().equals(other.getCustomPeriod())) return false; + break; + case 0: + default: + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1017,6 +1258,18 @@ public int hashCode() { hash = (37 * hash) + LABELS_FIELD_NUMBER; hash = (53 * hash) + internalGetLabels().hashCode(); } + switch (usagePeriodCase_) { + case 8: + hash = (37 * hash) + CALENDAR_PERIOD_FIELD_NUMBER; + hash = (53 * hash) + getCalendarPeriodValue(); + break; + case 9: + hash = (37 * hash) + CUSTOM_PERIOD_FIELD_NUMBER; + hash = (53 * hash) + getCustomPeriod().hashCode(); + break; + case 0: + default: + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1193,6 +1446,8 @@ public Builder clear() { subaccounts_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000008); internalGetMutableLabels().clear(); + usagePeriodCase_ = 0; + usagePeriod_ = null; return this; } @@ -1244,6 +1499,17 @@ public com.google.cloud.billing.budgets.v1beta1.Filter buildPartial() { result.subaccounts_ = subaccounts_; result.labels_ = internalGetLabels(); result.labels_.makeImmutable(); + if (usagePeriodCase_ == 8) { + result.usagePeriod_ = usagePeriod_; + } + if (usagePeriodCase_ == 9) { + if (customPeriodBuilder_ == null) { + result.usagePeriod_ = usagePeriod_; + } else { + result.usagePeriod_ = customPeriodBuilder_.build(); + } + } + result.usagePeriodCase_ = usagePeriodCase_; onBuilt(); return result; } @@ -1338,6 +1604,22 @@ public Builder mergeFrom(com.google.cloud.billing.budgets.v1beta1.Filter other) onChanged(); } internalGetMutableLabels().mergeFrom(other.internalGetLabels()); + switch (other.getUsagePeriodCase()) { + case CALENDAR_PERIOD: + { + setCalendarPeriodValue(other.getCalendarPeriodValue()); + break; + } + case CUSTOM_PERIOD: + { + mergeCustomPeriod(other.getCustomPeriod()); + break; + } + case USAGEPERIOD_NOT_SET: + { + break; + } + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -1367,6 +1649,20 @@ public Builder mergeFrom( return this; } + private int usagePeriodCase_ = 0; + private java.lang.Object usagePeriod_; + + public UsagePeriodCase getUsagePeriodCase() { + return UsagePeriodCase.forNumber(usagePeriodCase_); + } + + public Builder clearUsagePeriod() { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + return this; + } + private int bitField0_; private com.google.protobuf.LazyStringList projects_ = @@ -1590,12 +1886,11 @@ private void ensureCreditTypesIsMutable() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1613,12 +1908,11 @@ public com.google.protobuf.ProtocolStringList getCreditTypesList() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1636,12 +1930,11 @@ public int getCreditTypesCount() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1660,12 +1953,11 @@ public java.lang.String getCreditTypes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1684,12 +1976,11 @@ public com.google.protobuf.ByteString getCreditTypesBytes(int index) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1715,12 +2006,11 @@ public Builder setCreditTypes(int index, java.lang.String value) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1745,12 +2035,11 @@ public Builder addCreditTypes(java.lang.String value) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1772,12 +2061,11 @@ public Builder addAllCreditTypes(java.lang.Iterable values) { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -1798,12 +2086,11 @@ public Builder clearCreditTypes() { * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -2550,6 +2837,403 @@ public Builder putAllLabels( return this; } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + @java.lang.Override + public boolean hasCalendarPeriod() { + return usagePeriodCase_ == 8; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + @java.lang.Override + public int getCalendarPeriodValue() { + if (usagePeriodCase_ == 8) { + return ((java.lang.Integer) usagePeriod_).intValue(); + } + return 0; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The enum numeric value on the wire for calendarPeriod to set. + * @return This builder for chaining. + */ + public Builder setCalendarPeriodValue(int value) { + usagePeriodCase_ = 8; + usagePeriod_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CalendarPeriod getCalendarPeriod() { + if (usagePeriodCase_ == 8) { + @SuppressWarnings("deprecation") + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod result = + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.valueOf( + (java.lang.Integer) usagePeriod_); + return result == null + ? com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.UNRECOGNIZED + : result; + } + return com.google.cloud.billing.budgets.v1beta1.CalendarPeriod.CALENDAR_PERIOD_UNSPECIFIED; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The calendarPeriod to set. + * @return This builder for chaining. + */ + public Builder setCalendarPeriod( + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod value) { + if (value == null) { + throw new NullPointerException(); + } + usagePeriodCase_ = 8; + usagePeriod_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage for recurring calendar period.
+     * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+     * track usage from April 1 to June 30, when the current calendar month is
+     * April, May, June. After that, it will track usage from July 1 to
+     * September 30 when the current calendar month is July, August, September,
+     * so on.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearCalendarPeriod() { + if (usagePeriodCase_ == 8) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + } + return this; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1beta1.CustomPeriod, + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder> + customPeriodBuilder_; + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + @java.lang.Override + public boolean hasCustomPeriod() { + return usagePeriodCase_ == 9; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod getCustomPeriod() { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } else { + if (usagePeriodCase_ == 9) { + return customPeriodBuilder_.getMessage(); + } + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setCustomPeriod(com.google.cloud.billing.budgets.v1beta1.CustomPeriod value) { + if (customPeriodBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + usagePeriod_ = value; + onChanged(); + } else { + customPeriodBuilder_.setMessage(value); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setCustomPeriod( + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder builderForValue) { + if (customPeriodBuilder_ == null) { + usagePeriod_ = builderForValue.build(); + onChanged(); + } else { + customPeriodBuilder_.setMessage(builderForValue.build()); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergeCustomPeriod(com.google.cloud.billing.budgets.v1beta1.CustomPeriod value) { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9 + && usagePeriod_ + != com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance()) { + usagePeriod_ = + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.newBuilder( + (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_) + .mergeFrom(value) + .buildPartial(); + } else { + usagePeriod_ = value; + } + onChanged(); + } else { + if (usagePeriodCase_ == 9) { + customPeriodBuilder_.mergeFrom(value); + } + customPeriodBuilder_.setMessage(value); + } + usagePeriodCase_ = 9; + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearCustomPeriod() { + if (customPeriodBuilder_ == null) { + if (usagePeriodCase_ == 9) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + onChanged(); + } + } else { + if (usagePeriodCase_ == 9) { + usagePeriodCase_ = 0; + usagePeriod_ = null; + } + customPeriodBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder getCustomPeriodBuilder() { + return getCustomPeriodFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder + getCustomPeriodOrBuilder() { + if ((usagePeriodCase_ == 9) && (customPeriodBuilder_ != null)) { + return customPeriodBuilder_.getMessageOrBuilder(); + } else { + if (usagePeriodCase_ == 9) { + return (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_; + } + return com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + } + /** + * + * + *
+     * Optional. Specifies to track usage from any start date (required) to any
+     * end date (optional). This time period is static, it does not recur.
+     * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1beta1.CustomPeriod, + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder> + getCustomPeriodFieldBuilder() { + if (customPeriodBuilder_ == null) { + if (!(usagePeriodCase_ == 9)) { + usagePeriod_ = com.google.cloud.billing.budgets.v1beta1.CustomPeriod.getDefaultInstance(); + } + customPeriodBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.billing.budgets.v1beta1.CustomPeriod, + com.google.cloud.billing.budgets.v1beta1.CustomPeriod.Builder, + com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder>( + (com.google.cloud.billing.budgets.v1beta1.CustomPeriod) usagePeriod_, + getParentForChildren(), + isClean()); + usagePeriod_ = null; + } + usagePeriodCase_ = 9; + onChanged(); + ; + return customPeriodBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/FilterOrBuilder.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/FilterOrBuilder.java index 17c07574..d20d8177 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/FilterOrBuilder.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/FilterOrBuilder.java @@ -98,12 +98,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -119,12 +118,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -140,12 +138,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -162,12 +159,11 @@ public interface FilterOrBuilder * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] * is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be * subtracted from gross cost to determine the spend for threshold - * calculations. + * calculations. See [a list of acceptable credit type + * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). * If * [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - * of acceptable credit type - * values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + * is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. * * * repeated string credit_types = 7 [(.google.api.field_behavior) = OPTIONAL]; @@ -427,4 +423,108 @@ com.google.protobuf.ListValue getLabelsOrDefault( *
*/ com.google.protobuf.ListValue getLabelsOrThrow(java.lang.String key); + + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the calendarPeriod field is set. + */ + boolean hasCalendarPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The enum numeric value on the wire for calendarPeriod. + */ + int getCalendarPeriodValue(); + /** + * + * + *
+   * Optional. Specifies to track usage for recurring calendar period.
+   * For example, assume that CalendarPeriod.QUARTER is set. The budget will
+   * track usage from April 1 to June 30, when the current calendar month is
+   * April, May, June. After that, it will track usage from July 1 to
+   * September 30 when the current calendar month is July, August, September,
+   * so on.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CalendarPeriod calendar_period = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The calendarPeriod. + */ + com.google.cloud.billing.budgets.v1beta1.CalendarPeriod getCalendarPeriod(); + + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the customPeriod field is set. + */ + boolean hasCustomPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The customPeriod. + */ + com.google.cloud.billing.budgets.v1beta1.CustomPeriod getCustomPeriod(); + /** + * + * + *
+   * Optional. Specifies to track usage from any start date (required) to any
+   * end date (optional). This time period is static, it does not recur.
+   * 
+ * + * + * .google.cloud.billing.budgets.v1beta1.CustomPeriod custom_period = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.cloud.billing.budgets.v1beta1.CustomPeriodOrBuilder getCustomPeriodOrBuilder(); + + public com.google.cloud.billing.budgets.v1beta1.Filter.UsagePeriodCase getUsagePeriodCase(); } diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/LastPeriodAmount.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/LastPeriodAmount.java index 457fb87f..ef56e07f 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/LastPeriodAmount.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/LastPeriodAmount.java @@ -22,11 +22,15 @@ * * *
- * Describes a budget amount targeted to last period's spend.
- * At this time, the amount is automatically 100% of last period's spend;
- * that is, there are no other options yet.
- * Future configuration will be described here (for example, configuring a
- * percentage of last period's spend).
+ * Describes a budget amount targeted to the last
+ * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period]
+ * spend. At this time, the amount is automatically 100% of the last calendar
+ * period's spend; that is, there are no other options yet.
+ * Future configuration options will be described here (for example, configuring
+ * a percentage of last period's spend).
+ * LastPeriodAmount cannot be set for a budget configured with
+ * a
+ * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
  * 
* * Protobuf type {@code google.cloud.billing.budgets.v1beta1.LastPeriodAmount} @@ -261,11 +265,15 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * Describes a budget amount targeted to last period's spend.
-   * At this time, the amount is automatically 100% of last period's spend;
-   * that is, there are no other options yet.
-   * Future configuration will be described here (for example, configuring a
-   * percentage of last period's spend).
+   * Describes a budget amount targeted to the last
+   * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period]
+   * spend. At this time, the amount is automatically 100% of the last calendar
+   * period's spend; that is, there are no other options yet.
+   * Future configuration options will be described here (for example, configuring
+   * a percentage of last period's spend).
+   * LastPeriodAmount cannot be set for a budget configured with
+   * a
+   * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
    * 
* * Protobuf type {@code google.cloud.billing.budgets.v1beta1.LastPeriodAmount} diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/ThresholdRule.java b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/ThresholdRule.java index e15f5c7c..d5e40549 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/ThresholdRule.java +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/ThresholdRule.java @@ -158,6 +158,10 @@ public enum Basis implements com.google.protobuf.ProtocolMessageEnum { *
      * Use forecasted spend for the period as the basis for comparison against
      * the threshold.
+     * FORECASTED_SPEND can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * FORECASTED_SPEND = 2; @@ -192,6 +196,10 @@ public enum Basis implements com.google.protobuf.ProtocolMessageEnum { *
      * Use forecasted spend for the period as the basis for comparison against
      * the threshold.
+     * FORECASTED_SPEND can only be set when the budget's time period is a
+     * [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period].
+     * It cannot be set in combination with
+     * [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period].
      * 
* * FORECASTED_SPEND = 2; diff --git a/proto-google-cloud-billingbudgets-v1beta1/src/main/proto/google/cloud/billing/budgets/v1beta1/budget_model.proto b/proto-google-cloud-billingbudgets-v1beta1/src/main/proto/google/cloud/billing/budgets/v1beta1/budget_model.proto index 636f3290..8d68393d 100644 --- a/proto-google-cloud-billingbudgets-v1beta1/src/main/proto/google/cloud/billing/budgets/v1beta1/budget_model.proto +++ b/proto-google-cloud-billingbudgets-v1beta1/src/main/proto/google/cloud/billing/budgets/v1beta1/budget_model.proto @@ -19,6 +19,7 @@ package google.cloud.billing.budgets.v1beta1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/struct.proto"; +import "google/type/date.proto"; import "google/type/money.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/billing/budgets/v1beta1;budgets"; @@ -28,8 +29,8 @@ option java_package = "com.google.cloud.billing.budgets.v1beta1"; // A budget is a plan that describes what you expect to spend on Cloud // projects, plus the rules to execute as spend is tracked against that plan, // (for example, send an alert when 90% of the target spend is met). -// Currently all plans are monthly budgets so the usage period(s) tracked are -// implied (calendar months of usage back-to-back). +// The budget time period is configurable, with options such as month (default), +// quarter, year, or custom time period. message Budget { option (google.api.resource) = { type: "billingbudgets.googleapis.com/Budget" @@ -45,8 +46,9 @@ message Budget { // Validation: <= 60 chars. string display_name = 2; - // Optional. Filters that define which resources are used to compute - // the actual spend against the budget. + // Optional. Filters that define which resources are used to compute the + // actual spend against the budget amount, such as projects, services, and the + // budget's time period, as well as other filters. Filter budget_filter = 3 [(google.api.field_behavior) = OPTIONAL]; // Required. Budgeted amount. @@ -74,20 +76,28 @@ message BudgetAmount { // A specified amount to use as the budget. // `currency_code` is optional. If specified when creating a budget, it must // match the currency of the billing account. If specified when updating a - // budget, it must match the existing budget currency_code. + // budget, it must match the currency_code of the existing budget. // The `currency_code` is provided on output. google.type.Money specified_amount = 1; // Use the last period's actual spend as the budget for the present period. + // LastPeriodAmount can only be set when the budget's time period is a + // [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period]. + // It cannot be set in combination with + // [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period]. LastPeriodAmount last_period_amount = 2; } } -// Describes a budget amount targeted to last period's spend. -// At this time, the amount is automatically 100% of last period's spend; -// that is, there are no other options yet. -// Future configuration will be described here (for example, configuring a -// percentage of last period's spend). +// Describes a budget amount targeted to the last +// [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period] +// spend. At this time, the amount is automatically 100% of the last calendar +// period's spend; that is, there are no other options yet. +// Future configuration options will be described here (for example, configuring +// a percentage of last period's spend). +// LastPeriodAmount cannot be set for a budget configured with +// a +// [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period]. message LastPeriodAmount {} // ThresholdRule contains a definition of a threshold which triggers @@ -108,6 +118,10 @@ message ThresholdRule { // Use forecasted spend for the period as the basis for comparison against // the threshold. + // FORECASTED_SPEND can only be set when the budget's time period is a + // [Filter.calendar_period][google.cloud.billing.budgets.v1beta1.Filter.calendar_period]. + // It cannot be set in combination with + // [Filter.custom_period][google.cloud.billing.budgets.v1beta1.Filter.custom_period]. FORECASTED_SPEND = 2; } @@ -128,12 +142,12 @@ message AllUpdatesRule { // be published, in the form `projects/{project_id}/topics/{topic_id}`. // Updates are sent at regular intervals to the topic. The topic needs to be // created before the budget is created; see - // https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications + // https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications // for more details. // Caller is expected to have // `pubsub.topics.setIamPolicy` permission on the topic when it's set for a // budget, otherwise, the API call will fail with PERMISSION_DENIED. See - // https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications + // https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task // for more details on Pub/Sub roles and permissions. string pubsub_topic = 1 [(google.api.field_behavior) = OPTIONAL]; @@ -166,8 +180,11 @@ message AllUpdatesRule { // A filter for a budget, limiting the scope of the cost to calculate. message Filter { - // Specifies how credits should be treated when determining spend for - // threshold calculations. + // Specifies how credits are applied when determining the spend for + // threshold calculations. Budgets track the total cost minus any applicable + // selected credits. + // [See the documentation for a list of credit + // types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). enum CreditTypesTreatment { CREDIT_TYPES_TREATMENT_UNSPECIFIED = 0; @@ -179,7 +196,9 @@ message Filter { // threshold calculations. EXCLUDE_ALL_CREDITS = 2; - // Credit types specified in the credit_types field are subtracted from the + // [Credit + // types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type) + // specified in the credit_types field are subtracted from the // gross cost to determine the spend for threshold calculations. INCLUDE_SPECIFIED_CREDITS = 3; } @@ -195,13 +214,12 @@ message Filter { // [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] // is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be // subtracted from gross cost to determine the spend for threshold - // calculations. + // calculations. See [a list of acceptable credit type + // values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). // // If // [Filter.credit_types_treatment][google.cloud.billing.budgets.v1beta1.Filter.credit_types_treatment] - // is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. See [a list - // of acceptable credit type - // values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). + // is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty. repeated string credit_types = 7 [(google.api.field_behavior) = OPTIONAL]; // Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`. @@ -230,4 +248,51 @@ message Filter { // the report will include all labeled and unlabeled usage. map labels = 6 [(google.api.field_behavior) = OPTIONAL]; + + // Multiple options to choose the budget's time period, specifying that only + // usage that occurs during this time period should be included in the budget. + // If not set, the `usage_period` defaults to CalendarPeriod.MONTH. + oneof usage_period { + // Optional. Specifies to track usage for recurring calendar period. + // For example, assume that CalendarPeriod.QUARTER is set. The budget will + // track usage from April 1 to June 30, when the current calendar month is + // April, May, June. After that, it will track usage from July 1 to + // September 30 when the current calendar month is July, August, September, + // so on. + CalendarPeriod calendar_period = 8 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Specifies to track usage from any start date (required) to any + // end date (optional). This time period is static, it does not recur. + CustomPeriod custom_period = 9 [(google.api.field_behavior) = OPTIONAL]; + } +} + +// All date times begin at 12 AM US and Canadian Pacific Time (UTC-8). +message CustomPeriod { + // Required. The start date must be after January 1, 2017. + google.type.Date start_date = 1 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The end date of the time period. Budgets with elapsed end date + // won't be processed. If unset, specifies to track all usage incurred since + // the start_date. + google.type.Date end_date = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// A `CalendarPeriod` represents the abstract concept of a time period that +// has a canonical start. Grammatically, "the start of the current +// `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian +// Pacific Time (UTC-8). +enum CalendarPeriod { + CALENDAR_PERIOD_UNSPECIFIED = 0; + + // A month. Month starts on the first day of each month, such as January 1, + // February 1, March 1, and so on. + MONTH = 1; + + // A quarter. Quarters start on dates January 1, April 1, July 1, and October + // 1 of each year. + QUARTER = 2; + + // A year. Year starts on January 1. + YEAR = 3; } diff --git a/synth.metadata b/synth.metadata index d69c4f77..e014b486 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,23 +4,23 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/java-billingbudgets.git", - "sha": "71719c52e79bc05150785939a3959ad756b74db8" + "sha": "f7b7a72d435ed25e6b18da3e16f66b0a32ca916b" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "1305ca41d554eb0725237561e34129373bb8cbc1", - "internalRef": "362856902" + "sha": "dd6ba75f1ef4175d3f34028e2c60aaa04a0e1b65", + "internalRef": "368871890" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "1305ca41d554eb0725237561e34129373bb8cbc1", - "internalRef": "362856902" + "sha": "dd6ba75f1ef4175d3f34028e2c60aaa04a0e1b65", + "internalRef": "368871890" } }, { @@ -153,8 +153,11 @@ "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetName.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetOrBuilder.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/BudgetServiceProto.java", + "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CalendarPeriod.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CreateBudgetRequest.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CreateBudgetRequestOrBuilder.java", + "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriod.java", + "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/CustomPeriodOrBuilder.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/DeleteBudgetRequest.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/DeleteBudgetRequestOrBuilder.java", "proto-google-cloud-billingbudgets-v1/src/main/java/com/google/cloud/billing/budgets/v1/Filter.java", @@ -185,8 +188,11 @@ "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetName.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetOrBuilder.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/BudgetServiceOuterClass.java", + "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CalendarPeriod.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CreateBudgetRequest.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CreateBudgetRequestOrBuilder.java", + "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriod.java", + "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/CustomPeriodOrBuilder.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/DeleteBudgetRequest.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/DeleteBudgetRequestOrBuilder.java", "proto-google-cloud-billingbudgets-v1beta1/src/main/java/com/google/cloud/billing/budgets/v1beta1/Filter.java",