feat: Add support for granular repricing configurations via SkuGroups in Cloud Channel Repricing APIs

PiperOrigin-RevId: 494176375
This commit is contained in:
Google APIs 2022-12-09 08:12:00 -08:00 committed by Copybara-Service
parent e00487e208
commit e69c47f438
11 changed files with 692 additions and 420 deletions

View file

@ -26,7 +26,9 @@ option java_multiple_files = true;
option java_outer_classname = "ChannelPartnerLinksProto";
option java_package = "com.google.cloud.channel.v1";
// The level of granularity the [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] will display.
// The level of granularity the
// [ChannelPartnerLink][google.cloud.channel.v1.ChannelPartnerLink] will
// display.
enum ChannelPartnerLinkView {
// The default / unset value.
// The API will default to the BASIC view.
@ -72,24 +74,29 @@ message ChannelPartnerLink {
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. Cloud Identity ID of the linked reseller.
string reseller_cloud_identity_id = 2 [(google.api.field_behavior) = REQUIRED];
string reseller_cloud_identity_id = 2
[(google.api.field_behavior) = REQUIRED];
// Required. State of the channel partner link.
ChannelPartnerLinkState link_state = 3 [(google.api.field_behavior) = REQUIRED];
ChannelPartnerLinkState link_state = 3
[(google.api.field_behavior) = REQUIRED];
// Output only. URI of the web page where partner accepts the link invitation.
string invite_link_uri = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp of when the channel partner link is created.
google.protobuf.Timestamp create_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp create_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp of when the channel partner link is updated.
google.protobuf.Timestamp update_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp update_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Public identifier that a customer must use to generate a transfer token
// to move to this distributor-reseller combination.
// Output only. Public identifier that a customer must use to generate a
// transfer token to move to this distributor-reseller combination.
string public_id = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Cloud Identity info of the channel partner (IR).
CloudIdentityInfo channel_partner_cloud_identity_info = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
}
CloudIdentityInfo channel_partner_cloud_identity_info = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
}

View file

@ -149,4 +149,4 @@ message AdminUser {
// Family name of the admin user.
string family_name = 3;
}
}

View file

@ -45,7 +45,8 @@ message Customer {
// embargoes, we require a region and zip code. You must provide valid
// addresses for every customer. To set the customer's language, use the
// Customer-level language code.
google.type.PostalAddress org_postal_address = 3 [(google.api.field_behavior) = REQUIRED];
google.type.PostalAddress org_postal_address = 3
[(google.api.field_behavior) = REQUIRED];
// Primary contact info.
ContactInfo primary_contact_info = 4;
@ -62,10 +63,12 @@ message Customer {
string domain = 6 [(google.api.field_behavior) = REQUIRED];
// Output only. Time when the customer was created.
google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp create_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when the customer was updated.
google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp update_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The customer's Cloud Identity ID if the customer has a Cloud
// Identity resource.
@ -78,7 +81,8 @@ message Customer {
// Output only. Cloud Identity information for the customer.
// Populated only if a Cloud Identity account exists for this customer.
CloudIdentityInfo cloud_identity_info = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
CloudIdentityInfo cloud_identity_info = 12
[(google.api.field_behavior) = OUTPUT_ONLY];
// Cloud Identity ID of the customer's channel partner.
// Populated only if a channel partner exists for this customer.
@ -107,4 +111,4 @@ message ContactInfo {
// The customer account's contact phone number.
string phone = 7;
}
}

View file

@ -47,7 +47,9 @@ message Entitlement {
SUSPENDED = 5;
}
// Suspension reason for an entitlement if [provisioning_state][google.cloud.channel.v1.Entitlement.provisioning_state] = SUSPENDED.
// Suspension reason for an entitlement if
// [provisioning_state][google.cloud.channel.v1.Entitlement.provisioning_state]
// = SUSPENDED.
enum SuspensionReason {
// Not used.
SUSPENSION_REASON_UNSPECIFIED = 0;
@ -74,10 +76,12 @@ message Entitlement {
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the entitlement is created.
google.protobuf.Timestamp create_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp create_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which the entitlement is updated.
google.protobuf.Timestamp update_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp update_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The offer resource name for which the entitlement is to be
// created. Takes the form: accounts/{account_id}/offers/{offer_id}.
@ -93,19 +97,23 @@ message Entitlement {
CommitmentSettings commitment_settings = 12;
// Output only. Current provisioning state of the entitlement.
ProvisioningState provisioning_state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
ProvisioningState provisioning_state = 13
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Service provisioning details for the entitlement.
ProvisionedService provisioned_service = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
ProvisionedService provisioned_service = 16
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Enumerable of all current suspension reasons for an entitlement.
repeated SuspensionReason suspension_reasons = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Enumerable of all current suspension reasons for an
// entitlement.
repeated SuspensionReason suspension_reasons = 18
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. This purchase order (PO) information is for resellers to use for their
// company tracking usage. If a purchaseOrderId value is given, it appears in
// the API responses and shows up in the invoice. The property accepts up to
// 80 plain text characters. This is only supported for Google Workspace
// entitlements.
// Optional. This purchase order (PO) information is for resellers to use for
// their company tracking usage. If a purchaseOrderId value is given, it
// appears in the API responses and shows up in the invoice. The property
// accepts up to 80 plain text characters. This is only supported for Google
// Workspace entitlements.
string purchase_order_id = 19 [(google.api.field_behavior) = OPTIONAL];
// Output only. Settings for trial offers.
@ -136,9 +144,9 @@ message Parameter {
// Value of the parameter.
Value value = 2;
// Output only. Specifies whether this parameter is allowed to be changed. For example, for
// a Google Workspace Business Starter entitlement in commitment plan,
// num_units is editable when entitlement is active.
// Output only. Specifies whether this parameter is allowed to be changed. For
// example, for a Google Workspace Business Starter entitlement in commitment
// plan, num_units is editable when entitlement is active.
bool editable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
@ -146,32 +154,35 @@ message Parameter {
message AssociationInfo {
// The name of the base entitlement, for which this entitlement is an add-on.
string base_entitlement = 1 [(google.api.resource_reference) = {
type: "cloudchannel.googleapis.com/Entitlement"
}];
type: "cloudchannel.googleapis.com/Entitlement"
}];
}
// Service provisioned for an entitlement.
message ProvisionedService {
// Output only. Provisioning ID of the entitlement. For Google Workspace, this is the
// underlying Subscription ID. For Google Cloud Platform, this is the
// Output only. Provisioning ID of the entitlement. For Google Workspace, this
// is the underlying Subscription ID. For Google Cloud Platform, this is the
// Billing Account ID of the billing subaccount."
string provisioning_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The product pertaining to the provisioning resource as specified in the
// Offer.
// Output only. The product pertaining to the provisioning resource as
// specified in the Offer.
string product_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The SKU pertaining to the provisioning resource as specified in the Offer.
// Output only. The SKU pertaining to the provisioning resource as specified
// in the Offer.
string sku_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Commitment settings for commitment-based offers.
message CommitmentSettings {
// Output only. Commitment start timestamp.
google.protobuf.Timestamp start_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp start_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Commitment end timestamp.
google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp end_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Renewal settings applicable for a commitment-based Offer.
RenewalSettings renewal_settings = 4 [(google.api.field_behavior) = OPTIONAL];
@ -218,7 +229,8 @@ message TransferableSku {
// The SKU pertaining to the provisioning resource as specified in the Offer.
Sku sku = 11;
// Optional. The customer to transfer has an entitlement with the populated legacy SKU.
// Optional. The customer to transfer has an entitlement with the populated
// legacy SKU.
Sku legacy_sku = 12 [(google.api.field_behavior) = OPTIONAL];
}
@ -247,4 +259,4 @@ message TransferEligibility {
// Specified the reason for ineligibility.
Reason ineligibility_reason = 3;
}
}

View file

@ -125,8 +125,8 @@ enum PeriodType {
}
// Represents an offer made to resellers for purchase.
// An offer is associated with a [Sku][google.cloud.channel.v1.Sku], has a plan for payment, a price, and
// defines the constraints for buying.
// An offer is associated with a [Sku][google.cloud.channel.v1.Sku], has a plan
// for payment, a price, and defines the constraints for buying.
message Offer {
option (google.api.resource) = {
type: "cloudchannel.googleapis.com/Offer"
@ -156,7 +156,8 @@ message Offer {
google.protobuf.Timestamp start_time = 7;
// Output only. End of the Offer validity time.
google.protobuf.Timestamp end_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp end_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Parameters required to use current Offer to purchase.
repeated ParameterDefinition parameter_definitions = 9;
@ -326,4 +327,4 @@ message Period {
// Period Type.
PeriodType period_type = 2;
}
}

View file

@ -21,7 +21,8 @@ option java_multiple_files = true;
option java_outer_classname = "OperationsProto";
option java_package = "com.google.cloud.channel.v1";
// Provides contextual information about a [google.longrunning.Operation][google.longrunning.Operation].
// Provides contextual information about a
// [google.longrunning.Operation][google.longrunning.Operation].
message OperationMetadata {
// RPCs that return a Long Running Operation.
enum OperationType {
@ -64,4 +65,4 @@ message OperationMetadata {
// The RPC that initiated this Long Running Operation.
OperationType operation_type = 1;
}
}

View file

@ -91,4 +91,4 @@ message Media {
// Type of the media.
MediaType type = 3;
}
}

View file

@ -38,7 +38,8 @@ option java_package = "com.google.cloud.channel.v1";
// Google Workspace.)
service CloudChannelReportsService {
option (google.api.default_host) = "cloudchannel.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/apps.reports.usage.readonly";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/apps.reports.usage.readonly";
// Begins generation of data for a given report. The report
// identifier is a UID (for example, `613bf59q`).
@ -62,7 +63,8 @@ service CloudChannelReportsService {
// instance of [OperationMetadata][google.cloud.channel.v1.OperationMetadata].
//
// To get the results of report generation, call
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults] with the
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults]
// with the
// [RunReportJobResponse.report_job][google.cloud.channel.v1.RunReportJobResponse.report_job].
rpc RunReportJob(RunReportJobRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
@ -75,8 +77,10 @@ service CloudChannelReportsService {
};
}
// Retrieves data generated by [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
rpc FetchReportResults(FetchReportResultsRequest) returns (FetchReportResultsResponse) {
// Retrieves data generated by
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
rpc FetchReportResults(FetchReportResultsRequest)
returns (FetchReportResultsResponse) {
option (google.api.http) = {
post: "/v1/{report_job=accounts/*/reportJobs/*}:fetchReportResults"
body: "*"
@ -94,10 +98,11 @@ service CloudChannelReportsService {
}
}
// Request message for [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
// Request message for
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
message RunReportJobRequest {
// Required. The report's resource name. Specifies the account and report used to
// generate report data. The report_id identifier is a UID (for example,
// Required. The report's resource name. Specifies the account and report used
// to generate report data. The report_id identifier is a UID (for example,
// `613bf59q`).
// Name uses the format:
// accounts/{account_id}/reports/{report_id}
@ -111,8 +116,8 @@ message RunReportJobRequest {
// Optional. The range of usage or invoice dates to include in the result.
DateRange date_range = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A structured string that defines conditions on dimension columns to
// restrict the report output.
// Optional. A structured string that defines conditions on dimension columns
// to restrict the report output.
//
// Filters support logical operators (AND, OR, NOT) and conditional operators
// (=, !=, <, >, <=, and >=) using `column_id` as keys.
@ -130,9 +135,11 @@ message RunReportJobRequest {
string language_code = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Response message for [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
// Response message for
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
message RunReportJobResponse {
// Pass `report_job.name` to [FetchReportResultsRequest.report_job][google.cloud.channel.v1.FetchReportResultsRequest.report_job]
// Pass `report_job.name` to
// [FetchReportResultsRequest.report_job][google.cloud.channel.v1.FetchReportResultsRequest.report_job]
// to retrieve the report's results.
ReportJob report_job = 1;
@ -142,9 +149,11 @@ message RunReportJobResponse {
ReportResultsMetadata report_metadata = 2;
}
// Request message for [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults].
// Request message for
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults].
message FetchReportResultsRequest {
// Required. The report job created by [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
// Required. The report job created by
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob].
// Report_job uses the format:
// accounts/{account_id}/reportJobs/{report_job_id}
string report_job = 1 [
@ -154,9 +163,9 @@ message FetchReportResultsRequest {
}
];
// Optional. Requested page size of the report. The server may return fewer results than
// requested. If you don't specify a page size, the server uses a sensible
// default (may change over time).
// Optional. Requested page size of the report. The server may return fewer
// results than requested. If you don't specify a page size, the server uses a
// sensible default (may change over time).
//
// The maximum value is 30,000; the server will change larger values to
// 30,000.
@ -164,12 +173,15 @@ message FetchReportResultsRequest {
// Optional. A token that specifies a page of results beyond the first page.
// Obtained through
// [FetchReportResultsResponse.next_page_token][google.cloud.channel.v1.FetchReportResultsResponse.next_page_token] of the previous
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults] call.
// [FetchReportResultsResponse.next_page_token][google.cloud.channel.v1.FetchReportResultsResponse.next_page_token]
// of the previous
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults]
// call.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Response message for [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults].
// Response message for
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults].
// Contains a tabular representation of the report results.
message FetchReportResultsResponse {
// The metadata for the report results (display name, columns, row count, and
@ -180,27 +192,30 @@ message FetchReportResultsResponse {
// of the columns from `report_metadata`.
repeated Row rows = 2;
// Pass this token to [FetchReportResultsRequest.page_token][google.cloud.channel.v1.FetchReportResultsRequest.page_token] to retrieve
// the next page of results.
// Pass this token to
// [FetchReportResultsRequest.page_token][google.cloud.channel.v1.FetchReportResultsRequest.page_token]
// to retrieve the next page of results.
string next_page_token = 3;
}
// Request message for [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports].
// Request message for
// [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports].
message ListReportsRequest {
// Required. The resource name of the partner account to list available reports for.
// Parent uses the format:
// accounts/{account_id}
// Required. The resource name of the partner account to list available
// reports for. Parent uses the format: accounts/{account_id}
string parent = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Requested page size of the report. The server might return fewer results
// than requested. If unspecified, returns 20 reports.
// The maximum value is 100.
// Optional. Requested page size of the report. The server might return fewer
// results than requested. If unspecified, returns 20 reports. The maximum
// value is 100.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A token that specifies a page of results beyond the first page.
// Obtained through
// [ListReportsResponse.next_page_token][google.cloud.channel.v1.ListReportsResponse.next_page_token] of the previous
// [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports] call.
// [ListReportsResponse.next_page_token][google.cloud.channel.v1.ListReportsResponse.next_page_token]
// of the previous
// [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports]
// call.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The BCP-47 language code, such as "en-US". If specified, the
@ -210,18 +225,21 @@ message ListReportsRequest {
string language_code = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Response message for [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports].
// Response message for
// [CloudChannelReportsService.ListReports][google.cloud.channel.v1.CloudChannelReportsService.ListReports].
message ListReportsResponse {
// The reports available to the partner.
repeated Report reports = 1;
// Pass this token to [FetchReportResultsRequest.page_token][google.cloud.channel.v1.FetchReportResultsRequest.page_token] to retrieve
// the next page of results.
// Pass this token to
// [FetchReportResultsRequest.page_token][google.cloud.channel.v1.FetchReportResultsRequest.page_token]
// to retrieve the next page of results.
string next_page_token = 2;
}
// The result of a [RunReportJob][] operation. Contains the name to use in
// [FetchReportResultsRequest.report_job][google.cloud.channel.v1.FetchReportResultsRequest.report_job] and the status of the operation.
// [FetchReportResultsRequest.report_job][google.cloud.channel.v1.FetchReportResultsRequest.report_job]
// and the status of the operation.
message ReportJob {
option (google.api.resource) = {
type: "cloudchannel.googleapis.com/ReportJob"
@ -238,7 +256,8 @@ message ReportJob {
}
// The features describing the data. Returned by
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob] and
// [CloudChannelReportsService.RunReportJob][google.cloud.channel.v1.CloudChannelReportsService.RunReportJob]
// and
// [CloudChannelReportsService.FetchReportResults][google.cloud.channel.v1.CloudChannelReportsService.FetchReportResults].
message ReportResultsMetadata {
// Details of the completed report.
@ -404,9 +423,9 @@ message Report {
pattern: "accounts/{account}/reports/{report}"
};
// Required. The report's resource name. Specifies the account and report used to
// generate report data. The report_id identifier is a UID
// (for example, `613bf59q`).
// Required. The report's resource name. Specifies the account and report used
// to generate report data. The report_id identifier is a UID (for example,
// `613bf59q`).
//
// Name uses the format:
// accounts/{account_id}/reports/{report_id}
@ -422,4 +441,4 @@ message Report {
// A description of other aspects of the report, such as the products
// it supports.
string description = 4;
}
}

View file

@ -54,14 +54,16 @@ message CustomerRepricingConfig {
// accounts/{account_id}/customers/{customer_id}/customerRepricingConfigs/{id}.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The configuration for bill modifications made by a reseller before
// sending it to customers.
// Required. The configuration for bill modifications made by a reseller
// before sending it to customers.
RepricingConfig repricing_config = 2 [(google.api.field_behavior) = REQUIRED];
// Output only. Timestamp of an update to the repricing rule. If `update_time` is after
// [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month] then it indicates this was set
// mid-month.
google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp of an update to the repricing rule. If `update_time`
// is after
// [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
// then it indicates this was set mid-month.
google.protobuf.Timestamp update_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Configuration for how a distributor will rebill a channel partner
@ -77,14 +79,16 @@ message ChannelPartnerRepricingConfig {
// accounts/{account_id}/channelPartnerLinks/{channel_partner_id}/channelPartnerRepricingConfigs/{id}.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The configuration for bill modifications made by a reseller before
// sending it to ChannelPartner.
// Required. The configuration for bill modifications made by a reseller
// before sending it to ChannelPartner.
RepricingConfig repricing_config = 2 [(google.api.field_behavior) = REQUIRED];
// Output only. Timestamp of an update to the repricing rule. If `update_time` is after
// [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month] then it indicates this was set
// mid-month.
google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp of an update to the repricing rule. If `update_time`
// is after
// [RepricingConfig.effective_invoice_month][google.cloud.channel.v1.RepricingConfig.effective_invoice_month]
// then it indicates this was set mid-month.
google.protobuf.Timestamp update_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Configuration for repricing a Google bill over a period of time.
@ -95,16 +99,14 @@ message RepricingConfig {
// Format:
// accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
string entitlement = 1 [(google.api.resource_reference) = {
type: "cloudchannel.googleapis.com/Entitlement"
}];
type: "cloudchannel.googleapis.com/Entitlement"
}];
}
// Applies the repricing configuration at the channel partner level.
// The channel partner value is derived from the resource name. Takes an
// empty json object.
message ChannelPartnerGranularity {
}
message ChannelPartnerGranularity {}
// Required. Defines the granularity for repricing.
oneof granularity {
@ -117,16 +119,23 @@ message RepricingConfig {
ChannelPartnerGranularity channel_partner_granularity = 5;
}
// Required. The YearMonth when these adjustments activate. The Day field needs to be
// "0" since we only accept YearMonth repricing boundaries.
google.type.Date effective_invoice_month = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The YearMonth when these adjustments activate. The Day field
// needs to be "0" since we only accept YearMonth repricing boundaries.
google.type.Date effective_invoice_month = 1
[(google.api.field_behavior) = REQUIRED];
// Required. Information about the adjustment.
RepricingAdjustment adjustment = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The [RebillingBasis][google.cloud.channel.v1.RebillingBasis] to use for this bill. Specifies the relative cost
// based on repricing costs you will apply.
// Required. The [RebillingBasis][google.cloud.channel.v1.RebillingBasis] to
// use for this bill. Specifies the relative cost based on repricing costs you
// will apply.
RebillingBasis rebilling_basis = 3 [(google.api.field_behavior) = REQUIRED];
// The conditional overrides to apply for this configuration. If you list
// multiple overrides, only the first valid override is used. If you don't
// list any overrides, the API uses the normal adjustment and rebilling basis.
repeated ConditionalOverride conditional_overrides = 6;
}
// A type that represents the various adjustments you can apply to a bill.
@ -147,3 +156,39 @@ message PercentageAdjustment {
// Pass-Through => "0.00"
google.type.Decimal percentage = 2;
}
// Specifies the override to conditionally apply.
message ConditionalOverride {
// Required. Information about the applied override's adjustment.
RepricingAdjustment adjustment = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The [RebillingBasis][google.cloud.channel.v1.RebillingBasis] to
// use for the applied override. Shows the relative cost based on your
// repricing costs.
RebillingBasis rebilling_basis = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Specifies the condition which, if met, will apply the override.
RepricingCondition repricing_condition = 3
[(google.api.field_behavior) = REQUIRED];
}
// Represents the various repricing conditions you can use for a conditional
// override.
message RepricingCondition {
// Represents the types of existing conditional statements.
oneof condition {
// SKU Group condition for override.
SkuGroupCondition sku_group_condition = 1;
}
}
// A condition that applies the override if a line item SKU is found in the SKU
// group.
message SkuGroupCondition {
// Specifies a SKU group (https://cloud.google.com/skus/sku-groups).
// Resource name of SKU group. Format:
// accounts/{account}/skuGroups/{sku_group}.
// Example:
// "accounts/C01234/skuGroups/3d50fd57-3157-4577-a5a9-a219b8490041".
string sku_group = 1;
}

File diff suppressed because it is too large Load diff

View file

@ -40,8 +40,8 @@ message CustomerEvent {
// Resource name of the customer.
// Format: accounts/{account_id}/customers/{customer_id}
string customer = 1 [(google.api.resource_reference) = {
type: "cloudchannel.googleapis.com/Customer"
}];
type: "cloudchannel.googleapis.com/Customer"
}];
// Type of event which happened on the customer.
Type event_type = 2;
@ -97,8 +97,8 @@ message EntitlementEvent {
// Resource name of an entitlement of the form:
// accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}
string entitlement = 1 [(google.api.resource_reference) = {
type: "cloudchannel.googleapis.com/Entitlement"
}];
type: "cloudchannel.googleapis.com/Entitlement"
}];
// Type of event which happened on the entitlement.
Type event_type = 2;
@ -116,4 +116,4 @@ message SubscriberEvent {
// Entitlement event sent as part of Pub/Sub event to partners.
EntitlementEvent entitlement_event = 2;
}
}
}