// Copyright (c) 2024 Gitpod GmbH. All rights reserved. // Licensed under the GNU Affero General Public License (AGPL). // See License.AGPL.txt in the project root for license information. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc (unknown) // source: usage/v1/usage.proto package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type ListUsageRequest_Ordering int32 const ( ListUsageRequest_ORDERING_DESCENDING ListUsageRequest_Ordering = 0 ListUsageRequest_ORDERING_ASCENDING ListUsageRequest_Ordering = 1 ) // Enum value maps for ListUsageRequest_Ordering. var ( ListUsageRequest_Ordering_name = map[int32]string{ 0: "ORDERING_DESCENDING", 1: "ORDERING_ASCENDING", } ListUsageRequest_Ordering_value = map[string]int32{ "ORDERING_DESCENDING": 0, "ORDERING_ASCENDING": 1, } ) func (x ListUsageRequest_Ordering) Enum() *ListUsageRequest_Ordering { p := new(ListUsageRequest_Ordering) *p = x return p } func (x ListUsageRequest_Ordering) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ListUsageRequest_Ordering) Descriptor() protoreflect.EnumDescriptor { return file_usage_v1_usage_proto_enumTypes[0].Descriptor() } func (ListUsageRequest_Ordering) Type() protoreflect.EnumType { return &file_usage_v1_usage_proto_enumTypes[0] } func (x ListUsageRequest_Ordering) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ListUsageRequest_Ordering.Descriptor instead. func (ListUsageRequest_Ordering) EnumDescriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{4, 0} } type Usage_Kind int32 const ( Usage_KIND_WORKSPACE_INSTANCE Usage_Kind = 0 Usage_KIND_INVOICE Usage_Kind = 1 ) // Enum value maps for Usage_Kind. var ( Usage_Kind_name = map[int32]string{ 0: "KIND_WORKSPACE_INSTANCE", 1: "KIND_INVOICE", } Usage_Kind_value = map[string]int32{ "KIND_WORKSPACE_INSTANCE": 0, "KIND_INVOICE": 1, } ) func (x Usage_Kind) Enum() *Usage_Kind { p := new(Usage_Kind) *p = x return p } func (x Usage_Kind) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Usage_Kind) Descriptor() protoreflect.EnumDescriptor { return file_usage_v1_usage_proto_enumTypes[1].Descriptor() } func (Usage_Kind) Type() protoreflect.EnumType { return &file_usage_v1_usage_proto_enumTypes[1] } func (x Usage_Kind) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Usage_Kind.Descriptor instead. func (Usage_Kind) EnumDescriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{6, 0} } type CostCenter_BillingStrategy int32 const ( CostCenter_BILLING_STRATEGY_STRIPE CostCenter_BillingStrategy = 0 CostCenter_BILLING_STRATEGY_OTHER CostCenter_BillingStrategy = 1 ) // Enum value maps for CostCenter_BillingStrategy. var ( CostCenter_BillingStrategy_name = map[int32]string{ 0: "BILLING_STRATEGY_STRIPE", 1: "BILLING_STRATEGY_OTHER", } CostCenter_BillingStrategy_value = map[string]int32{ "BILLING_STRATEGY_STRIPE": 0, "BILLING_STRATEGY_OTHER": 1, } ) func (x CostCenter_BillingStrategy) Enum() *CostCenter_BillingStrategy { p := new(CostCenter_BillingStrategy) *p = x return p } func (x CostCenter_BillingStrategy) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CostCenter_BillingStrategy) Descriptor() protoreflect.EnumDescriptor { return file_usage_v1_usage_proto_enumTypes[2].Descriptor() } func (CostCenter_BillingStrategy) Type() protoreflect.EnumType { return &file_usage_v1_usage_proto_enumTypes[2] } func (x CostCenter_BillingStrategy) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CostCenter_BillingStrategy.Descriptor instead. func (CostCenter_BillingStrategy) EnumDescriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{13, 0} } type ReconcileUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // from specifies the starting time range for this request. From *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` // to specifies the end time range for this request. To *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` } func (x *ReconcileUsageRequest) Reset() { *x = ReconcileUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReconcileUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReconcileUsageRequest) ProtoMessage() {} func (x *ReconcileUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReconcileUsageRequest.ProtoReflect.Descriptor instead. func (*ReconcileUsageRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{0} } func (x *ReconcileUsageRequest) GetFrom() *timestamppb.Timestamp { if x != nil { return x.From } return nil } func (x *ReconcileUsageRequest) GetTo() *timestamppb.Timestamp { if x != nil { return x.To } return nil } type ReconcileUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ReconcileUsageResponse) Reset() { *x = ReconcileUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ReconcileUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReconcileUsageResponse) ProtoMessage() {} func (x *ReconcileUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReconcileUsageResponse.ProtoReflect.Descriptor instead. func (*ReconcileUsageResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{1} } type PaginatedRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PerPage int64 `protobuf:"varint,1,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` } func (x *PaginatedRequest) Reset() { *x = PaginatedRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PaginatedRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PaginatedRequest) ProtoMessage() {} func (x *PaginatedRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PaginatedRequest.ProtoReflect.Descriptor instead. func (*PaginatedRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{2} } func (x *PaginatedRequest) GetPerPage() int64 { if x != nil { return x.PerPage } return 0 } func (x *PaginatedRequest) GetPage() int64 { if x != nil { return x.Page } return 0 } type PaginatedResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PerPage int64 `protobuf:"varint,2,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` TotalPages int64 `protobuf:"varint,3,opt,name=total_pages,json=totalPages,proto3" json:"total_pages,omitempty"` Total int64 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` Page int64 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` } func (x *PaginatedResponse) Reset() { *x = PaginatedResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PaginatedResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PaginatedResponse) ProtoMessage() {} func (x *PaginatedResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PaginatedResponse.ProtoReflect.Descriptor instead. func (*PaginatedResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{3} } func (x *PaginatedResponse) GetPerPage() int64 { if x != nil { return x.PerPage } return 0 } func (x *PaginatedResponse) GetTotalPages() int64 { if x != nil { return x.TotalPages } return 0 } func (x *PaginatedResponse) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *PaginatedResponse) GetPage() int64 { if x != nil { return x.Page } return 0 } type ListUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AttributionId string `protobuf:"bytes,1,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` // optional user_id can be used to filter the results to only include instances created by the given user UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // from specifies the starting time range for this request. // All instances which existed starting at from will be returned. From *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` // to specifies the end time range for this request. // All instances which existed ending at to will be returned. To *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` Order ListUsageRequest_Ordering `protobuf:"varint,4,opt,name=order,proto3,enum=usage.v1.ListUsageRequest_Ordering" json:"order,omitempty"` Pagination *PaginatedRequest `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *ListUsageRequest) Reset() { *x = ListUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListUsageRequest) ProtoMessage() {} func (x *ListUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListUsageRequest.ProtoReflect.Descriptor instead. func (*ListUsageRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{4} } func (x *ListUsageRequest) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } func (x *ListUsageRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *ListUsageRequest) GetFrom() *timestamppb.Timestamp { if x != nil { return x.From } return nil } func (x *ListUsageRequest) GetTo() *timestamppb.Timestamp { if x != nil { return x.To } return nil } func (x *ListUsageRequest) GetOrder() ListUsageRequest_Ordering { if x != nil { return x.Order } return ListUsageRequest_ORDERING_DESCENDING } func (x *ListUsageRequest) GetPagination() *PaginatedRequest { if x != nil { return x.Pagination } return nil } type ListUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UsageEntries []*Usage `protobuf:"bytes,1,rep,name=usage_entries,json=usageEntries,proto3" json:"usage_entries,omitempty"` Pagination *PaginatedResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` // the amount of credits the given account (attributionId) has used during the requested period CreditsUsed float64 `protobuf:"fixed64,3,opt,name=credits_used,json=creditsUsed,proto3" json:"credits_used,omitempty"` // ledger interval LedgerInterval *durationpb.Duration `protobuf:"bytes,4,opt,name=ledger_interval,json=ledgerInterval,proto3" json:"ledger_interval,omitempty"` } func (x *ListUsageResponse) Reset() { *x = ListUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListUsageResponse) ProtoMessage() {} func (x *ListUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListUsageResponse.ProtoReflect.Descriptor instead. func (*ListUsageResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{5} } func (x *ListUsageResponse) GetUsageEntries() []*Usage { if x != nil { return x.UsageEntries } return nil } func (x *ListUsageResponse) GetPagination() *PaginatedResponse { if x != nil { return x.Pagination } return nil } func (x *ListUsageResponse) GetCreditsUsed() float64 { if x != nil { return x.CreditsUsed } return 0 } func (x *ListUsageResponse) GetLedgerInterval() *durationpb.Duration { if x != nil { return x.LedgerInterval } return nil } type Usage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` AttributionId string `protobuf:"bytes,2,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Credits float64 `protobuf:"fixed64,4,opt,name=credits,proto3" json:"credits,omitempty"` EffectiveTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=effective_time,json=effectiveTime,proto3" json:"effective_time,omitempty"` Kind Usage_Kind `protobuf:"varint,6,opt,name=kind,proto3,enum=usage.v1.Usage_Kind" json:"kind,omitempty"` WorkspaceInstanceId string `protobuf:"bytes,7,opt,name=workspace_instance_id,json=workspaceInstanceId,proto3" json:"workspace_instance_id,omitempty"` Draft bool `protobuf:"varint,8,opt,name=draft,proto3" json:"draft,omitempty"` Metadata string `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Usage) Reset() { *x = Usage{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Usage) String() string { return protoimpl.X.MessageStringOf(x) } func (*Usage) ProtoMessage() {} func (x *Usage) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Usage.ProtoReflect.Descriptor instead. func (*Usage) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{6} } func (x *Usage) GetId() string { if x != nil { return x.Id } return "" } func (x *Usage) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } func (x *Usage) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Usage) GetCredits() float64 { if x != nil { return x.Credits } return 0 } func (x *Usage) GetEffectiveTime() *timestamppb.Timestamp { if x != nil { return x.EffectiveTime } return nil } func (x *Usage) GetKind() Usage_Kind { if x != nil { return x.Kind } return Usage_KIND_WORKSPACE_INSTANCE } func (x *Usage) GetWorkspaceInstanceId() string { if x != nil { return x.WorkspaceInstanceId } return "" } func (x *Usage) GetDraft() bool { if x != nil { return x.Draft } return false } func (x *Usage) GetMetadata() string { if x != nil { return x.Metadata } return "" } type SetCostCenterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CostCenter *CostCenter `protobuf:"bytes,1,opt,name=cost_center,json=costCenter,proto3" json:"cost_center,omitempty"` } func (x *SetCostCenterRequest) Reset() { *x = SetCostCenterRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetCostCenterRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetCostCenterRequest) ProtoMessage() {} func (x *SetCostCenterRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetCostCenterRequest.ProtoReflect.Descriptor instead. func (*SetCostCenterRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{7} } func (x *SetCostCenterRequest) GetCostCenter() *CostCenter { if x != nil { return x.CostCenter } return nil } type SetCostCenterResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CostCenter *CostCenter `protobuf:"bytes,1,opt,name=cost_center,json=costCenter,proto3" json:"cost_center,omitempty"` } func (x *SetCostCenterResponse) Reset() { *x = SetCostCenterResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetCostCenterResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetCostCenterResponse) ProtoMessage() {} func (x *SetCostCenterResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SetCostCenterResponse.ProtoReflect.Descriptor instead. func (*SetCostCenterResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{8} } func (x *SetCostCenterResponse) GetCostCenter() *CostCenter { if x != nil { return x.CostCenter } return nil } type GetBalanceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AttributionId string `protobuf:"bytes,1,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` } func (x *GetBalanceRequest) Reset() { *x = GetBalanceRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBalanceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBalanceRequest) ProtoMessage() {} func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetBalanceRequest.ProtoReflect.Descriptor instead. func (*GetBalanceRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{9} } func (x *GetBalanceRequest) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } type GetBalanceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Credits float64 `protobuf:"fixed64,4,opt,name=credits,proto3" json:"credits,omitempty"` } func (x *GetBalanceResponse) Reset() { *x = GetBalanceResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBalanceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBalanceResponse) ProtoMessage() {} func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetBalanceResponse.ProtoReflect.Descriptor instead. func (*GetBalanceResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{10} } func (x *GetBalanceResponse) GetCredits() float64 { if x != nil { return x.Credits } return 0 } type GetCostCenterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AttributionId string `protobuf:"bytes,1,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` } func (x *GetCostCenterRequest) Reset() { *x = GetCostCenterRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCostCenterRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCostCenterRequest) ProtoMessage() {} func (x *GetCostCenterRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCostCenterRequest.ProtoReflect.Descriptor instead. func (*GetCostCenterRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{11} } func (x *GetCostCenterRequest) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } type GetCostCenterResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CostCenter *CostCenter `protobuf:"bytes,1,opt,name=cost_center,json=costCenter,proto3" json:"cost_center,omitempty"` } func (x *GetCostCenterResponse) Reset() { *x = GetCostCenterResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCostCenterResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCostCenterResponse) ProtoMessage() {} func (x *GetCostCenterResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCostCenterResponse.ProtoReflect.Descriptor instead. func (*GetCostCenterResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{12} } func (x *GetCostCenterResponse) GetCostCenter() *CostCenter { if x != nil { return x.CostCenter } return nil } type CostCenter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AttributionId string `protobuf:"bytes,1,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` SpendingLimit int32 `protobuf:"varint,2,opt,name=spending_limit,json=spendingLimit,proto3" json:"spending_limit,omitempty"` BillingStrategy CostCenter_BillingStrategy `protobuf:"varint,3,opt,name=billing_strategy,json=billingStrategy,proto3,enum=usage.v1.CostCenter_BillingStrategy" json:"billing_strategy,omitempty"` // next_billing_time specifies when the next billing cycle happens. Only set when billing strategy is 'other'. This property is readonly. NextBillingTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=next_billing_time,json=nextBillingTime,proto3" json:"next_billing_time,omitempty"` BillingCycleStart *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=billing_cycle_start,json=billingCycleStart,proto3" json:"billing_cycle_start,omitempty"` } func (x *CostCenter) Reset() { *x = CostCenter{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CostCenter) String() string { return protoimpl.X.MessageStringOf(x) } func (*CostCenter) ProtoMessage() {} func (x *CostCenter) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CostCenter.ProtoReflect.Descriptor instead. func (*CostCenter) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{13} } func (x *CostCenter) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } func (x *CostCenter) GetSpendingLimit() int32 { if x != nil { return x.SpendingLimit } return 0 } func (x *CostCenter) GetBillingStrategy() CostCenter_BillingStrategy { if x != nil { return x.BillingStrategy } return CostCenter_BILLING_STRATEGY_STRIPE } func (x *CostCenter) GetNextBillingTime() *timestamppb.Timestamp { if x != nil { return x.NextBillingTime } return nil } func (x *CostCenter) GetBillingCycleStart() *timestamppb.Timestamp { if x != nil { return x.BillingCycleStart } return nil } type ResetUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ResetUsageRequest) Reset() { *x = ResetUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResetUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResetUsageRequest) ProtoMessage() {} func (x *ResetUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ResetUsageRequest.ProtoReflect.Descriptor instead. func (*ResetUsageRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{14} } type ResetUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ResetUsageResponse) Reset() { *x = ResetUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResetUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResetUsageResponse) ProtoMessage() {} func (x *ResetUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ResetUsageResponse.ProtoReflect.Descriptor instead. func (*ResetUsageResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{15} } type AddUsageCreditNoteRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AttributionId string `protobuf:"bytes,1,opt,name=attribution_id,json=attributionId,proto3" json:"attribution_id,omitempty"` // the amount of credits to add to the given account Credits int32 `protobuf:"varint,2,opt,name=credits,proto3" json:"credits,omitempty"` // a human readable description for the reason this credit note exists Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // the id of the user (admin) who created the note UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *AddUsageCreditNoteRequest) Reset() { *x = AddUsageCreditNoteRequest{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUsageCreditNoteRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUsageCreditNoteRequest) ProtoMessage() {} func (x *AddUsageCreditNoteRequest) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddUsageCreditNoteRequest.ProtoReflect.Descriptor instead. func (*AddUsageCreditNoteRequest) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{16} } func (x *AddUsageCreditNoteRequest) GetAttributionId() string { if x != nil { return x.AttributionId } return "" } func (x *AddUsageCreditNoteRequest) GetCredits() int32 { if x != nil { return x.Credits } return 0 } func (x *AddUsageCreditNoteRequest) GetDescription() string { if x != nil { return x.Description } return "" } func (x *AddUsageCreditNoteRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type AddUsageCreditNoteResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddUsageCreditNoteResponse) Reset() { *x = AddUsageCreditNoteResponse{} if protoimpl.UnsafeEnabled { mi := &file_usage_v1_usage_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUsageCreditNoteResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUsageCreditNoteResponse) ProtoMessage() {} func (x *AddUsageCreditNoteResponse) ProtoReflect() protoreflect.Message { mi := &file_usage_v1_usage_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddUsageCreditNoteResponse.ProtoReflect.Descriptor instead. func (*AddUsageCreditNoteResponse) Descriptor() ([]byte, []int) { return file_usage_v1_usage_proto_rawDescGZIP(), []int{17} } var File_usage_v1_usage_proto protoreflect.FileDescriptor var file_usage_v1_usage_proto_rawDesc = []byte{ 0x0a, 0x14, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x73, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2a, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x10, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x79, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2a, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x39, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x08, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x75, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x84, 0x03, 0x0a, 0x05, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x10, 0x01, 0x22, 0x4d, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x22, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x8b, 0x03, 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x10, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x46, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x13, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x4a, 0x0a, 0x0f, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x50, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xce, 0x04, 0x0a, 0x0c, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_usage_v1_usage_proto_rawDescOnce sync.Once file_usage_v1_usage_proto_rawDescData = file_usage_v1_usage_proto_rawDesc ) func file_usage_v1_usage_proto_rawDescGZIP() []byte { file_usage_v1_usage_proto_rawDescOnce.Do(func() { file_usage_v1_usage_proto_rawDescData = protoimpl.X.CompressGZIP(file_usage_v1_usage_proto_rawDescData) }) return file_usage_v1_usage_proto_rawDescData } var file_usage_v1_usage_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_usage_v1_usage_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_usage_v1_usage_proto_goTypes = []interface{}{ (ListUsageRequest_Ordering)(0), // 0: usage.v1.ListUsageRequest.Ordering (Usage_Kind)(0), // 1: usage.v1.Usage.Kind (CostCenter_BillingStrategy)(0), // 2: usage.v1.CostCenter.BillingStrategy (*ReconcileUsageRequest)(nil), // 3: usage.v1.ReconcileUsageRequest (*ReconcileUsageResponse)(nil), // 4: usage.v1.ReconcileUsageResponse (*PaginatedRequest)(nil), // 5: usage.v1.PaginatedRequest (*PaginatedResponse)(nil), // 6: usage.v1.PaginatedResponse (*ListUsageRequest)(nil), // 7: usage.v1.ListUsageRequest (*ListUsageResponse)(nil), // 8: usage.v1.ListUsageResponse (*Usage)(nil), // 9: usage.v1.Usage (*SetCostCenterRequest)(nil), // 10: usage.v1.SetCostCenterRequest (*SetCostCenterResponse)(nil), // 11: usage.v1.SetCostCenterResponse (*GetBalanceRequest)(nil), // 12: usage.v1.GetBalanceRequest (*GetBalanceResponse)(nil), // 13: usage.v1.GetBalanceResponse (*GetCostCenterRequest)(nil), // 14: usage.v1.GetCostCenterRequest (*GetCostCenterResponse)(nil), // 15: usage.v1.GetCostCenterResponse (*CostCenter)(nil), // 16: usage.v1.CostCenter (*ResetUsageRequest)(nil), // 17: usage.v1.ResetUsageRequest (*ResetUsageResponse)(nil), // 18: usage.v1.ResetUsageResponse (*AddUsageCreditNoteRequest)(nil), // 19: usage.v1.AddUsageCreditNoteRequest (*AddUsageCreditNoteResponse)(nil), // 20: usage.v1.AddUsageCreditNoteResponse (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 22: google.protobuf.Duration } var file_usage_v1_usage_proto_depIdxs = []int32{ 21, // 0: usage.v1.ReconcileUsageRequest.from:type_name -> google.protobuf.Timestamp 21, // 1: usage.v1.ReconcileUsageRequest.to:type_name -> google.protobuf.Timestamp 21, // 2: usage.v1.ListUsageRequest.from:type_name -> google.protobuf.Timestamp 21, // 3: usage.v1.ListUsageRequest.to:type_name -> google.protobuf.Timestamp 0, // 4: usage.v1.ListUsageRequest.order:type_name -> usage.v1.ListUsageRequest.Ordering 5, // 5: usage.v1.ListUsageRequest.pagination:type_name -> usage.v1.PaginatedRequest 9, // 6: usage.v1.ListUsageResponse.usage_entries:type_name -> usage.v1.Usage 6, // 7: usage.v1.ListUsageResponse.pagination:type_name -> usage.v1.PaginatedResponse 22, // 8: usage.v1.ListUsageResponse.ledger_interval:type_name -> google.protobuf.Duration 21, // 9: usage.v1.Usage.effective_time:type_name -> google.protobuf.Timestamp 1, // 10: usage.v1.Usage.kind:type_name -> usage.v1.Usage.Kind 16, // 11: usage.v1.SetCostCenterRequest.cost_center:type_name -> usage.v1.CostCenter 16, // 12: usage.v1.SetCostCenterResponse.cost_center:type_name -> usage.v1.CostCenter 16, // 13: usage.v1.GetCostCenterResponse.cost_center:type_name -> usage.v1.CostCenter 2, // 14: usage.v1.CostCenter.billing_strategy:type_name -> usage.v1.CostCenter.BillingStrategy 21, // 15: usage.v1.CostCenter.next_billing_time:type_name -> google.protobuf.Timestamp 21, // 16: usage.v1.CostCenter.billing_cycle_start:type_name -> google.protobuf.Timestamp 14, // 17: usage.v1.UsageService.GetCostCenter:input_type -> usage.v1.GetCostCenterRequest 10, // 18: usage.v1.UsageService.SetCostCenter:input_type -> usage.v1.SetCostCenterRequest 3, // 19: usage.v1.UsageService.ReconcileUsage:input_type -> usage.v1.ReconcileUsageRequest 17, // 20: usage.v1.UsageService.ResetUsage:input_type -> usage.v1.ResetUsageRequest 7, // 21: usage.v1.UsageService.ListUsage:input_type -> usage.v1.ListUsageRequest 12, // 22: usage.v1.UsageService.GetBalance:input_type -> usage.v1.GetBalanceRequest 19, // 23: usage.v1.UsageService.AddUsageCreditNote:input_type -> usage.v1.AddUsageCreditNoteRequest 15, // 24: usage.v1.UsageService.GetCostCenter:output_type -> usage.v1.GetCostCenterResponse 11, // 25: usage.v1.UsageService.SetCostCenter:output_type -> usage.v1.SetCostCenterResponse 4, // 26: usage.v1.UsageService.ReconcileUsage:output_type -> usage.v1.ReconcileUsageResponse 18, // 27: usage.v1.UsageService.ResetUsage:output_type -> usage.v1.ResetUsageResponse 8, // 28: usage.v1.UsageService.ListUsage:output_type -> usage.v1.ListUsageResponse 13, // 29: usage.v1.UsageService.GetBalance:output_type -> usage.v1.GetBalanceResponse 20, // 30: usage.v1.UsageService.AddUsageCreditNote:output_type -> usage.v1.AddUsageCreditNoteResponse 24, // [24:31] is the sub-list for method output_type 17, // [17:24] is the sub-list for method input_type 17, // [17:17] is the sub-list for extension type_name 17, // [17:17] is the sub-list for extension extendee 0, // [0:17] is the sub-list for field type_name } func init() { file_usage_v1_usage_proto_init() } func file_usage_v1_usage_proto_init() { if File_usage_v1_usage_proto != nil { return } if !protoimpl.UnsafeEnabled { file_usage_v1_usage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReconcileUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReconcileUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaginatedRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaginatedResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Usage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetCostCenterRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetCostCenterResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBalanceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBalanceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCostCenterRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCostCenterResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CostCenter); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUsageCreditNoteRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_usage_v1_usage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUsageCreditNoteResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_usage_v1_usage_proto_rawDesc, NumEnums: 3, NumMessages: 18, NumExtensions: 0, NumServices: 1, }, GoTypes: file_usage_v1_usage_proto_goTypes, DependencyIndexes: file_usage_v1_usage_proto_depIdxs, EnumInfos: file_usage_v1_usage_proto_enumTypes, MessageInfos: file_usage_v1_usage_proto_msgTypes, }.Build() File_usage_v1_usage_proto = out.File file_usage_v1_usage_proto_rawDesc = nil file_usage_v1_usage_proto_goTypes = nil file_usage_v1_usage_proto_depIdxs = nil }