// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.32.0 // protoc (unknown) // source: v1/config.proto package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" _ "google.golang.org/protobuf/types/known/emptypb" 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 Hook_Condition int32 const ( Hook_CONDITION_UNKNOWN Hook_Condition = 0 Hook_CONDITION_ANY_ERROR Hook_Condition = 1 // error running any operation. Hook_CONDITION_SNAPSHOT_START Hook_Condition = 2 // backup started. Hook_CONDITION_SNAPSHOT_END Hook_Condition = 3 // backup completed (success or fail). Hook_CONDITION_SNAPSHOT_ERROR Hook_Condition = 4 // snapshot failed. Hook_CONDITION_SNAPSHOT_WARNING Hook_Condition = 5 // snapshot completed with warnings. Hook_CONDITION_SNAPSHOT_SUCCESS Hook_Condition = 6 // snapshot succeeded. // prune conditions Hook_CONDITION_PRUNE_START Hook_Condition = 100 // prune started. Hook_CONDITION_PRUNE_ERROR Hook_Condition = 101 // prune failed. Hook_CONDITION_PRUNE_SUCCESS Hook_Condition = 102 // prune succeeded. // check conditions Hook_CONDITION_CHECK_START Hook_Condition = 200 // check started. Hook_CONDITION_CHECK_ERROR Hook_Condition = 201 // check failed. Hook_CONDITION_CHECK_SUCCESS Hook_Condition = 202 // check succeeded. ) // Enum value maps for Hook_Condition. var ( Hook_Condition_name = map[int32]string{ 0: "CONDITION_UNKNOWN", 1: "CONDITION_ANY_ERROR", 2: "CONDITION_SNAPSHOT_START", 3: "CONDITION_SNAPSHOT_END", 4: "CONDITION_SNAPSHOT_ERROR", 5: "CONDITION_SNAPSHOT_WARNING", 6: "CONDITION_SNAPSHOT_SUCCESS", 100: "CONDITION_PRUNE_START", 101: "CONDITION_PRUNE_ERROR", 102: "CONDITION_PRUNE_SUCCESS", 200: "CONDITION_CHECK_START", 201: "CONDITION_CHECK_ERROR", 202: "CONDITION_CHECK_SUCCESS", } Hook_Condition_value = map[string]int32{ "CONDITION_UNKNOWN": 0, "CONDITION_ANY_ERROR": 1, "CONDITION_SNAPSHOT_START": 2, "CONDITION_SNAPSHOT_END": 3, "CONDITION_SNAPSHOT_ERROR": 4, "CONDITION_SNAPSHOT_WARNING": 5, "CONDITION_SNAPSHOT_SUCCESS": 6, "CONDITION_PRUNE_START": 100, "CONDITION_PRUNE_ERROR": 101, "CONDITION_PRUNE_SUCCESS": 102, "CONDITION_CHECK_START": 200, "CONDITION_CHECK_ERROR": 201, "CONDITION_CHECK_SUCCESS": 202, } ) func (x Hook_Condition) Enum() *Hook_Condition { p := new(Hook_Condition) *p = x return p } func (x Hook_Condition) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Hook_Condition) Descriptor() protoreflect.EnumDescriptor { return file_v1_config_proto_enumTypes[0].Descriptor() } func (Hook_Condition) Type() protoreflect.EnumType { return &file_v1_config_proto_enumTypes[0] } func (x Hook_Condition) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Hook_Condition.Descriptor instead. func (Hook_Condition) EnumDescriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 0} } type Hook_OnError int32 const ( Hook_ON_ERROR_IGNORE Hook_OnError = 0 Hook_ON_ERROR_CANCEL Hook_OnError = 1 // cancels the operation and skips subsequent hooks Hook_ON_ERROR_FATAL Hook_OnError = 2 // fails the operation and subsequent hooks ) // Enum value maps for Hook_OnError. var ( Hook_OnError_name = map[int32]string{ 0: "ON_ERROR_IGNORE", 1: "ON_ERROR_CANCEL", 2: "ON_ERROR_FATAL", } Hook_OnError_value = map[string]int32{ "ON_ERROR_IGNORE": 0, "ON_ERROR_CANCEL": 1, "ON_ERROR_FATAL": 2, } ) func (x Hook_OnError) Enum() *Hook_OnError { p := new(Hook_OnError) *p = x return p } func (x Hook_OnError) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Hook_OnError) Descriptor() protoreflect.EnumDescriptor { return file_v1_config_proto_enumTypes[1].Descriptor() } func (Hook_OnError) Type() protoreflect.EnumType { return &file_v1_config_proto_enumTypes[1] } func (x Hook_OnError) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Hook_OnError.Descriptor instead. func (Hook_OnError) EnumDescriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 1} } type Hook_Webhook_Method int32 const ( Hook_Webhook_UNKNOWN Hook_Webhook_Method = 0 Hook_Webhook_GET Hook_Webhook_Method = 1 Hook_Webhook_POST Hook_Webhook_Method = 2 ) // Enum value maps for Hook_Webhook_Method. var ( Hook_Webhook_Method_name = map[int32]string{ 0: "UNKNOWN", 1: "GET", 2: "POST", } Hook_Webhook_Method_value = map[string]int32{ "UNKNOWN": 0, "GET": 1, "POST": 2, } ) func (x Hook_Webhook_Method) Enum() *Hook_Webhook_Method { p := new(Hook_Webhook_Method) *p = x return p } func (x Hook_Webhook_Method) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Hook_Webhook_Method) Descriptor() protoreflect.EnumDescriptor { return file_v1_config_proto_enumTypes[2].Descriptor() } func (Hook_Webhook_Method) Type() protoreflect.EnumType { return &file_v1_config_proto_enumTypes[2] } func (x Hook_Webhook_Method) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Hook_Webhook_Method.Descriptor instead. func (Hook_Webhook_Method) EnumDescriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 1, 0} } type HubConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Instances []*HubConfig_InstanceInfo `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"` } func (x *HubConfig) Reset() { *x = HubConfig{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HubConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*HubConfig) ProtoMessage() {} func (x *HubConfig) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 HubConfig.ProtoReflect.Descriptor instead. func (*HubConfig) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{0} } func (x *HubConfig) GetInstances() []*HubConfig_InstanceInfo { if x != nil { return x.Instances } return nil } // Config is the top level config object for restic UI. type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // modification number, used for read-modify-write consistency in the UI. Incremented on every write. Modno int32 `protobuf:"varint,1,opt,name=modno,proto3" json:"modno,omitempty"` Version int32 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` // version of the config file format. Used to determine when to run migrations. // The instance name for the Backrest installation. // This identifies backups created by this instance and is displayed in the UI. Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"` Repos []*Repo `protobuf:"bytes,3,rep,name=repos,proto3" json:"repos,omitempty"` Plans []*Plan `protobuf:"bytes,4,rep,name=plans,proto3" json:"plans,omitempty"` Auth *Auth `protobuf:"bytes,5,opt,name=auth,proto3" json:"auth,omitempty"` } func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Config) String() string { return protoimpl.X.MessageStringOf(x) } func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{1} } func (x *Config) GetModno() int32 { if x != nil { return x.Modno } return 0 } func (x *Config) GetVersion() int32 { if x != nil { return x.Version } return 0 } func (x *Config) GetInstance() string { if x != nil { return x.Instance } return "" } func (x *Config) GetRepos() []*Repo { if x != nil { return x.Repos } return nil } func (x *Config) GetPlans() []*Plan { if x != nil { return x.Plans } return nil } func (x *Config) GetAuth() *Auth { if x != nil { return x.Auth } return nil } type Repo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // unique but human readable ID for this repo. Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` // restic repo URI Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` // plaintext password Env []string `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"` // extra environment variables to set for restic. Flags []string `protobuf:"bytes,5,rep,name=flags,proto3" json:"flags,omitempty"` // extra flags set on the restic command. PrunePolicy *PrunePolicy `protobuf:"bytes,6,opt,name=prune_policy,json=prunePolicy,proto3" json:"prune_policy,omitempty"` // policy for when to run prune. CheckPolicy *CheckPolicy `protobuf:"bytes,9,opt,name=check_policy,json=checkPolicy,proto3" json:"check_policy,omitempty"` // policy for when to run check. Hooks []*Hook `protobuf:"bytes,7,rep,name=hooks,proto3" json:"hooks,omitempty"` // hooks to run on events for this repo. AutoUnlock bool `protobuf:"varint,8,opt,name=auto_unlock,json=autoUnlock,proto3" json:"auto_unlock,omitempty"` // automatically unlock the repo when needed. } func (x *Repo) Reset() { *x = Repo{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Repo) String() string { return protoimpl.X.MessageStringOf(x) } func (*Repo) ProtoMessage() {} func (x *Repo) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Repo.ProtoReflect.Descriptor instead. func (*Repo) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{2} } func (x *Repo) GetId() string { if x != nil { return x.Id } return "" } func (x *Repo) GetUri() string { if x != nil { return x.Uri } return "" } func (x *Repo) GetPassword() string { if x != nil { return x.Password } return "" } func (x *Repo) GetEnv() []string { if x != nil { return x.Env } return nil } func (x *Repo) GetFlags() []string { if x != nil { return x.Flags } return nil } func (x *Repo) GetPrunePolicy() *PrunePolicy { if x != nil { return x.PrunePolicy } return nil } func (x *Repo) GetCheckPolicy() *CheckPolicy { if x != nil { return x.CheckPolicy } return nil } func (x *Repo) GetHooks() []*Hook { if x != nil { return x.Hooks } return nil } func (x *Repo) GetAutoUnlock() bool { if x != nil { return x.AutoUnlock } return false } type Plan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // unique but human readable ID for this plan. Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"` // ID of the repo to use. // Deprecated: Marked as deprecated in v1/config.proto. Disabled bool `protobuf:"varint,11,opt,name=disabled,proto3" json:"disabled,omitempty"` // disable the plan. Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` // paths to include in the backup. Excludes []string `protobuf:"bytes,5,rep,name=excludes,proto3" json:"excludes,omitempty"` // glob patterns to exclude. Iexcludes []string `protobuf:"bytes,9,rep,name=iexcludes,proto3" json:"iexcludes,omitempty"` // case insensitive glob patterns to exclude. // Deprecated: Marked as deprecated in v1/config.proto. Cron string `protobuf:"bytes,6,opt,name=cron,proto3" json:"cron,omitempty"` // cron expression describing the backup schedule. Schedule *Schedule `protobuf:"bytes,12,opt,name=schedule,proto3" json:"schedule,omitempty"` // schedule for the backup. Retention *RetentionPolicy `protobuf:"bytes,7,opt,name=retention,proto3" json:"retention,omitempty"` // retention policy for snapshots. Hooks []*Hook `protobuf:"bytes,8,rep,name=hooks,proto3" json:"hooks,omitempty"` // hooks to run on events for this plan. BackupFlags []string `protobuf:"bytes,10,rep,name=backup_flags,proto3" json:"backup_flags,omitempty"` // extra flags to set when running a backup command. } func (x *Plan) Reset() { *x = Plan{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Plan) String() string { return protoimpl.X.MessageStringOf(x) } func (*Plan) ProtoMessage() {} func (x *Plan) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Plan.ProtoReflect.Descriptor instead. func (*Plan) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{3} } func (x *Plan) GetId() string { if x != nil { return x.Id } return "" } func (x *Plan) GetRepo() string { if x != nil { return x.Repo } return "" } // Deprecated: Marked as deprecated in v1/config.proto. func (x *Plan) GetDisabled() bool { if x != nil { return x.Disabled } return false } func (x *Plan) GetPaths() []string { if x != nil { return x.Paths } return nil } func (x *Plan) GetExcludes() []string { if x != nil { return x.Excludes } return nil } func (x *Plan) GetIexcludes() []string { if x != nil { return x.Iexcludes } return nil } // Deprecated: Marked as deprecated in v1/config.proto. func (x *Plan) GetCron() string { if x != nil { return x.Cron } return "" } func (x *Plan) GetSchedule() *Schedule { if x != nil { return x.Schedule } return nil } func (x *Plan) GetRetention() *RetentionPolicy { if x != nil { return x.Retention } return nil } func (x *Plan) GetHooks() []*Hook { if x != nil { return x.Hooks } return nil } func (x *Plan) GetBackupFlags() []string { if x != nil { return x.BackupFlags } return nil } type RetentionPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Deprecated: Marked as deprecated in v1/config.proto. MaxUnusedLimit string `protobuf:"bytes,1,opt,name=max_unused_limit,json=maxUnusedLimit,proto3" json:"max_unused_limit,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepLastN int32 `protobuf:"varint,2,opt,name=keep_last_n,json=keepLastN,proto3" json:"keep_last_n,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepHourly int32 `protobuf:"varint,3,opt,name=keep_hourly,json=keepHourly,proto3" json:"keep_hourly,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepDaily int32 `protobuf:"varint,4,opt,name=keep_daily,json=keepDaily,proto3" json:"keep_daily,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepWeekly int32 `protobuf:"varint,5,opt,name=keep_weekly,json=keepWeekly,proto3" json:"keep_weekly,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepMonthly int32 `protobuf:"varint,6,opt,name=keep_monthly,json=keepMonthly,proto3" json:"keep_monthly,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepYearly int32 `protobuf:"varint,7,opt,name=keep_yearly,json=keepYearly,proto3" json:"keep_yearly,omitempty"` // Deprecated: Marked as deprecated in v1/config.proto. KeepWithinDuration string `protobuf:"bytes,8,opt,name=keep_within_duration,json=keepWithinDuration,proto3" json:"keep_within_duration,omitempty"` // keep snapshots within a duration e.g. 1y2m3d4h5m6s // Types that are assignable to Policy: // // *RetentionPolicy_PolicyKeepLastN // *RetentionPolicy_PolicyTimeBucketed // *RetentionPolicy_PolicyKeepAll Policy isRetentionPolicy_Policy `protobuf_oneof:"policy"` } func (x *RetentionPolicy) Reset() { *x = RetentionPolicy{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RetentionPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*RetentionPolicy) ProtoMessage() {} func (x *RetentionPolicy) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 RetentionPolicy.ProtoReflect.Descriptor instead. func (*RetentionPolicy) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{4} } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetMaxUnusedLimit() string { if x != nil { return x.MaxUnusedLimit } return "" } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepLastN() int32 { if x != nil { return x.KeepLastN } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepHourly() int32 { if x != nil { return x.KeepHourly } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepDaily() int32 { if x != nil { return x.KeepDaily } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepWeekly() int32 { if x != nil { return x.KeepWeekly } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepMonthly() int32 { if x != nil { return x.KeepMonthly } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepYearly() int32 { if x != nil { return x.KeepYearly } return 0 } // Deprecated: Marked as deprecated in v1/config.proto. func (x *RetentionPolicy) GetKeepWithinDuration() string { if x != nil { return x.KeepWithinDuration } return "" } func (m *RetentionPolicy) GetPolicy() isRetentionPolicy_Policy { if m != nil { return m.Policy } return nil } func (x *RetentionPolicy) GetPolicyKeepLastN() int32 { if x, ok := x.GetPolicy().(*RetentionPolicy_PolicyKeepLastN); ok { return x.PolicyKeepLastN } return 0 } func (x *RetentionPolicy) GetPolicyTimeBucketed() *RetentionPolicy_TimeBucketedCounts { if x, ok := x.GetPolicy().(*RetentionPolicy_PolicyTimeBucketed); ok { return x.PolicyTimeBucketed } return nil } func (x *RetentionPolicy) GetPolicyKeepAll() bool { if x, ok := x.GetPolicy().(*RetentionPolicy_PolicyKeepAll); ok { return x.PolicyKeepAll } return false } type isRetentionPolicy_Policy interface { isRetentionPolicy_Policy() } type RetentionPolicy_PolicyKeepLastN struct { PolicyKeepLastN int32 `protobuf:"varint,10,opt,name=policy_keep_last_n,json=policyKeepLastN,proto3,oneof"` } type RetentionPolicy_PolicyTimeBucketed struct { PolicyTimeBucketed *RetentionPolicy_TimeBucketedCounts `protobuf:"bytes,11,opt,name=policy_time_bucketed,json=policyTimeBucketed,proto3,oneof"` } type RetentionPolicy_PolicyKeepAll struct { PolicyKeepAll bool `protobuf:"varint,12,opt,name=policy_keep_all,json=policyKeepAll,proto3,oneof"` } func (*RetentionPolicy_PolicyKeepLastN) isRetentionPolicy_Policy() {} func (*RetentionPolicy_PolicyTimeBucketed) isRetentionPolicy_Policy() {} func (*RetentionPolicy_PolicyKeepAll) isRetentionPolicy_Policy() {} type PrunePolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Deprecated: Marked as deprecated in v1/config.proto. MaxFrequencyDays int32 `protobuf:"varint,1,opt,name=max_frequency_days,json=maxFrequencyDays,proto3" json:"max_frequency_days,omitempty"` // max frequency of prune runs in days. Schedule *Schedule `protobuf:"bytes,2,opt,name=schedule,proto3" json:"schedule,omitempty"` MaxUnusedBytes int32 `protobuf:"varint,3,opt,name=max_unused_bytes,json=maxUnusedBytes,proto3" json:"max_unused_bytes,omitempty"` // max unused bytes before running prune. MaxUnusedPercent int32 `protobuf:"varint,4,opt,name=max_unused_percent,json=maxUnusedPercent,proto3" json:"max_unused_percent,omitempty"` // max unused percent before running prune. } func (x *PrunePolicy) Reset() { *x = PrunePolicy{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PrunePolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*PrunePolicy) ProtoMessage() {} func (x *PrunePolicy) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 PrunePolicy.ProtoReflect.Descriptor instead. func (*PrunePolicy) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{5} } // Deprecated: Marked as deprecated in v1/config.proto. func (x *PrunePolicy) GetMaxFrequencyDays() int32 { if x != nil { return x.MaxFrequencyDays } return 0 } func (x *PrunePolicy) GetSchedule() *Schedule { if x != nil { return x.Schedule } return nil } func (x *PrunePolicy) GetMaxUnusedBytes() int32 { if x != nil { return x.MaxUnusedBytes } return 0 } func (x *PrunePolicy) GetMaxUnusedPercent() int32 { if x != nil { return x.MaxUnusedPercent } return 0 } type CheckPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` // Types that are assignable to Mode: // // *CheckPolicy_StructureOnly // *CheckPolicy_ReadDataSubsetPercent Mode isCheckPolicy_Mode `protobuf_oneof:"mode"` } func (x *CheckPolicy) Reset() { *x = CheckPolicy{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckPolicy) ProtoMessage() {} func (x *CheckPolicy) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 CheckPolicy.ProtoReflect.Descriptor instead. func (*CheckPolicy) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{6} } func (x *CheckPolicy) GetSchedule() *Schedule { if x != nil { return x.Schedule } return nil } func (m *CheckPolicy) GetMode() isCheckPolicy_Mode { if m != nil { return m.Mode } return nil } func (x *CheckPolicy) GetStructureOnly() bool { if x, ok := x.GetMode().(*CheckPolicy_StructureOnly); ok { return x.StructureOnly } return false } func (x *CheckPolicy) GetReadDataSubsetPercent() int32 { if x, ok := x.GetMode().(*CheckPolicy_ReadDataSubsetPercent); ok { return x.ReadDataSubsetPercent } return 0 } type isCheckPolicy_Mode interface { isCheckPolicy_Mode() } type CheckPolicy_StructureOnly struct { StructureOnly bool `protobuf:"varint,100,opt,name=structure_only,json=structureOnly,proto3,oneof"` // only check the structure of the repo. No pack data is read. } type CheckPolicy_ReadDataSubsetPercent struct { ReadDataSubsetPercent int32 `protobuf:"varint,101,opt,name=read_data_subset_percent,json=readDataSubsetPercent,proto3,oneof"` // check a percentage of pack data. } func (*CheckPolicy_StructureOnly) isCheckPolicy_Mode() {} func (*CheckPolicy_ReadDataSubsetPercent) isCheckPolicy_Mode() {} type Schedule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Schedule: // // *Schedule_Disabled // *Schedule_Cron // *Schedule_MaxFrequencyDays // *Schedule_MaxFrequencyHours Schedule isSchedule_Schedule `protobuf_oneof:"schedule"` } func (x *Schedule) Reset() { *x = Schedule{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Schedule) String() string { return protoimpl.X.MessageStringOf(x) } func (*Schedule) ProtoMessage() {} func (x *Schedule) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Schedule.ProtoReflect.Descriptor instead. func (*Schedule) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{7} } func (m *Schedule) GetSchedule() isSchedule_Schedule { if m != nil { return m.Schedule } return nil } func (x *Schedule) GetDisabled() bool { if x, ok := x.GetSchedule().(*Schedule_Disabled); ok { return x.Disabled } return false } func (x *Schedule) GetCron() string { if x, ok := x.GetSchedule().(*Schedule_Cron); ok { return x.Cron } return "" } func (x *Schedule) GetMaxFrequencyDays() int32 { if x, ok := x.GetSchedule().(*Schedule_MaxFrequencyDays); ok { return x.MaxFrequencyDays } return 0 } func (x *Schedule) GetMaxFrequencyHours() int32 { if x, ok := x.GetSchedule().(*Schedule_MaxFrequencyHours); ok { return x.MaxFrequencyHours } return 0 } type isSchedule_Schedule interface { isSchedule_Schedule() } type Schedule_Disabled struct { Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3,oneof"` // disable the schedule. } type Schedule_Cron struct { Cron string `protobuf:"bytes,2,opt,name=cron,proto3,oneof"` // cron expression describing the schedule. } type Schedule_MaxFrequencyDays struct { MaxFrequencyDays int32 `protobuf:"varint,3,opt,name=maxFrequencyDays,proto3,oneof"` // max frequency of runs in days. } type Schedule_MaxFrequencyHours struct { MaxFrequencyHours int32 `protobuf:"varint,4,opt,name=maxFrequencyHours,proto3,oneof"` // max frequency of runs in hours. } func (*Schedule_Disabled) isSchedule_Schedule() {} func (*Schedule_Cron) isSchedule_Schedule() {} func (*Schedule_MaxFrequencyDays) isSchedule_Schedule() {} func (*Schedule_MaxFrequencyHours) isSchedule_Schedule() {} type Hook struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Conditions []Hook_Condition `protobuf:"varint,1,rep,packed,name=conditions,proto3,enum=v1.Hook_Condition" json:"conditions,omitempty"` OnError Hook_OnError `protobuf:"varint,2,opt,name=on_error,json=onError,proto3,enum=v1.Hook_OnError" json:"on_error,omitempty"` // Types that are assignable to Action: // // *Hook_ActionCommand // *Hook_ActionWebhook // *Hook_ActionDiscord // *Hook_ActionGotify // *Hook_ActionSlack // *Hook_ActionShoutrrr Action isHook_Action `protobuf_oneof:"action"` } func (x *Hook) Reset() { *x = Hook{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook) ProtoMessage() {} func (x *Hook) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook.ProtoReflect.Descriptor instead. func (*Hook) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8} } func (x *Hook) GetConditions() []Hook_Condition { if x != nil { return x.Conditions } return nil } func (x *Hook) GetOnError() Hook_OnError { if x != nil { return x.OnError } return Hook_ON_ERROR_IGNORE } func (m *Hook) GetAction() isHook_Action { if m != nil { return m.Action } return nil } func (x *Hook) GetActionCommand() *Hook_Command { if x, ok := x.GetAction().(*Hook_ActionCommand); ok { return x.ActionCommand } return nil } func (x *Hook) GetActionWebhook() *Hook_Webhook { if x, ok := x.GetAction().(*Hook_ActionWebhook); ok { return x.ActionWebhook } return nil } func (x *Hook) GetActionDiscord() *Hook_Discord { if x, ok := x.GetAction().(*Hook_ActionDiscord); ok { return x.ActionDiscord } return nil } func (x *Hook) GetActionGotify() *Hook_Gotify { if x, ok := x.GetAction().(*Hook_ActionGotify); ok { return x.ActionGotify } return nil } func (x *Hook) GetActionSlack() *Hook_Slack { if x, ok := x.GetAction().(*Hook_ActionSlack); ok { return x.ActionSlack } return nil } func (x *Hook) GetActionShoutrrr() *Hook_Shoutrrr { if x, ok := x.GetAction().(*Hook_ActionShoutrrr); ok { return x.ActionShoutrrr } return nil } type isHook_Action interface { isHook_Action() } type Hook_ActionCommand struct { ActionCommand *Hook_Command `protobuf:"bytes,100,opt,name=action_command,json=actionCommand,proto3,oneof"` } type Hook_ActionWebhook struct { ActionWebhook *Hook_Webhook `protobuf:"bytes,101,opt,name=action_webhook,json=actionWebhook,proto3,oneof"` } type Hook_ActionDiscord struct { ActionDiscord *Hook_Discord `protobuf:"bytes,102,opt,name=action_discord,json=actionDiscord,proto3,oneof"` } type Hook_ActionGotify struct { ActionGotify *Hook_Gotify `protobuf:"bytes,103,opt,name=action_gotify,json=actionGotify,proto3,oneof"` } type Hook_ActionSlack struct { ActionSlack *Hook_Slack `protobuf:"bytes,104,opt,name=action_slack,json=actionSlack,proto3,oneof"` } type Hook_ActionShoutrrr struct { ActionShoutrrr *Hook_Shoutrrr `protobuf:"bytes,105,opt,name=action_shoutrrr,json=actionShoutrrr,proto3,oneof"` } func (*Hook_ActionCommand) isHook_Action() {} func (*Hook_ActionWebhook) isHook_Action() {} func (*Hook_ActionDiscord) isHook_Action() {} func (*Hook_ActionGotify) isHook_Action() {} func (*Hook_ActionSlack) isHook_Action() {} func (*Hook_ActionShoutrrr) isHook_Action() {} type Auth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3" json:"disabled,omitempty"` // disable authentication. Users []*User `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` // users to allow access to the UI. } func (x *Auth) Reset() { *x = Auth{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Auth) String() string { return protoimpl.X.MessageStringOf(x) } func (*Auth) ProtoMessage() {} func (x *Auth) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Auth.ProtoReflect.Descriptor instead. func (*Auth) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{9} } func (x *Auth) GetDisabled() bool { if x != nil { return x.Disabled } return false } func (x *Auth) GetUsers() []*User { if x != nil { return x.Users } return nil } type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Types that are assignable to Password: // // *User_PasswordBcrypt Password isUser_Password `protobuf_oneof:"password"` } func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *User) String() string { return protoimpl.X.MessageStringOf(x) } func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{10} } func (x *User) GetName() string { if x != nil { return x.Name } return "" } func (m *User) GetPassword() isUser_Password { if m != nil { return m.Password } return nil } func (x *User) GetPasswordBcrypt() string { if x, ok := x.GetPassword().(*User_PasswordBcrypt); ok { return x.PasswordBcrypt } return "" } type isUser_Password interface { isUser_Password() } type User_PasswordBcrypt struct { PasswordBcrypt string `protobuf:"bytes,2,opt,name=password_bcrypt,json=passwordBcrypt,proto3,oneof"` } func (*User_PasswordBcrypt) isUser_Password() {} type HubConfig_InstanceInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` // secret used to authenticate with the hub. } func (x *HubConfig_InstanceInfo) Reset() { *x = HubConfig_InstanceInfo{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HubConfig_InstanceInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HubConfig_InstanceInfo) ProtoMessage() {} func (x *HubConfig_InstanceInfo) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 HubConfig_InstanceInfo.ProtoReflect.Descriptor instead. func (*HubConfig_InstanceInfo) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{0, 0} } func (x *HubConfig_InstanceInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *HubConfig_InstanceInfo) GetSecret() string { if x != nil { return x.Secret } return "" } type RetentionPolicy_TimeBucketedCounts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Hourly int32 `protobuf:"varint,1,opt,name=hourly,proto3" json:"hourly,omitempty"` // keep the last n hourly snapshots. Daily int32 `protobuf:"varint,2,opt,name=daily,proto3" json:"daily,omitempty"` // keep the last n daily snapshots. Weekly int32 `protobuf:"varint,3,opt,name=weekly,proto3" json:"weekly,omitempty"` // keep the last n weekly snapshots. Monthly int32 `protobuf:"varint,4,opt,name=monthly,proto3" json:"monthly,omitempty"` // keep the last n monthly snapshots. Yearly int32 `protobuf:"varint,5,opt,name=yearly,proto3" json:"yearly,omitempty"` // keep the last n yearly snapshots. } func (x *RetentionPolicy_TimeBucketedCounts) Reset() { *x = RetentionPolicy_TimeBucketedCounts{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RetentionPolicy_TimeBucketedCounts) String() string { return protoimpl.X.MessageStringOf(x) } func (*RetentionPolicy_TimeBucketedCounts) ProtoMessage() {} func (x *RetentionPolicy_TimeBucketedCounts) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 RetentionPolicy_TimeBucketedCounts.ProtoReflect.Descriptor instead. func (*RetentionPolicy_TimeBucketedCounts) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{4, 0} } func (x *RetentionPolicy_TimeBucketedCounts) GetHourly() int32 { if x != nil { return x.Hourly } return 0 } func (x *RetentionPolicy_TimeBucketedCounts) GetDaily() int32 { if x != nil { return x.Daily } return 0 } func (x *RetentionPolicy_TimeBucketedCounts) GetWeekly() int32 { if x != nil { return x.Weekly } return 0 } func (x *RetentionPolicy_TimeBucketedCounts) GetMonthly() int32 { if x != nil { return x.Monthly } return 0 } func (x *RetentionPolicy_TimeBucketedCounts) GetYearly() int32 { if x != nil { return x.Yearly } return 0 } type Hook_Command struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` } func (x *Hook_Command) Reset() { *x = Hook_Command{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Command) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Command) ProtoMessage() {} func (x *Hook_Command) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook_Command.ProtoReflect.Descriptor instead. func (*Hook_Command) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 0} } func (x *Hook_Command) GetCommand() string { if x != nil { return x.Command } return "" } type Hook_Webhook struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"` Method Hook_Webhook_Method `protobuf:"varint,2,opt,name=method,proto3,enum=v1.Hook_Webhook_Method" json:"method,omitempty"` Template string `protobuf:"bytes,100,opt,name=template,proto3" json:"template,omitempty"` } func (x *Hook_Webhook) Reset() { *x = Hook_Webhook{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Webhook) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Webhook) ProtoMessage() {} func (x *Hook_Webhook) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook_Webhook.ProtoReflect.Descriptor instead. func (*Hook_Webhook) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 1} } func (x *Hook_Webhook) GetWebhookUrl() string { if x != nil { return x.WebhookUrl } return "" } func (x *Hook_Webhook) GetMethod() Hook_Webhook_Method { if x != nil { return x.Method } return Hook_Webhook_UNKNOWN } func (x *Hook_Webhook) GetTemplate() string { if x != nil { return x.Template } return "" } type Hook_Discord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"` Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload. } func (x *Hook_Discord) Reset() { *x = Hook_Discord{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Discord) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Discord) ProtoMessage() {} func (x *Hook_Discord) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook_Discord.ProtoReflect.Descriptor instead. func (*Hook_Discord) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 2} } func (x *Hook_Discord) GetWebhookUrl() string { if x != nil { return x.WebhookUrl } return "" } func (x *Hook_Discord) GetTemplate() string { if x != nil { return x.Template } return "" } type Hook_Gotify struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BaseUrl string `protobuf:"bytes,1,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"` Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` Template string `protobuf:"bytes,100,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload. TitleTemplate string `protobuf:"bytes,101,opt,name=title_template,json=titleTemplate,proto3" json:"title_template,omitempty"` // template for the webhook title. } func (x *Hook_Gotify) Reset() { *x = Hook_Gotify{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Gotify) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Gotify) ProtoMessage() {} func (x *Hook_Gotify) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook_Gotify.ProtoReflect.Descriptor instead. func (*Hook_Gotify) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 3} } func (x *Hook_Gotify) GetBaseUrl() string { if x != nil { return x.BaseUrl } return "" } func (x *Hook_Gotify) GetToken() string { if x != nil { return x.Token } return "" } func (x *Hook_Gotify) GetTemplate() string { if x != nil { return x.Template } return "" } func (x *Hook_Gotify) GetTitleTemplate() string { if x != nil { return x.TitleTemplate } return "" } type Hook_Slack struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"` Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload. } func (x *Hook_Slack) Reset() { *x = Hook_Slack{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Slack) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Slack) ProtoMessage() {} func (x *Hook_Slack) ProtoReflect() protoreflect.Message { mi := &file_v1_config_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 Hook_Slack.ProtoReflect.Descriptor instead. func (*Hook_Slack) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 4} } func (x *Hook_Slack) GetWebhookUrl() string { if x != nil { return x.WebhookUrl } return "" } func (x *Hook_Slack) GetTemplate() string { if x != nil { return x.Template } return "" } type Hook_Shoutrrr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ShoutrrrUrl string `protobuf:"bytes,1,opt,name=shoutrrr_url,json=shoutrrrUrl,proto3" json:"shoutrrr_url,omitempty"` Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` } func (x *Hook_Shoutrrr) Reset() { *x = Hook_Shoutrrr{} if protoimpl.UnsafeEnabled { mi := &file_v1_config_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Hook_Shoutrrr) String() string { return protoimpl.X.MessageStringOf(x) } func (*Hook_Shoutrrr) ProtoMessage() {} func (x *Hook_Shoutrrr) ProtoReflect() protoreflect.Message { mi := &file_v1_config_proto_msgTypes[18] 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 Hook_Shoutrrr.ProtoReflect.Descriptor instead. func (*Hook_Shoutrrr) Descriptor() ([]byte, []int) { return file_v1_config_proto_rawDescGZIP(), []int{8, 5} } func (x *Hook_Shoutrrr) GetShoutrrrUrl() string { if x != nil { return x.ShoutrrrUrl } return "" } func (x *Hook_Shoutrrr) GetTemplate() string { if x != nil { return x.Template } return "" } var File_v1_config_proto protoreflect.FileDescriptor var file_v1_config_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7d, 0x0a, 0x09, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x36, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x6e, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0x95, 0x02, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xd3, 0x02, 0x0a, 0x04, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1e, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0xa0, 0x05, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2c, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x4c, 0x61, 0x73, 0x74, 0x4e, 0x12, 0x23, 0x0a, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x12, 0x23, 0x0a, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x0c, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x12, 0x23, 0x0a, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x59, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x12, 0x34, 0x0a, 0x14, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x65, 0x65, 0x70, 0x4c, 0x61, 0x73, 0x74, 0x4e, 0x12, 0x5a, 0x0a, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x6c, 0x1a, 0x8c, 0x01, 0x0a, 0x12, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x77, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x79, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xc1, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x61, 0x79, 0x73, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x39, 0x0a, 0x18, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x61, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xb5, 0x0b, 0x0a, 0x04, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x07, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x39, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x47, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x33, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x53, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x1a, 0x23, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x1a, 0xa1, 0x01, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x2f, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x28, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x46, 0x0a, 0x07, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x7c, 0x0a, 0x06, 0x47, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x44, 0x0a, 0x05, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x49, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x75, 0x74, 0x72, 0x72, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xfc, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x66, 0x12, 0x1a, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc8, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xc9, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0xca, 0x01, 0x22, 0x47, 0x0a, 0x07, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x51, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x62, 0x63, 0x72, 0x79, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x63, 0x72, 0x79, 0x70, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x72, 0x65, 0x74, 0x68, 0x67, 0x65, 0x6f, 0x72, 0x67, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x72, 0x65, 0x73, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_v1_config_proto_rawDescOnce sync.Once file_v1_config_proto_rawDescData = file_v1_config_proto_rawDesc ) func file_v1_config_proto_rawDescGZIP() []byte { file_v1_config_proto_rawDescOnce.Do(func() { file_v1_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_config_proto_rawDescData) }) return file_v1_config_proto_rawDescData } var file_v1_config_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_v1_config_proto_goTypes = []interface{}{ (Hook_Condition)(0), // 0: v1.Hook.Condition (Hook_OnError)(0), // 1: v1.Hook.OnError (Hook_Webhook_Method)(0), // 2: v1.Hook.Webhook.Method (*HubConfig)(nil), // 3: v1.HubConfig (*Config)(nil), // 4: v1.Config (*Repo)(nil), // 5: v1.Repo (*Plan)(nil), // 6: v1.Plan (*RetentionPolicy)(nil), // 7: v1.RetentionPolicy (*PrunePolicy)(nil), // 8: v1.PrunePolicy (*CheckPolicy)(nil), // 9: v1.CheckPolicy (*Schedule)(nil), // 10: v1.Schedule (*Hook)(nil), // 11: v1.Hook (*Auth)(nil), // 12: v1.Auth (*User)(nil), // 13: v1.User (*HubConfig_InstanceInfo)(nil), // 14: v1.HubConfig.InstanceInfo (*RetentionPolicy_TimeBucketedCounts)(nil), // 15: v1.RetentionPolicy.TimeBucketedCounts (*Hook_Command)(nil), // 16: v1.Hook.Command (*Hook_Webhook)(nil), // 17: v1.Hook.Webhook (*Hook_Discord)(nil), // 18: v1.Hook.Discord (*Hook_Gotify)(nil), // 19: v1.Hook.Gotify (*Hook_Slack)(nil), // 20: v1.Hook.Slack (*Hook_Shoutrrr)(nil), // 21: v1.Hook.Shoutrrr } var file_v1_config_proto_depIdxs = []int32{ 14, // 0: v1.HubConfig.instances:type_name -> v1.HubConfig.InstanceInfo 5, // 1: v1.Config.repos:type_name -> v1.Repo 6, // 2: v1.Config.plans:type_name -> v1.Plan 12, // 3: v1.Config.auth:type_name -> v1.Auth 8, // 4: v1.Repo.prune_policy:type_name -> v1.PrunePolicy 9, // 5: v1.Repo.check_policy:type_name -> v1.CheckPolicy 11, // 6: v1.Repo.hooks:type_name -> v1.Hook 10, // 7: v1.Plan.schedule:type_name -> v1.Schedule 7, // 8: v1.Plan.retention:type_name -> v1.RetentionPolicy 11, // 9: v1.Plan.hooks:type_name -> v1.Hook 15, // 10: v1.RetentionPolicy.policy_time_bucketed:type_name -> v1.RetentionPolicy.TimeBucketedCounts 10, // 11: v1.PrunePolicy.schedule:type_name -> v1.Schedule 10, // 12: v1.CheckPolicy.schedule:type_name -> v1.Schedule 0, // 13: v1.Hook.conditions:type_name -> v1.Hook.Condition 1, // 14: v1.Hook.on_error:type_name -> v1.Hook.OnError 16, // 15: v1.Hook.action_command:type_name -> v1.Hook.Command 17, // 16: v1.Hook.action_webhook:type_name -> v1.Hook.Webhook 18, // 17: v1.Hook.action_discord:type_name -> v1.Hook.Discord 19, // 18: v1.Hook.action_gotify:type_name -> v1.Hook.Gotify 20, // 19: v1.Hook.action_slack:type_name -> v1.Hook.Slack 21, // 20: v1.Hook.action_shoutrrr:type_name -> v1.Hook.Shoutrrr 13, // 21: v1.Auth.users:type_name -> v1.User 2, // 22: v1.Hook.Webhook.method:type_name -> v1.Hook.Webhook.Method 23, // [23:23] is the sub-list for method output_type 23, // [23:23] is the sub-list for method input_type 23, // [23:23] is the sub-list for extension type_name 23, // [23:23] is the sub-list for extension extendee 0, // [0:23] is the sub-list for field type_name } func init() { file_v1_config_proto_init() } func file_v1_config_proto_init() { if File_v1_config_proto != nil { return } if !protoimpl.UnsafeEnabled { file_v1_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HubConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Config); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Repo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Plan); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetentionPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrunePolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Schedule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Auth); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HubConfig_InstanceInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetentionPolicy_TimeBucketedCounts); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Command); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Webhook); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Discord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Gotify); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Slack); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_v1_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Hook_Shoutrrr); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_v1_config_proto_msgTypes[4].OneofWrappers = []interface{}{ (*RetentionPolicy_PolicyKeepLastN)(nil), (*RetentionPolicy_PolicyTimeBucketed)(nil), (*RetentionPolicy_PolicyKeepAll)(nil), } file_v1_config_proto_msgTypes[6].OneofWrappers = []interface{}{ (*CheckPolicy_StructureOnly)(nil), (*CheckPolicy_ReadDataSubsetPercent)(nil), } file_v1_config_proto_msgTypes[7].OneofWrappers = []interface{}{ (*Schedule_Disabled)(nil), (*Schedule_Cron)(nil), (*Schedule_MaxFrequencyDays)(nil), (*Schedule_MaxFrequencyHours)(nil), } file_v1_config_proto_msgTypes[8].OneofWrappers = []interface{}{ (*Hook_ActionCommand)(nil), (*Hook_ActionWebhook)(nil), (*Hook_ActionDiscord)(nil), (*Hook_ActionGotify)(nil), (*Hook_ActionSlack)(nil), (*Hook_ActionShoutrrr)(nil), } file_v1_config_proto_msgTypes[10].OneofWrappers = []interface{}{ (*User_PasswordBcrypt)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_v1_config_proto_rawDesc, NumEnums: 3, NumMessages: 19, NumExtensions: 0, NumServices: 0, }, GoTypes: file_v1_config_proto_goTypes, DependencyIndexes: file_v1_config_proto_depIdxs, EnumInfos: file_v1_config_proto_enumTypes, MessageInfos: file_v1_config_proto_msgTypes, }.Build() File_v1_config_proto = out.File file_v1_config_proto_rawDesc = nil file_v1_config_proto_goTypes = nil file_v1_config_proto_depIdxs = nil }