diff --git a/proto/api/v1/workspace_service.proto b/proto/api/v1/workspace_service.proto index 90b8fab92..97377d0ac 100644 --- a/proto/api/v1/workspace_service.proto +++ b/proto/api/v1/workspace_service.proto @@ -65,108 +65,114 @@ message WorkspaceSetting { string name = 1 [(google.api.field_behavior) = IDENTIFIER]; oneof value { - WorkspaceGeneralSetting general_setting = 2; - WorkspaceStorageSetting storage_setting = 3; - WorkspaceMemoRelatedSetting memo_related_setting = 4; + GeneralSetting general_setting = 2; + StorageSetting storage_setting = 3; + MemoRelatedSetting memo_related_setting = 4; } + // Enumeration of workspace setting keys. enum Key { KEY_UNSPECIFIED = 0; - // BASIC is the key for basic settings. - BASIC = 1; // GENERAL is the key for general settings. - GENERAL = 2; + GENERAL = 1; // STORAGE is the key for storage settings. - STORAGE = 3; + STORAGE = 2; // MEMO_RELATED is the key for memo related settings. - MEMO_RELATED = 4; + MEMO_RELATED = 3; } -} - -message WorkspaceGeneralSetting { - // theme is the name of the selected theme. - // This references a CSS file in the web/public/themes/ directory. - string theme = 1; - // disallow_user_registration disallows user registration. - bool disallow_user_registration = 2; - // disallow_password_auth disallows password authentication. - bool disallow_password_auth = 3; - // additional_script is the additional script. - string additional_script = 4; - // additional_style is the additional style. - string additional_style = 5; - // custom_profile is the custom profile. - WorkspaceCustomProfile custom_profile = 6; - // week_start_day_offset is the week start day offset from Sunday. - // 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday - // Default is Sunday. - int32 week_start_day_offset = 7; - - // disallow_change_username disallows changing username. - bool disallow_change_username = 8; - // disallow_change_nickname disallows changing nickname. - bool disallow_change_nickname = 9; -} - -message WorkspaceCustomProfile { - string title = 1; - string description = 2; - string logo_url = 3; - string locale = 4; - string appearance = 5; -} -message WorkspaceStorageSetting { - enum StorageType { - STORAGE_TYPE_UNSPECIFIED = 0; - // DATABASE is the database storage type. - DATABASE = 1; - // LOCAL is the local storage type. - LOCAL = 2; - // S3 is the S3 storage type. - S3 = 3; + // General workspace settings configuration. + message GeneralSetting { + // theme is the name of the selected theme. + // This references a CSS file in the web/public/themes/ directory. + string theme = 1; + // disallow_user_registration disallows user registration. + bool disallow_user_registration = 2; + // disallow_password_auth disallows password authentication. + bool disallow_password_auth = 3; + // additional_script is the additional script. + string additional_script = 4; + // additional_style is the additional style. + string additional_style = 5; + // custom_profile is the custom profile. + CustomProfile custom_profile = 6; + // week_start_day_offset is the week start day offset from Sunday. + // 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday + // Default is Sunday. + int32 week_start_day_offset = 7; + + // disallow_change_username disallows changing username. + bool disallow_change_username = 8; + // disallow_change_nickname disallows changing nickname. + bool disallow_change_nickname = 9; + + // Custom profile configuration for workspace branding. + message CustomProfile { + string title = 1; + string description = 2; + string logo_url = 3; + string locale = 4; + string appearance = 5; + } } - // storage_type is the storage type. - StorageType storage_type = 1; - // The template of file path. - // e.g. assets/{timestamp}_{filename} - string filepath_template = 2; - // The max upload size in megabytes. - int64 upload_size_limit_mb = 3; - // Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ - message S3Config { - string access_key_id = 1; - string access_key_secret = 2; - string endpoint = 3; - string region = 4; - string bucket = 5; - bool use_path_style = 6; + + // Storage configuration settings for workspace attachments. + message StorageSetting { + // Storage type enumeration for different storage backends. + enum StorageType { + STORAGE_TYPE_UNSPECIFIED = 0; + // DATABASE is the database storage type. + DATABASE = 1; + // LOCAL is the local storage type. + LOCAL = 2; + // S3 is the S3 storage type. + S3 = 3; + } + // storage_type is the storage type. + StorageType storage_type = 1; + // The template of file path. + // e.g. assets/{timestamp}_{filename} + string filepath_template = 2; + // The max upload size in megabytes. + int64 upload_size_limit_mb = 3; + + // S3 configuration for cloud storage backend. + // Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ + message S3Config { + string access_key_id = 1; + string access_key_secret = 2; + string endpoint = 3; + string region = 4; + string bucket = 5; + bool use_path_style = 6; + } + // The S3 config. + S3Config s3_config = 4; } - // The S3 config. - S3Config s3_config = 4; -} -message WorkspaceMemoRelatedSetting { - // disallow_public_visibility disallows set memo as public visibility. - bool disallow_public_visibility = 1; - // display_with_update_time orders and displays memo with update time. - bool display_with_update_time = 2; - // content_length_limit is the limit of content length. Unit is byte. - int32 content_length_limit = 3; - // enable_double_click_edit enables editing on double click. - bool enable_double_click_edit = 4; - // enable_link_preview enables links preview. - bool enable_link_preview = 5; - // enable_comment enables comment. - bool enable_comment = 6; - // reactions is the list of reactions. - repeated string reactions = 7; - // disable_markdown_shortcuts disallow the registration of markdown shortcuts. - bool disable_markdown_shortcuts = 8; - // enable_blur_nsfw_content enables blurring of content marked as not safe for work (NSFW). - bool enable_blur_nsfw_content = 9; - // nsfw_tags is the list of tags that mark content as NSFW for blurring. - repeated string nsfw_tags = 10; + // Memo-related workspace settings and policies. + message MemoRelatedSetting { + // disallow_public_visibility disallows set memo as public visibility. + bool disallow_public_visibility = 1; + // display_with_update_time orders and displays memo with update time. + bool display_with_update_time = 2; + // content_length_limit is the limit of content length. Unit is byte. + int32 content_length_limit = 3; + // enable_double_click_edit enables editing on double click. + bool enable_double_click_edit = 4; + // enable_link_preview enables links preview. + bool enable_link_preview = 5; + // enable_comment enables comment. + bool enable_comment = 6; + // reactions is the list of reactions. + repeated string reactions = 7; + // disable_markdown_shortcuts disallow the registration of markdown shortcuts. + bool disable_markdown_shortcuts = 8; + // enable_blur_nsfw_content enables blurring of content marked as not safe for work (NSFW). + bool enable_blur_nsfw_content = 9; + // nsfw_tags is the list of tags that mark content as NSFW for blurring. + repeated string nsfw_tags = 10; + } } // Request message for GetWorkspaceSetting method. diff --git a/proto/gen/api/v1/workspace_service.pb.go b/proto/gen/api/v1/workspace_service.pb.go index 55e2a4cf5..2013e8fee 100644 --- a/proto/gen/api/v1/workspace_service.pb.go +++ b/proto/gen/api/v1/workspace_service.pb.go @@ -23,35 +23,32 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Enumeration of workspace setting keys. type WorkspaceSetting_Key int32 const ( WorkspaceSetting_KEY_UNSPECIFIED WorkspaceSetting_Key = 0 - // BASIC is the key for basic settings. - WorkspaceSetting_BASIC WorkspaceSetting_Key = 1 // GENERAL is the key for general settings. - WorkspaceSetting_GENERAL WorkspaceSetting_Key = 2 + WorkspaceSetting_GENERAL WorkspaceSetting_Key = 1 // STORAGE is the key for storage settings. - WorkspaceSetting_STORAGE WorkspaceSetting_Key = 3 + WorkspaceSetting_STORAGE WorkspaceSetting_Key = 2 // MEMO_RELATED is the key for memo related settings. - WorkspaceSetting_MEMO_RELATED WorkspaceSetting_Key = 4 + WorkspaceSetting_MEMO_RELATED WorkspaceSetting_Key = 3 ) // Enum value maps for WorkspaceSetting_Key. var ( WorkspaceSetting_Key_name = map[int32]string{ 0: "KEY_UNSPECIFIED", - 1: "BASIC", - 2: "GENERAL", - 3: "STORAGE", - 4: "MEMO_RELATED", + 1: "GENERAL", + 2: "STORAGE", + 3: "MEMO_RELATED", } WorkspaceSetting_Key_value = map[string]int32{ "KEY_UNSPECIFIED": 0, - "BASIC": 1, - "GENERAL": 2, - "STORAGE": 3, - "MEMO_RELATED": 4, + "GENERAL": 1, + "STORAGE": 2, + "MEMO_RELATED": 3, } ) @@ -82,27 +79,28 @@ func (WorkspaceSetting_Key) EnumDescriptor() ([]byte, []int) { return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 0} } -type WorkspaceStorageSetting_StorageType int32 +// Storage type enumeration for different storage backends. +type WorkspaceSetting_StorageSetting_StorageType int32 const ( - WorkspaceStorageSetting_STORAGE_TYPE_UNSPECIFIED WorkspaceStorageSetting_StorageType = 0 + WorkspaceSetting_StorageSetting_STORAGE_TYPE_UNSPECIFIED WorkspaceSetting_StorageSetting_StorageType = 0 // DATABASE is the database storage type. - WorkspaceStorageSetting_DATABASE WorkspaceStorageSetting_StorageType = 1 + WorkspaceSetting_StorageSetting_DATABASE WorkspaceSetting_StorageSetting_StorageType = 1 // LOCAL is the local storage type. - WorkspaceStorageSetting_LOCAL WorkspaceStorageSetting_StorageType = 2 + WorkspaceSetting_StorageSetting_LOCAL WorkspaceSetting_StorageSetting_StorageType = 2 // S3 is the S3 storage type. - WorkspaceStorageSetting_S3 WorkspaceStorageSetting_StorageType = 3 + WorkspaceSetting_StorageSetting_S3 WorkspaceSetting_StorageSetting_StorageType = 3 ) -// Enum value maps for WorkspaceStorageSetting_StorageType. +// Enum value maps for WorkspaceSetting_StorageSetting_StorageType. var ( - WorkspaceStorageSetting_StorageType_name = map[int32]string{ + WorkspaceSetting_StorageSetting_StorageType_name = map[int32]string{ 0: "STORAGE_TYPE_UNSPECIFIED", 1: "DATABASE", 2: "LOCAL", 3: "S3", } - WorkspaceStorageSetting_StorageType_value = map[string]int32{ + WorkspaceSetting_StorageSetting_StorageType_value = map[string]int32{ "STORAGE_TYPE_UNSPECIFIED": 0, "DATABASE": 1, "LOCAL": 2, @@ -110,31 +108,31 @@ var ( } ) -func (x WorkspaceStorageSetting_StorageType) Enum() *WorkspaceStorageSetting_StorageType { - p := new(WorkspaceStorageSetting_StorageType) +func (x WorkspaceSetting_StorageSetting_StorageType) Enum() *WorkspaceSetting_StorageSetting_StorageType { + p := new(WorkspaceSetting_StorageSetting_StorageType) *p = x return p } -func (x WorkspaceStorageSetting_StorageType) String() string { +func (x WorkspaceSetting_StorageSetting_StorageType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (WorkspaceStorageSetting_StorageType) Descriptor() protoreflect.EnumDescriptor { +func (WorkspaceSetting_StorageSetting_StorageType) Descriptor() protoreflect.EnumDescriptor { return file_api_v1_workspace_service_proto_enumTypes[1].Descriptor() } -func (WorkspaceStorageSetting_StorageType) Type() protoreflect.EnumType { +func (WorkspaceSetting_StorageSetting_StorageType) Type() protoreflect.EnumType { return &file_api_v1_workspace_service_proto_enumTypes[1] } -func (x WorkspaceStorageSetting_StorageType) Number() protoreflect.EnumNumber { +func (x WorkspaceSetting_StorageSetting_StorageType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use WorkspaceStorageSetting_StorageType.Descriptor instead. -func (WorkspaceStorageSetting_StorageType) EnumDescriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{5, 0} +// Deprecated: Use WorkspaceSetting_StorageSetting_StorageType.Descriptor instead. +func (WorkspaceSetting_StorageSetting_StorageType) EnumDescriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 1, 0} } // Workspace profile message containing basic workspace information. @@ -256,9 +254,9 @@ type WorkspaceSetting struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Types that are valid to be assigned to Value: // - // *WorkspaceSetting_GeneralSetting - // *WorkspaceSetting_StorageSetting - // *WorkspaceSetting_MemoRelatedSetting + // *WorkspaceSetting_GeneralSetting_ + // *WorkspaceSetting_StorageSetting_ + // *WorkspaceSetting_MemoRelatedSetting_ Value isWorkspaceSetting_Value `protobuf_oneof:"value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -308,27 +306,27 @@ func (x *WorkspaceSetting) GetValue() isWorkspaceSetting_Value { return nil } -func (x *WorkspaceSetting) GetGeneralSetting() *WorkspaceGeneralSetting { +func (x *WorkspaceSetting) GetGeneralSetting() *WorkspaceSetting_GeneralSetting { if x != nil { - if x, ok := x.Value.(*WorkspaceSetting_GeneralSetting); ok { + if x, ok := x.Value.(*WorkspaceSetting_GeneralSetting_); ok { return x.GeneralSetting } } return nil } -func (x *WorkspaceSetting) GetStorageSetting() *WorkspaceStorageSetting { +func (x *WorkspaceSetting) GetStorageSetting() *WorkspaceSetting_StorageSetting { if x != nil { - if x, ok := x.Value.(*WorkspaceSetting_StorageSetting); ok { + if x, ok := x.Value.(*WorkspaceSetting_StorageSetting_); ok { return x.StorageSetting } } return nil } -func (x *WorkspaceSetting) GetMemoRelatedSetting() *WorkspaceMemoRelatedSetting { +func (x *WorkspaceSetting) GetMemoRelatedSetting() *WorkspaceSetting_MemoRelatedSetting { if x != nil { - if x, ok := x.Value.(*WorkspaceSetting_MemoRelatedSetting); ok { + if x, ok := x.Value.(*WorkspaceSetting_MemoRelatedSetting_); ok { return x.MemoRelatedSetting } } @@ -339,25 +337,128 @@ type isWorkspaceSetting_Value interface { isWorkspaceSetting_Value() } -type WorkspaceSetting_GeneralSetting struct { - GeneralSetting *WorkspaceGeneralSetting `protobuf:"bytes,2,opt,name=general_setting,json=generalSetting,proto3,oneof"` +type WorkspaceSetting_GeneralSetting_ struct { + GeneralSetting *WorkspaceSetting_GeneralSetting `protobuf:"bytes,2,opt,name=general_setting,json=generalSetting,proto3,oneof"` } -type WorkspaceSetting_StorageSetting struct { - StorageSetting *WorkspaceStorageSetting `protobuf:"bytes,3,opt,name=storage_setting,json=storageSetting,proto3,oneof"` +type WorkspaceSetting_StorageSetting_ struct { + StorageSetting *WorkspaceSetting_StorageSetting `protobuf:"bytes,3,opt,name=storage_setting,json=storageSetting,proto3,oneof"` } -type WorkspaceSetting_MemoRelatedSetting struct { - MemoRelatedSetting *WorkspaceMemoRelatedSetting `protobuf:"bytes,4,opt,name=memo_related_setting,json=memoRelatedSetting,proto3,oneof"` +type WorkspaceSetting_MemoRelatedSetting_ struct { + MemoRelatedSetting *WorkspaceSetting_MemoRelatedSetting `protobuf:"bytes,4,opt,name=memo_related_setting,json=memoRelatedSetting,proto3,oneof"` } -func (*WorkspaceSetting_GeneralSetting) isWorkspaceSetting_Value() {} +func (*WorkspaceSetting_GeneralSetting_) isWorkspaceSetting_Value() {} -func (*WorkspaceSetting_StorageSetting) isWorkspaceSetting_Value() {} +func (*WorkspaceSetting_StorageSetting_) isWorkspaceSetting_Value() {} -func (*WorkspaceSetting_MemoRelatedSetting) isWorkspaceSetting_Value() {} +func (*WorkspaceSetting_MemoRelatedSetting_) isWorkspaceSetting_Value() {} -type WorkspaceGeneralSetting struct { +// Request message for GetWorkspaceSetting method. +type GetWorkspaceSettingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The resource name of the workspace setting. + // Format: workspace/settings/{setting} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetWorkspaceSettingRequest) Reset() { + *x = GetWorkspaceSettingRequest{} + mi := &file_api_v1_workspace_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetWorkspaceSettingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetWorkspaceSettingRequest) ProtoMessage() {} + +func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetWorkspaceSettingRequest.ProtoReflect.Descriptor instead. +func (*GetWorkspaceSettingRequest) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{3} +} + +func (x *GetWorkspaceSettingRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request message for UpdateWorkspaceSetting method. +type UpdateWorkspaceSettingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The workspace setting resource which replaces the resource on the server. + Setting *WorkspaceSetting `protobuf:"bytes,1,opt,name=setting,proto3" json:"setting,omitempty"` + // The list of fields to update. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateWorkspaceSettingRequest) Reset() { + *x = UpdateWorkspaceSettingRequest{} + mi := &file_api_v1_workspace_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateWorkspaceSettingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateWorkspaceSettingRequest) ProtoMessage() {} + +func (x *UpdateWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateWorkspaceSettingRequest.ProtoReflect.Descriptor instead. +func (*UpdateWorkspaceSettingRequest) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateWorkspaceSettingRequest) GetSetting() *WorkspaceSetting { + if x != nil { + return x.Setting + } + return nil +} + +func (x *UpdateWorkspaceSettingRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// General workspace settings configuration. +type WorkspaceSetting_GeneralSetting struct { state protoimpl.MessageState `protogen:"open.v1"` // theme is the name of the selected theme. // This references a CSS file in the web/public/themes/ directory. @@ -371,7 +472,7 @@ type WorkspaceGeneralSetting struct { // additional_style is the additional style. AdditionalStyle string `protobuf:"bytes,5,opt,name=additional_style,json=additionalStyle,proto3" json:"additional_style,omitempty"` // custom_profile is the custom profile. - CustomProfile *WorkspaceCustomProfile `protobuf:"bytes,6,opt,name=custom_profile,json=customProfile,proto3" json:"custom_profile,omitempty"` + CustomProfile *WorkspaceSetting_GeneralSetting_CustomProfile `protobuf:"bytes,6,opt,name=custom_profile,json=customProfile,proto3" json:"custom_profile,omitempty"` // week_start_day_offset is the week start day offset from Sunday. // 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday // Default is Sunday. @@ -384,21 +485,21 @@ type WorkspaceGeneralSetting struct { sizeCache protoimpl.SizeCache } -func (x *WorkspaceGeneralSetting) Reset() { - *x = WorkspaceGeneralSetting{} - mi := &file_api_v1_workspace_service_proto_msgTypes[3] +func (x *WorkspaceSetting_GeneralSetting) Reset() { + *x = WorkspaceSetting_GeneralSetting{} + mi := &file_api_v1_workspace_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *WorkspaceGeneralSetting) String() string { +func (x *WorkspaceSetting_GeneralSetting) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkspaceGeneralSetting) ProtoMessage() {} +func (*WorkspaceSetting_GeneralSetting) ProtoMessage() {} -func (x *WorkspaceGeneralSetting) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[3] +func (x *WorkspaceSetting_GeneralSetting) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -409,180 +510,105 @@ func (x *WorkspaceGeneralSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkspaceGeneralSetting.ProtoReflect.Descriptor instead. -func (*WorkspaceGeneralSetting) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{3} +// Deprecated: Use WorkspaceSetting_GeneralSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceSetting_GeneralSetting) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 0} } -func (x *WorkspaceGeneralSetting) GetTheme() string { +func (x *WorkspaceSetting_GeneralSetting) GetTheme() string { if x != nil { return x.Theme } return "" } -func (x *WorkspaceGeneralSetting) GetDisallowUserRegistration() bool { +func (x *WorkspaceSetting_GeneralSetting) GetDisallowUserRegistration() bool { if x != nil { return x.DisallowUserRegistration } return false } -func (x *WorkspaceGeneralSetting) GetDisallowPasswordAuth() bool { +func (x *WorkspaceSetting_GeneralSetting) GetDisallowPasswordAuth() bool { if x != nil { return x.DisallowPasswordAuth } return false } -func (x *WorkspaceGeneralSetting) GetAdditionalScript() string { +func (x *WorkspaceSetting_GeneralSetting) GetAdditionalScript() string { if x != nil { return x.AdditionalScript } return "" } -func (x *WorkspaceGeneralSetting) GetAdditionalStyle() string { +func (x *WorkspaceSetting_GeneralSetting) GetAdditionalStyle() string { if x != nil { return x.AdditionalStyle } return "" } -func (x *WorkspaceGeneralSetting) GetCustomProfile() *WorkspaceCustomProfile { +func (x *WorkspaceSetting_GeneralSetting) GetCustomProfile() *WorkspaceSetting_GeneralSetting_CustomProfile { if x != nil { return x.CustomProfile } return nil } -func (x *WorkspaceGeneralSetting) GetWeekStartDayOffset() int32 { +func (x *WorkspaceSetting_GeneralSetting) GetWeekStartDayOffset() int32 { if x != nil { return x.WeekStartDayOffset } return 0 } -func (x *WorkspaceGeneralSetting) GetDisallowChangeUsername() bool { +func (x *WorkspaceSetting_GeneralSetting) GetDisallowChangeUsername() bool { if x != nil { return x.DisallowChangeUsername } return false } -func (x *WorkspaceGeneralSetting) GetDisallowChangeNickname() bool { +func (x *WorkspaceSetting_GeneralSetting) GetDisallowChangeNickname() bool { if x != nil { return x.DisallowChangeNickname } return false } -type WorkspaceCustomProfile struct { - state protoimpl.MessageState `protogen:"open.v1"` - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - LogoUrl string `protobuf:"bytes,3,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty"` - Locale string `protobuf:"bytes,4,opt,name=locale,proto3" json:"locale,omitempty"` - Appearance string `protobuf:"bytes,5,opt,name=appearance,proto3" json:"appearance,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *WorkspaceCustomProfile) Reset() { - *x = WorkspaceCustomProfile{} - mi := &file_api_v1_workspace_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *WorkspaceCustomProfile) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorkspaceCustomProfile) ProtoMessage() {} - -func (x *WorkspaceCustomProfile) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WorkspaceCustomProfile.ProtoReflect.Descriptor instead. -func (*WorkspaceCustomProfile) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{4} -} - -func (x *WorkspaceCustomProfile) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *WorkspaceCustomProfile) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *WorkspaceCustomProfile) GetLogoUrl() string { - if x != nil { - return x.LogoUrl - } - return "" -} - -func (x *WorkspaceCustomProfile) GetLocale() string { - if x != nil { - return x.Locale - } - return "" -} - -func (x *WorkspaceCustomProfile) GetAppearance() string { - if x != nil { - return x.Appearance - } - return "" -} - -type WorkspaceStorageSetting struct { +// Storage configuration settings for workspace attachments. +type WorkspaceSetting_StorageSetting struct { state protoimpl.MessageState `protogen:"open.v1"` // storage_type is the storage type. - StorageType WorkspaceStorageSetting_StorageType `protobuf:"varint,1,opt,name=storage_type,json=storageType,proto3,enum=memos.api.v1.WorkspaceStorageSetting_StorageType" json:"storage_type,omitempty"` + StorageType WorkspaceSetting_StorageSetting_StorageType `protobuf:"varint,1,opt,name=storage_type,json=storageType,proto3,enum=memos.api.v1.WorkspaceSetting_StorageSetting_StorageType" json:"storage_type,omitempty"` // The template of file path. // e.g. assets/{timestamp}_{filename} FilepathTemplate string `protobuf:"bytes,2,opt,name=filepath_template,json=filepathTemplate,proto3" json:"filepath_template,omitempty"` // The max upload size in megabytes. UploadSizeLimitMb int64 `protobuf:"varint,3,opt,name=upload_size_limit_mb,json=uploadSizeLimitMb,proto3" json:"upload_size_limit_mb,omitempty"` // The S3 config. - S3Config *WorkspaceStorageSetting_S3Config `protobuf:"bytes,4,opt,name=s3_config,json=s3Config,proto3" json:"s3_config,omitempty"` + S3Config *WorkspaceSetting_StorageSetting_S3Config `protobuf:"bytes,4,opt,name=s3_config,json=s3Config,proto3" json:"s3_config,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *WorkspaceStorageSetting) Reset() { - *x = WorkspaceStorageSetting{} - mi := &file_api_v1_workspace_service_proto_msgTypes[5] +func (x *WorkspaceSetting_StorageSetting) Reset() { + *x = WorkspaceSetting_StorageSetting{} + mi := &file_api_v1_workspace_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *WorkspaceStorageSetting) String() string { +func (x *WorkspaceSetting_StorageSetting) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkspaceStorageSetting) ProtoMessage() {} +func (*WorkspaceSetting_StorageSetting) ProtoMessage() {} -func (x *WorkspaceStorageSetting) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[5] +func (x *WorkspaceSetting_StorageSetting) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -593,40 +619,41 @@ func (x *WorkspaceStorageSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkspaceStorageSetting.ProtoReflect.Descriptor instead. -func (*WorkspaceStorageSetting) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{5} +// Deprecated: Use WorkspaceSetting_StorageSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceSetting_StorageSetting) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 1} } -func (x *WorkspaceStorageSetting) GetStorageType() WorkspaceStorageSetting_StorageType { +func (x *WorkspaceSetting_StorageSetting) GetStorageType() WorkspaceSetting_StorageSetting_StorageType { if x != nil { return x.StorageType } - return WorkspaceStorageSetting_STORAGE_TYPE_UNSPECIFIED + return WorkspaceSetting_StorageSetting_STORAGE_TYPE_UNSPECIFIED } -func (x *WorkspaceStorageSetting) GetFilepathTemplate() string { +func (x *WorkspaceSetting_StorageSetting) GetFilepathTemplate() string { if x != nil { return x.FilepathTemplate } return "" } -func (x *WorkspaceStorageSetting) GetUploadSizeLimitMb() int64 { +func (x *WorkspaceSetting_StorageSetting) GetUploadSizeLimitMb() int64 { if x != nil { return x.UploadSizeLimitMb } return 0 } -func (x *WorkspaceStorageSetting) GetS3Config() *WorkspaceStorageSetting_S3Config { +func (x *WorkspaceSetting_StorageSetting) GetS3Config() *WorkspaceSetting_StorageSetting_S3Config { if x != nil { return x.S3Config } return nil } -type WorkspaceMemoRelatedSetting struct { +// Memo-related workspace settings and policies. +type WorkspaceSetting_MemoRelatedSetting struct { state protoimpl.MessageState `protogen:"open.v1"` // disallow_public_visibility disallows set memo as public visibility. DisallowPublicVisibility bool `protobuf:"varint,1,opt,name=disallow_public_visibility,json=disallowPublicVisibility,proto3" json:"disallow_public_visibility,omitempty"` @@ -652,21 +679,21 @@ type WorkspaceMemoRelatedSetting struct { sizeCache protoimpl.SizeCache } -func (x *WorkspaceMemoRelatedSetting) Reset() { - *x = WorkspaceMemoRelatedSetting{} - mi := &file_api_v1_workspace_service_proto_msgTypes[6] +func (x *WorkspaceSetting_MemoRelatedSetting) Reset() { + *x = WorkspaceSetting_MemoRelatedSetting{} + mi := &file_api_v1_workspace_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *WorkspaceMemoRelatedSetting) String() string { +func (x *WorkspaceSetting_MemoRelatedSetting) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkspaceMemoRelatedSetting) ProtoMessage() {} +func (*WorkspaceSetting_MemoRelatedSetting) ProtoMessage() {} -func (x *WorkspaceMemoRelatedSetting) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[6] +func (x *WorkspaceSetting_MemoRelatedSetting) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -677,106 +704,108 @@ func (x *WorkspaceMemoRelatedSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkspaceMemoRelatedSetting.ProtoReflect.Descriptor instead. -func (*WorkspaceMemoRelatedSetting) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{6} +// Deprecated: Use WorkspaceSetting_MemoRelatedSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceSetting_MemoRelatedSetting) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 2} } -func (x *WorkspaceMemoRelatedSetting) GetDisallowPublicVisibility() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetDisallowPublicVisibility() bool { if x != nil { return x.DisallowPublicVisibility } return false } -func (x *WorkspaceMemoRelatedSetting) GetDisplayWithUpdateTime() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetDisplayWithUpdateTime() bool { if x != nil { return x.DisplayWithUpdateTime } return false } -func (x *WorkspaceMemoRelatedSetting) GetContentLengthLimit() int32 { +func (x *WorkspaceSetting_MemoRelatedSetting) GetContentLengthLimit() int32 { if x != nil { return x.ContentLengthLimit } return 0 } -func (x *WorkspaceMemoRelatedSetting) GetEnableDoubleClickEdit() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetEnableDoubleClickEdit() bool { if x != nil { return x.EnableDoubleClickEdit } return false } -func (x *WorkspaceMemoRelatedSetting) GetEnableLinkPreview() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetEnableLinkPreview() bool { if x != nil { return x.EnableLinkPreview } return false } -func (x *WorkspaceMemoRelatedSetting) GetEnableComment() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetEnableComment() bool { if x != nil { return x.EnableComment } return false } -func (x *WorkspaceMemoRelatedSetting) GetReactions() []string { +func (x *WorkspaceSetting_MemoRelatedSetting) GetReactions() []string { if x != nil { return x.Reactions } return nil } -func (x *WorkspaceMemoRelatedSetting) GetDisableMarkdownShortcuts() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetDisableMarkdownShortcuts() bool { if x != nil { return x.DisableMarkdownShortcuts } return false } -func (x *WorkspaceMemoRelatedSetting) GetEnableBlurNsfwContent() bool { +func (x *WorkspaceSetting_MemoRelatedSetting) GetEnableBlurNsfwContent() bool { if x != nil { return x.EnableBlurNsfwContent } return false } -func (x *WorkspaceMemoRelatedSetting) GetNsfwTags() []string { +func (x *WorkspaceSetting_MemoRelatedSetting) GetNsfwTags() []string { if x != nil { return x.NsfwTags } return nil } -// Request message for GetWorkspaceSetting method. -type GetWorkspaceSettingRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The resource name of the workspace setting. - // Format: workspace/settings/{setting} - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +// Custom profile configuration for workspace branding. +type WorkspaceSetting_GeneralSetting_CustomProfile struct { + state protoimpl.MessageState `protogen:"open.v1"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + LogoUrl string `protobuf:"bytes,3,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty"` + Locale string `protobuf:"bytes,4,opt,name=locale,proto3" json:"locale,omitempty"` + Appearance string `protobuf:"bytes,5,opt,name=appearance,proto3" json:"appearance,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetWorkspaceSettingRequest) Reset() { - *x = GetWorkspaceSettingRequest{} - mi := &file_api_v1_workspace_service_proto_msgTypes[7] +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) Reset() { + *x = WorkspaceSetting_GeneralSetting_CustomProfile{} + mi := &file_api_v1_workspace_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetWorkspaceSettingRequest) String() string { +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWorkspaceSettingRequest) ProtoMessage() {} +func (*WorkspaceSetting_GeneralSetting_CustomProfile) ProtoMessage() {} -func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[7] +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) ProtoReflect() protoreflect.Message { + mi := &file_api_v1_workspace_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -787,75 +816,49 @@ func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWorkspaceSettingRequest.ProtoReflect.Descriptor instead. -func (*GetWorkspaceSettingRequest) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{7} +// Deprecated: Use WorkspaceSetting_GeneralSetting_CustomProfile.ProtoReflect.Descriptor instead. +func (*WorkspaceSetting_GeneralSetting_CustomProfile) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 0, 0} } -func (x *GetWorkspaceSettingRequest) GetName() string { +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) GetTitle() string { if x != nil { - return x.Name + return x.Title } return "" } -// Request message for UpdateWorkspaceSetting method. -type UpdateWorkspaceSettingRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The workspace setting resource which replaces the resource on the server. - Setting *WorkspaceSetting `protobuf:"bytes,1,opt,name=setting,proto3" json:"setting,omitempty"` - // The list of fields to update. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateWorkspaceSettingRequest) Reset() { - *x = UpdateWorkspaceSettingRequest{} - mi := &file_api_v1_workspace_service_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateWorkspaceSettingRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateWorkspaceSettingRequest) ProtoMessage() {} - -func (x *UpdateWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_v1_workspace_service_proto_msgTypes[8] +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) GetDescription() string { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.Description } - return mi.MessageOf(x) + return "" } -// Deprecated: Use UpdateWorkspaceSettingRequest.ProtoReflect.Descriptor instead. -func (*UpdateWorkspaceSettingRequest) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{8} +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) GetLogoUrl() string { + if x != nil { + return x.LogoUrl + } + return "" } -func (x *UpdateWorkspaceSettingRequest) GetSetting() *WorkspaceSetting { +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) GetLocale() string { if x != nil { - return x.Setting + return x.Locale } - return nil + return "" } -func (x *UpdateWorkspaceSettingRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *WorkspaceSetting_GeneralSetting_CustomProfile) GetAppearance() string { if x != nil { - return x.UpdateMask + return x.Appearance } - return nil + return "" } +// S3 configuration for cloud storage backend. // Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ -type WorkspaceStorageSetting_S3Config struct { +type WorkspaceSetting_StorageSetting_S3Config struct { state protoimpl.MessageState `protogen:"open.v1"` AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` AccessKeySecret string `protobuf:"bytes,2,opt,name=access_key_secret,json=accessKeySecret,proto3" json:"access_key_secret,omitempty"` @@ -867,20 +870,20 @@ type WorkspaceStorageSetting_S3Config struct { sizeCache protoimpl.SizeCache } -func (x *WorkspaceStorageSetting_S3Config) Reset() { - *x = WorkspaceStorageSetting_S3Config{} +func (x *WorkspaceSetting_StorageSetting_S3Config) Reset() { + *x = WorkspaceSetting_StorageSetting_S3Config{} mi := &file_api_v1_workspace_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *WorkspaceStorageSetting_S3Config) String() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkspaceStorageSetting_S3Config) ProtoMessage() {} +func (*WorkspaceSetting_StorageSetting_S3Config) ProtoMessage() {} -func (x *WorkspaceStorageSetting_S3Config) ProtoReflect() protoreflect.Message { +func (x *WorkspaceSetting_StorageSetting_S3Config) ProtoReflect() protoreflect.Message { mi := &file_api_v1_workspace_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -892,47 +895,47 @@ func (x *WorkspaceStorageSetting_S3Config) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkspaceStorageSetting_S3Config.ProtoReflect.Descriptor instead. -func (*WorkspaceStorageSetting_S3Config) Descriptor() ([]byte, []int) { - return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{5, 0} +// Deprecated: Use WorkspaceSetting_StorageSetting_S3Config.ProtoReflect.Descriptor instead. +func (*WorkspaceSetting_StorageSetting_S3Config) Descriptor() ([]byte, []int) { + return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{2, 1, 0} } -func (x *WorkspaceStorageSetting_S3Config) GetAccessKeyId() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetAccessKeyId() string { if x != nil { return x.AccessKeyId } return "" } -func (x *WorkspaceStorageSetting_S3Config) GetAccessKeySecret() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetAccessKeySecret() string { if x != nil { return x.AccessKeySecret } return "" } -func (x *WorkspaceStorageSetting_S3Config) GetEndpoint() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetEndpoint() string { if x != nil { return x.Endpoint } return "" } -func (x *WorkspaceStorageSetting_S3Config) GetRegion() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetRegion() string { if x != nil { return x.Region } return "" } -func (x *WorkspaceStorageSetting_S3Config) GetBucket() string { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetBucket() string { if x != nil { return x.Bucket } return "" } -func (x *WorkspaceStorageSetting_S3Config) GetUsePathStyle() bool { +func (x *WorkspaceSetting_StorageSetting_S3Config) GetUsePathStyle() bool { if x != nil { return x.UsePathStyle } @@ -949,43 +952,35 @@ const file_api_v1_workspace_service_proto_rawDesc = "" + "\aversion\x18\x02 \x01(\tR\aversion\x12\x12\n" + "\x04mode\x18\x03 \x01(\tR\x04mode\x12!\n" + "\finstance_url\x18\x06 \x01(\tR\vinstanceUrl\"\x1c\n" + - "\x1aGetWorkspaceProfileRequest\"\xf2\x03\n" + + "\x1aGetWorkspaceProfileRequest\"\xdf\x11\n" + "\x10WorkspaceSetting\x12\x17\n" + - "\x04name\x18\x01 \x01(\tB\x03\xe0A\bR\x04name\x12P\n" + - "\x0fgeneral_setting\x18\x02 \x01(\v2%.memos.api.v1.WorkspaceGeneralSettingH\x00R\x0egeneralSetting\x12P\n" + - "\x0fstorage_setting\x18\x03 \x01(\v2%.memos.api.v1.WorkspaceStorageSettingH\x00R\x0estorageSetting\x12]\n" + - "\x14memo_related_setting\x18\x04 \x01(\v2).memos.api.v1.WorkspaceMemoRelatedSettingH\x00R\x12memoRelatedSetting\"Q\n" + - "\x03Key\x12\x13\n" + - "\x0fKEY_UNSPECIFIED\x10\x00\x12\t\n" + - "\x05BASIC\x10\x01\x12\v\n" + - "\aGENERAL\x10\x02\x12\v\n" + - "\aSTORAGE\x10\x03\x12\x10\n" + - "\fMEMO_RELATED\x10\x04:f\xeaAc\n" + - "\x1eapi.memos.dev/WorkspaceSetting\x12\x1cworkspace/settings/{setting}*\x11workspaceSettings2\x10workspaceSettingB\a\n" + - "\x05value\"\xef\x03\n" + - "\x17WorkspaceGeneralSetting\x12\x14\n" + + "\x04name\x18\x01 \x01(\tB\x03\xe0A\bR\x04name\x12X\n" + + "\x0fgeneral_setting\x18\x02 \x01(\v2-.memos.api.v1.WorkspaceSetting.GeneralSettingH\x00R\x0egeneralSetting\x12X\n" + + "\x0fstorage_setting\x18\x03 \x01(\v2-.memos.api.v1.WorkspaceSetting.StorageSettingH\x00R\x0estorageSetting\x12e\n" + + "\x14memo_related_setting\x18\x04 \x01(\v21.memos.api.v1.WorkspaceSetting.MemoRelatedSettingH\x00R\x12memoRelatedSetting\x1a\x9a\x05\n" + + "\x0eGeneralSetting\x12\x14\n" + "\x05theme\x18\x01 \x01(\tR\x05theme\x12<\n" + "\x1adisallow_user_registration\x18\x02 \x01(\bR\x18disallowUserRegistration\x124\n" + "\x16disallow_password_auth\x18\x03 \x01(\bR\x14disallowPasswordAuth\x12+\n" + "\x11additional_script\x18\x04 \x01(\tR\x10additionalScript\x12)\n" + - "\x10additional_style\x18\x05 \x01(\tR\x0fadditionalStyle\x12K\n" + - "\x0ecustom_profile\x18\x06 \x01(\v2$.memos.api.v1.WorkspaceCustomProfileR\rcustomProfile\x121\n" + + "\x10additional_style\x18\x05 \x01(\tR\x0fadditionalStyle\x12b\n" + + "\x0ecustom_profile\x18\x06 \x01(\v2;.memos.api.v1.WorkspaceSetting.GeneralSetting.CustomProfileR\rcustomProfile\x121\n" + "\x15week_start_day_offset\x18\a \x01(\x05R\x12weekStartDayOffset\x128\n" + "\x18disallow_change_username\x18\b \x01(\bR\x16disallowChangeUsername\x128\n" + - "\x18disallow_change_nickname\x18\t \x01(\bR\x16disallowChangeNickname\"\xa3\x01\n" + - "\x16WorkspaceCustomProfile\x12\x14\n" + + "\x18disallow_change_nickname\x18\t \x01(\bR\x16disallowChangeNickname\x1a\x9a\x01\n" + + "\rCustomProfile\x12\x14\n" + "\x05title\x18\x01 \x01(\tR\x05title\x12 \n" + "\vdescription\x18\x02 \x01(\tR\vdescription\x12\x19\n" + "\blogo_url\x18\x03 \x01(\tR\alogoUrl\x12\x16\n" + "\x06locale\x18\x04 \x01(\tR\x06locale\x12\x1e\n" + "\n" + "appearance\x18\x05 \x01(\tR\n" + - "appearance\"\xb7\x04\n" + - "\x17WorkspaceStorageSetting\x12T\n" + - "\fstorage_type\x18\x01 \x01(\x0e21.memos.api.v1.WorkspaceStorageSetting.StorageTypeR\vstorageType\x12+\n" + + "appearance\x1a\xbe\x04\n" + + "\x0eStorageSetting\x12\\\n" + + "\fstorage_type\x18\x01 \x01(\x0e29.memos.api.v1.WorkspaceSetting.StorageSetting.StorageTypeR\vstorageType\x12+\n" + "\x11filepath_template\x18\x02 \x01(\tR\x10filepathTemplate\x12/\n" + - "\x14upload_size_limit_mb\x18\x03 \x01(\x03R\x11uploadSizeLimitMb\x12K\n" + - "\ts3_config\x18\x04 \x01(\v2..memos.api.v1.WorkspaceStorageSetting.S3ConfigR\bs3Config\x1a\xcc\x01\n" + + "\x14upload_size_limit_mb\x18\x03 \x01(\x03R\x11uploadSizeLimitMb\x12S\n" + + "\ts3_config\x18\x04 \x01(\v26.memos.api.v1.WorkspaceSetting.StorageSetting.S3ConfigR\bs3Config\x1a\xcc\x01\n" + "\bS3Config\x12\"\n" + "\raccess_key_id\x18\x01 \x01(\tR\vaccessKeyId\x12*\n" + "\x11access_key_secret\x18\x02 \x01(\tR\x0faccessKeySecret\x12\x1a\n" + @@ -997,8 +992,8 @@ const file_api_v1_workspace_service_proto_rawDesc = "" + "\x18STORAGE_TYPE_UNSPECIFIED\x10\x00\x12\f\n" + "\bDATABASE\x10\x01\x12\t\n" + "\x05LOCAL\x10\x02\x12\x06\n" + - "\x02S3\x10\x03\"\x88\x04\n" + - "\x1bWorkspaceMemoRelatedSetting\x12<\n" + + "\x02S3\x10\x03\x1a\xff\x03\n" + + "\x12MemoRelatedSetting\x12<\n" + "\x1adisallow_public_visibility\x18\x01 \x01(\bR\x18disallowPublicVisibility\x127\n" + "\x18display_with_update_time\x18\x02 \x01(\bR\x15displayWithUpdateTime\x120\n" + "\x14content_length_limit\x18\x03 \x01(\x05R\x12contentLengthLimit\x127\n" + @@ -1009,7 +1004,14 @@ const file_api_v1_workspace_service_proto_rawDesc = "" + "\x1adisable_markdown_shortcuts\x18\b \x01(\bR\x18disableMarkdownShortcuts\x127\n" + "\x18enable_blur_nsfw_content\x18\t \x01(\bR\x15enableBlurNsfwContent\x12\x1b\n" + "\tnsfw_tags\x18\n" + - " \x03(\tR\bnsfwTags\"X\n" + + " \x03(\tR\bnsfwTags\"F\n" + + "\x03Key\x12\x13\n" + + "\x0fKEY_UNSPECIFIED\x10\x00\x12\v\n" + + "\aGENERAL\x10\x01\x12\v\n" + + "\aSTORAGE\x10\x02\x12\x10\n" + + "\fMEMO_RELATED\x10\x03:f\xeaAc\n" + + "\x1eapi.memos.dev/WorkspaceSetting\x12\x1cworkspace/settings/{setting}*\x11workspaceSettings2\x10workspaceSettingB\a\n" + + "\x05value\"X\n" + "\x1aGetWorkspaceSettingRequest\x12:\n" + "\x04name\x18\x01 \x01(\tB&\xe0A\x02\xfaA \n" + "\x1eapi.memos.dev/WorkspaceSettingR\x04name\"\xa0\x01\n" + @@ -1038,32 +1040,32 @@ func file_api_v1_workspace_service_proto_rawDescGZIP() []byte { var file_api_v1_workspace_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_api_v1_workspace_service_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_api_v1_workspace_service_proto_goTypes = []any{ - (WorkspaceSetting_Key)(0), // 0: memos.api.v1.WorkspaceSetting.Key - (WorkspaceStorageSetting_StorageType)(0), // 1: memos.api.v1.WorkspaceStorageSetting.StorageType - (*WorkspaceProfile)(nil), // 2: memos.api.v1.WorkspaceProfile - (*GetWorkspaceProfileRequest)(nil), // 3: memos.api.v1.GetWorkspaceProfileRequest - (*WorkspaceSetting)(nil), // 4: memos.api.v1.WorkspaceSetting - (*WorkspaceGeneralSetting)(nil), // 5: memos.api.v1.WorkspaceGeneralSetting - (*WorkspaceCustomProfile)(nil), // 6: memos.api.v1.WorkspaceCustomProfile - (*WorkspaceStorageSetting)(nil), // 7: memos.api.v1.WorkspaceStorageSetting - (*WorkspaceMemoRelatedSetting)(nil), // 8: memos.api.v1.WorkspaceMemoRelatedSetting - (*GetWorkspaceSettingRequest)(nil), // 9: memos.api.v1.GetWorkspaceSettingRequest - (*UpdateWorkspaceSettingRequest)(nil), // 10: memos.api.v1.UpdateWorkspaceSettingRequest - (*WorkspaceStorageSetting_S3Config)(nil), // 11: memos.api.v1.WorkspaceStorageSetting.S3Config - (*fieldmaskpb.FieldMask)(nil), // 12: google.protobuf.FieldMask + (WorkspaceSetting_Key)(0), // 0: memos.api.v1.WorkspaceSetting.Key + (WorkspaceSetting_StorageSetting_StorageType)(0), // 1: memos.api.v1.WorkspaceSetting.StorageSetting.StorageType + (*WorkspaceProfile)(nil), // 2: memos.api.v1.WorkspaceProfile + (*GetWorkspaceProfileRequest)(nil), // 3: memos.api.v1.GetWorkspaceProfileRequest + (*WorkspaceSetting)(nil), // 4: memos.api.v1.WorkspaceSetting + (*GetWorkspaceSettingRequest)(nil), // 5: memos.api.v1.GetWorkspaceSettingRequest + (*UpdateWorkspaceSettingRequest)(nil), // 6: memos.api.v1.UpdateWorkspaceSettingRequest + (*WorkspaceSetting_GeneralSetting)(nil), // 7: memos.api.v1.WorkspaceSetting.GeneralSetting + (*WorkspaceSetting_StorageSetting)(nil), // 8: memos.api.v1.WorkspaceSetting.StorageSetting + (*WorkspaceSetting_MemoRelatedSetting)(nil), // 9: memos.api.v1.WorkspaceSetting.MemoRelatedSetting + (*WorkspaceSetting_GeneralSetting_CustomProfile)(nil), // 10: memos.api.v1.WorkspaceSetting.GeneralSetting.CustomProfile + (*WorkspaceSetting_StorageSetting_S3Config)(nil), // 11: memos.api.v1.WorkspaceSetting.StorageSetting.S3Config + (*fieldmaskpb.FieldMask)(nil), // 12: google.protobuf.FieldMask } var file_api_v1_workspace_service_proto_depIdxs = []int32{ - 5, // 0: memos.api.v1.WorkspaceSetting.general_setting:type_name -> memos.api.v1.WorkspaceGeneralSetting - 7, // 1: memos.api.v1.WorkspaceSetting.storage_setting:type_name -> memos.api.v1.WorkspaceStorageSetting - 8, // 2: memos.api.v1.WorkspaceSetting.memo_related_setting:type_name -> memos.api.v1.WorkspaceMemoRelatedSetting - 6, // 3: memos.api.v1.WorkspaceGeneralSetting.custom_profile:type_name -> memos.api.v1.WorkspaceCustomProfile - 1, // 4: memos.api.v1.WorkspaceStorageSetting.storage_type:type_name -> memos.api.v1.WorkspaceStorageSetting.StorageType - 11, // 5: memos.api.v1.WorkspaceStorageSetting.s3_config:type_name -> memos.api.v1.WorkspaceStorageSetting.S3Config - 4, // 6: memos.api.v1.UpdateWorkspaceSettingRequest.setting:type_name -> memos.api.v1.WorkspaceSetting - 12, // 7: memos.api.v1.UpdateWorkspaceSettingRequest.update_mask:type_name -> google.protobuf.FieldMask + 7, // 0: memos.api.v1.WorkspaceSetting.general_setting:type_name -> memos.api.v1.WorkspaceSetting.GeneralSetting + 8, // 1: memos.api.v1.WorkspaceSetting.storage_setting:type_name -> memos.api.v1.WorkspaceSetting.StorageSetting + 9, // 2: memos.api.v1.WorkspaceSetting.memo_related_setting:type_name -> memos.api.v1.WorkspaceSetting.MemoRelatedSetting + 4, // 3: memos.api.v1.UpdateWorkspaceSettingRequest.setting:type_name -> memos.api.v1.WorkspaceSetting + 12, // 4: memos.api.v1.UpdateWorkspaceSettingRequest.update_mask:type_name -> google.protobuf.FieldMask + 10, // 5: memos.api.v1.WorkspaceSetting.GeneralSetting.custom_profile:type_name -> memos.api.v1.WorkspaceSetting.GeneralSetting.CustomProfile + 1, // 6: memos.api.v1.WorkspaceSetting.StorageSetting.storage_type:type_name -> memos.api.v1.WorkspaceSetting.StorageSetting.StorageType + 11, // 7: memos.api.v1.WorkspaceSetting.StorageSetting.s3_config:type_name -> memos.api.v1.WorkspaceSetting.StorageSetting.S3Config 3, // 8: memos.api.v1.WorkspaceService.GetWorkspaceProfile:input_type -> memos.api.v1.GetWorkspaceProfileRequest - 9, // 9: memos.api.v1.WorkspaceService.GetWorkspaceSetting:input_type -> memos.api.v1.GetWorkspaceSettingRequest - 10, // 10: memos.api.v1.WorkspaceService.UpdateWorkspaceSetting:input_type -> memos.api.v1.UpdateWorkspaceSettingRequest + 5, // 9: memos.api.v1.WorkspaceService.GetWorkspaceSetting:input_type -> memos.api.v1.GetWorkspaceSettingRequest + 6, // 10: memos.api.v1.WorkspaceService.UpdateWorkspaceSetting:input_type -> memos.api.v1.UpdateWorkspaceSettingRequest 2, // 11: memos.api.v1.WorkspaceService.GetWorkspaceProfile:output_type -> memos.api.v1.WorkspaceProfile 4, // 12: memos.api.v1.WorkspaceService.GetWorkspaceSetting:output_type -> memos.api.v1.WorkspaceSetting 4, // 13: memos.api.v1.WorkspaceService.UpdateWorkspaceSetting:output_type -> memos.api.v1.WorkspaceSetting @@ -1080,9 +1082,9 @@ func file_api_v1_workspace_service_proto_init() { return } file_api_v1_workspace_service_proto_msgTypes[2].OneofWrappers = []any{ - (*WorkspaceSetting_GeneralSetting)(nil), - (*WorkspaceSetting_StorageSetting)(nil), - (*WorkspaceSetting_MemoRelatedSetting)(nil), + (*WorkspaceSetting_GeneralSetting_)(nil), + (*WorkspaceSetting_StorageSetting_)(nil), + (*WorkspaceSetting_MemoRelatedSetting_)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/proto/gen/openapi.yaml b/proto/gen/openapi.yaml index 58113f888..6e521a0aa 100644 --- a/proto/gen/openapi.yaml +++ b/proto/gen/openapi.yaml @@ -624,18 +624,26 @@ paths: parameters: - name: pageSize in: query - description: "Optional. The maximum number of memos to return.\r\n The service may return fewer than this value.\r\n If unspecified, at most 50 memos will be returned.\r\n The maximum value is 1000; values above 1000 will be coerced to 1000." + description: |- + Optional. The maximum number of memos to return. + The service may return fewer than this value. + If unspecified, at most 50 memos will be returned. + The maximum value is 1000; values above 1000 will be coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query - description: "Optional. A page token, received from a previous `ListMemos` call.\r\n Provide this to retrieve the subsequent page." + description: |- + Optional. A page token, received from a previous `ListMemos` call. + Provide this to retrieve the subsequent page. schema: type: string - name: state in: query - description: "Optional. The state of the memos to list.\r\n Default to `NORMAL`. Set to `ARCHIVED` to list archived memos." + description: |- + Optional. The state of the memos to list. + Default to `NORMAL`. Set to `ARCHIVED` to list archived memos. schema: enum: - STATE_UNSPECIFIED @@ -645,12 +653,18 @@ paths: format: enum - name: orderBy in: query - description: "Optional. The order to sort results by.\r\n Default to \"display_time desc\".\r\n Example: \"display_time desc\" or \"create_time asc\"" + description: |- + Optional. The order to sort results by. + Default to "display_time desc". + Example: "display_time desc" or "create_time asc" schema: type: string - name: filter in: query - description: "Optional. Filter to apply to the list results.\r\n Filter is a CEL expression to filter memos.\r\n Refer to `Shortcut.filter`." + description: |- + Optional. Filter to apply to the list results. + Filter is a CEL expression to filter memos. + Refer to `Shortcut.filter`. schema: type: string - name: showDeleted @@ -679,7 +693,9 @@ paths: parameters: - name: memoId in: query - description: "Optional. The memo ID to use for this memo.\r\n If empty, a unique ID will be generated." + description: |- + Optional. The memo ID to use for this memo. + If empty, a unique ID will be generated. schema: type: string - name: validateOnly @@ -726,7 +742,9 @@ paths: type: string - name: readMask in: query - description: "Optional. The fields to return in the response.\r\n If not specified, all fields are returned." + description: |- + Optional. The fields to return in the response. + If not specified, all fields are returned. schema: type: string format: field-mask @@ -2468,6 +2486,20 @@ components: type: string avatarUrl: type: string + GeneralSetting_CustomProfile: + type: object + properties: + title: + type: string + description: + type: string + logoUrl: + type: string + locale: + type: string + appearance: + type: string + description: Custom profile configuration for workspace branding. GetCurrentSessionResponse: type: object properties: @@ -2777,7 +2809,9 @@ components: description: The list of memos. nextPageToken: type: string - description: "A token that can be sent as `page_token` to retrieve the next page.\r\n If this field is omitted, there are no subsequent pages." + description: |- + A token that can be sent as `page_token` to retrieve the next page. + If this field is omitted, there are no subsequent pages. totalSize: type: integer description: The total count of memos (may be approximate). @@ -2889,7 +2923,9 @@ components: properties: name: type: string - description: "The resource name of the memo.\r\n Format: memos/{memo}, memo is the user defined id or uuid." + description: |- + The resource name of the memo. + Format: memos/{memo}, memo is the user defined id or uuid. state: enum: - STATE_UNSPECIFIED @@ -2901,7 +2937,9 @@ components: creator: readOnly: true type: string - description: "The name of the creator.\r\n Format: users/{user}" + description: |- + The name of the creator. + Format: users/{user} createTime: readOnly: true type: string @@ -2967,7 +3005,9 @@ components: parent: readOnly: true type: string - description: "Output only. The name of the parent memo.\r\n Format: memos/{memo}" + description: |- + Output only. The name of the parent memo. + Format: memos/{memo} snippet: readOnly: true type: string @@ -3005,7 +3045,9 @@ components: properties: name: type: string - description: "The resource name of the memo.\r\n Format: memos/{memo}" + description: |- + The resource name of the memo. + Format: memos/{memo} snippet: readOnly: true type: string @@ -3191,14 +3233,21 @@ components: name: readOnly: true type: string - description: "The resource name of the reaction.\r\n Format: reactions/{reaction}" + description: |- + The resource name of the reaction. + Format: reactions/{reaction} creator: readOnly: true type: string - description: "The resource name of the creator.\r\n Format: users/{user}" + description: |- + The resource name of the creator. + Format: users/{user} contentId: type: string - description: "The resource name of the content.\r\n For memo reactions, this should be the memo's resource name.\r\n Format: memos/{memo}" + description: |- + The resource name of the content. + For memo reactions, this should be the memo's resource name. + Format: memos/{memo} reactionType: type: string description: "Required. The type of reaction (e.g., \"\U0001F44D\", \"❤️\", \"\U0001F604\")." @@ -3225,7 +3274,9 @@ components: properties: parent: type: string - description: "Required. The parent, who owns the tags.\r\n Format: memos/{memo}. Use \"memos/-\" to rename all tags." + description: |- + Required. The parent, who owns the tags. + Format: memos/{memo}. Use "memos/-" to rename all tags. oldTag: type: string description: Required. The old tag name to rename. @@ -3271,7 +3322,9 @@ components: properties: name: type: string - description: "Required. The resource name of the memo.\r\n Format: memos/{memo}" + description: |- + Required. The resource name of the memo. + Format: memos/{memo} attachments: type: array items: @@ -3285,7 +3338,9 @@ components: properties: name: type: string - description: "Required. The resource name of the memo.\r\n Format: memos/{memo}" + description: |- + Required. The resource name of the memo. + Format: memos/{memo} relations: type: array items: @@ -3328,6 +3383,24 @@ components: $ref: '#/components/schemas/GoogleProtobufAny' description: A list of messages that carry the error details. There is a common set of message types for APIs to use. description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' + StorageSetting_S3Config: + type: object + properties: + accessKeyId: + type: string + accessKeySecret: + type: string + endpoint: + type: string + region: + type: string + bucket: + type: string + usePathStyle: + type: boolean + description: |- + S3 configuration for cloud storage backend. + Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ StrikethroughNode: type: object properties: @@ -3425,7 +3498,9 @@ components: properties: name: type: string - description: "Required. The resource name of the memo.\r\n Format: memos/{memo}" + description: |- + Required. The resource name of the memo. + Format: memos/{memo} reaction: allOf: - $ref: '#/components/schemas/Reaction' @@ -3651,25 +3726,47 @@ components: url: type: string description: The target URL for the webhook. - WorkspaceCustomProfile: + WorkspaceProfile: type: object properties: - title: + owner: type: string - description: + description: |- + The name of instance owner. + Format: users/{user} + version: type: string - logoUrl: + description: Version is the current version of instance. + mode: type: string - locale: + description: Mode is the instance mode (e.g. "prod", "dev" or "demo"). + instanceUrl: type: string - appearance: + description: Instance URL is the URL of the instance. + description: Workspace profile message containing basic workspace information. + WorkspaceSetting: + type: object + properties: + name: type: string - WorkspaceGeneralSetting: + description: |- + The name of the workspace setting. + Format: workspace/settings/{setting} + generalSetting: + $ref: '#/components/schemas/WorkspaceSetting_GeneralSetting' + storageSetting: + $ref: '#/components/schemas/WorkspaceSetting_StorageSetting' + memoRelatedSetting: + $ref: '#/components/schemas/WorkspaceSetting_MemoRelatedSetting' + description: A workspace setting resource. + WorkspaceSetting_GeneralSetting: type: object properties: theme: type: string - description: "theme is the name of the selected theme.\r\n This references a CSS file in the web/public/themes/ directory." + description: |- + theme is the name of the selected theme. + This references a CSS file in the web/public/themes/ directory. disallowUserRegistration: type: boolean description: disallow_user_registration disallows user registration. @@ -3684,11 +3781,14 @@ components: description: additional_style is the additional style. customProfile: allOf: - - $ref: '#/components/schemas/WorkspaceCustomProfile' + - $ref: '#/components/schemas/GeneralSetting_CustomProfile' description: custom_profile is the custom profile. weekStartDayOffset: type: integer - description: "week_start_day_offset is the week start day offset from Sunday.\r\n 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday\r\n Default is Sunday." + description: |- + week_start_day_offset is the week start day offset from Sunday. + 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday + Default is Sunday. format: int32 disallowChangeUsername: type: boolean @@ -3696,7 +3796,8 @@ components: disallowChangeNickname: type: boolean description: disallow_change_nickname disallows changing nickname. - WorkspaceMemoRelatedSetting: + description: General workspace settings configuration. + WorkspaceSetting_MemoRelatedSetting: type: object properties: disallowPublicVisibility: @@ -3734,36 +3835,8 @@ components: items: type: string description: nsfw_tags is the list of tags that mark content as NSFW for blurring. - WorkspaceProfile: - type: object - properties: - owner: - type: string - description: "The name of instance owner.\r\n Format: users/{user}" - version: - type: string - description: Version is the current version of instance. - mode: - type: string - description: Mode is the instance mode (e.g. "prod", "dev" or "demo"). - instanceUrl: - type: string - description: Instance URL is the URL of the instance. - description: Workspace profile message containing basic workspace information. - WorkspaceSetting: - type: object - properties: - name: - type: string - description: "The name of the workspace setting.\r\n Format: workspace/settings/{setting}" - generalSetting: - $ref: '#/components/schemas/WorkspaceGeneralSetting' - storageSetting: - $ref: '#/components/schemas/WorkspaceStorageSetting' - memoRelatedSetting: - $ref: '#/components/schemas/WorkspaceMemoRelatedSetting' - description: A workspace setting resource. - WorkspaceStorageSetting: + description: Memo-related workspace settings and policies. + WorkspaceSetting_StorageSetting: type: object properties: storageType: @@ -3777,30 +3850,17 @@ components: format: enum filepathTemplate: type: string - description: "The template of file path.\r\n e.g. assets/{timestamp}_{filename}" + description: |- + The template of file path. + e.g. assets/{timestamp}_{filename} uploadSizeLimitMb: type: string description: The max upload size in megabytes. s3Config: allOf: - - $ref: '#/components/schemas/WorkspaceStorageSetting_S3Config' + - $ref: '#/components/schemas/StorageSetting_S3Config' description: The S3 config. - WorkspaceStorageSetting_S3Config: - type: object - properties: - accessKeyId: - type: string - accessKeySecret: - type: string - endpoint: - type: string - region: - type: string - bucket: - type: string - usePathStyle: - type: boolean - description: 'Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/' + description: Storage configuration settings for workspace attachments. tags: - name: ActivityService - name: AttachmentService diff --git a/server/router/api/v1/workspace_service.go b/server/router/api/v1/workspace_service.go index aed7f08cc..5921543d8 100644 --- a/server/router/api/v1/workspace_service.go +++ b/server/router/api/v1/workspace_service.go @@ -105,15 +105,15 @@ func convertWorkspaceSettingFromStore(setting *storepb.WorkspaceSetting) *v1pb.W } switch setting.Value.(type) { case *storepb.WorkspaceSetting_GeneralSetting: - workspaceSetting.Value = &v1pb.WorkspaceSetting_GeneralSetting{ + workspaceSetting.Value = &v1pb.WorkspaceSetting_GeneralSetting_{ GeneralSetting: convertWorkspaceGeneralSettingFromStore(setting.GetGeneralSetting()), } case *storepb.WorkspaceSetting_StorageSetting: - workspaceSetting.Value = &v1pb.WorkspaceSetting_StorageSetting{ + workspaceSetting.Value = &v1pb.WorkspaceSetting_StorageSetting_{ StorageSetting: convertWorkspaceStorageSettingFromStore(setting.GetStorageSetting()), } case *storepb.WorkspaceSetting_MemoRelatedSetting: - workspaceSetting.Value = &v1pb.WorkspaceSetting_MemoRelatedSetting{ + workspaceSetting.Value = &v1pb.WorkspaceSetting_MemoRelatedSetting_{ MemoRelatedSetting: convertWorkspaceMemoRelatedSettingFromStore(setting.GetMemoRelatedSetting()), } } @@ -145,7 +145,7 @@ func convertWorkspaceSettingToStore(setting *v1pb.WorkspaceSetting) *storepb.Wor return workspaceSetting } -func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSetting) *v1pb.WorkspaceGeneralSetting { +func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSetting) *v1pb.WorkspaceSetting_GeneralSetting { if setting == nil { return nil } @@ -155,7 +155,7 @@ func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSe theme = "default" } - generalSetting := &v1pb.WorkspaceGeneralSetting{ + generalSetting := &v1pb.WorkspaceSetting_GeneralSetting{ Theme: theme, DisallowUserRegistration: setting.DisallowUserRegistration, DisallowPasswordAuth: setting.DisallowPasswordAuth, @@ -166,7 +166,7 @@ func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSe DisallowChangeNickname: setting.DisallowChangeNickname, } if setting.CustomProfile != nil { - generalSetting.CustomProfile = &v1pb.WorkspaceCustomProfile{ + generalSetting.CustomProfile = &v1pb.WorkspaceSetting_GeneralSetting_CustomProfile{ Title: setting.CustomProfile.Title, Description: setting.CustomProfile.Description, LogoUrl: setting.CustomProfile.LogoUrl, @@ -177,7 +177,7 @@ func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSe return generalSetting } -func convertWorkspaceGeneralSettingToStore(setting *v1pb.WorkspaceGeneralSetting) *storepb.WorkspaceGeneralSetting { +func convertWorkspaceGeneralSettingToStore(setting *v1pb.WorkspaceSetting_GeneralSetting) *storepb.WorkspaceGeneralSetting { if setting == nil { return nil } @@ -203,17 +203,17 @@ func convertWorkspaceGeneralSettingToStore(setting *v1pb.WorkspaceGeneralSetting return generalSetting } -func convertWorkspaceStorageSettingFromStore(settingpb *storepb.WorkspaceStorageSetting) *v1pb.WorkspaceStorageSetting { +func convertWorkspaceStorageSettingFromStore(settingpb *storepb.WorkspaceStorageSetting) *v1pb.WorkspaceSetting_StorageSetting { if settingpb == nil { return nil } - setting := &v1pb.WorkspaceStorageSetting{ - StorageType: v1pb.WorkspaceStorageSetting_StorageType(settingpb.StorageType), + setting := &v1pb.WorkspaceSetting_StorageSetting{ + StorageType: v1pb.WorkspaceSetting_StorageSetting_StorageType(settingpb.StorageType), FilepathTemplate: settingpb.FilepathTemplate, UploadSizeLimitMb: settingpb.UploadSizeLimitMb, } if settingpb.S3Config != nil { - setting.S3Config = &v1pb.WorkspaceStorageSetting_S3Config{ + setting.S3Config = &v1pb.WorkspaceSetting_StorageSetting_S3Config{ AccessKeyId: settingpb.S3Config.AccessKeyId, AccessKeySecret: settingpb.S3Config.AccessKeySecret, Endpoint: settingpb.S3Config.Endpoint, @@ -225,7 +225,7 @@ func convertWorkspaceStorageSettingFromStore(settingpb *storepb.WorkspaceStorage return setting } -func convertWorkspaceStorageSettingToStore(setting *v1pb.WorkspaceStorageSetting) *storepb.WorkspaceStorageSetting { +func convertWorkspaceStorageSettingToStore(setting *v1pb.WorkspaceSetting_StorageSetting) *storepb.WorkspaceStorageSetting { if setting == nil { return nil } @@ -247,11 +247,11 @@ func convertWorkspaceStorageSettingToStore(setting *v1pb.WorkspaceStorageSetting return settingpb } -func convertWorkspaceMemoRelatedSettingFromStore(setting *storepb.WorkspaceMemoRelatedSetting) *v1pb.WorkspaceMemoRelatedSetting { +func convertWorkspaceMemoRelatedSettingFromStore(setting *storepb.WorkspaceMemoRelatedSetting) *v1pb.WorkspaceSetting_MemoRelatedSetting { if setting == nil { return nil } - return &v1pb.WorkspaceMemoRelatedSetting{ + return &v1pb.WorkspaceSetting_MemoRelatedSetting{ DisallowPublicVisibility: setting.DisallowPublicVisibility, DisplayWithUpdateTime: setting.DisplayWithUpdateTime, ContentLengthLimit: setting.ContentLengthLimit, @@ -265,7 +265,7 @@ func convertWorkspaceMemoRelatedSettingFromStore(setting *storepb.WorkspaceMemoR } } -func convertWorkspaceMemoRelatedSettingToStore(setting *v1pb.WorkspaceMemoRelatedSetting) *storepb.WorkspaceMemoRelatedSetting { +func convertWorkspaceMemoRelatedSettingToStore(setting *v1pb.WorkspaceSetting_MemoRelatedSetting) *storepb.WorkspaceMemoRelatedSetting { if setting == nil { return nil } diff --git a/web/src/components/Settings/MemoRelatedSettings.tsx b/web/src/components/Settings/MemoRelatedSettings.tsx index 44a6d7371..81052c854 100644 --- a/web/src/components/Settings/MemoRelatedSettings.tsx +++ b/web/src/components/Settings/MemoRelatedSettings.tsx @@ -9,18 +9,18 @@ import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { workspaceStore } from "@/store"; import { workspaceSettingNamePrefix } from "@/store/common"; -import { WorkspaceMemoRelatedSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; +import { WorkspaceSetting_MemoRelatedSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; import { useTranslate } from "@/utils/i18n"; const MemoRelatedSettings = observer(() => { const t = useTranslate(); - const [originalSetting, setOriginalSetting] = useState(workspaceStore.state.memoRelatedSetting); - const [memoRelatedSetting, setMemoRelatedSetting] = useState(originalSetting); + const [originalSetting, setOriginalSetting] = useState(workspaceStore.state.memoRelatedSetting); + const [memoRelatedSetting, setMemoRelatedSetting] = useState(originalSetting); const [editingReaction, setEditingReaction] = useState(""); const [editingNsfwTag, setEditingNsfwTag] = useState(""); - const updatePartialSetting = (partial: Partial) => { - const newWorkspaceMemoRelatedSetting = WorkspaceMemoRelatedSetting.fromPartial({ + const updatePartialSetting = (partial: Partial) => { + const newWorkspaceMemoRelatedSetting = WorkspaceSetting_MemoRelatedSetting.fromPartial({ ...memoRelatedSetting, ...partial, }); diff --git a/web/src/components/Settings/StorageSection.tsx b/web/src/components/Settings/StorageSection.tsx index 701ef404b..fdfbb184e 100644 --- a/web/src/components/Settings/StorageSection.tsx +++ b/web/src/components/Settings/StorageSection.tsx @@ -15,21 +15,25 @@ import { workspaceStore } from "@/store"; import { workspaceSettingNamePrefix } from "@/store/common"; import { WorkspaceSetting_Key, - WorkspaceStorageSetting, - WorkspaceStorageSetting_S3Config, - WorkspaceStorageSetting_StorageType, + WorkspaceSetting_StorageSetting, + WorkspaceSetting_StorageSetting_S3Config, + WorkspaceSetting_StorageSetting_StorageType, } from "@/types/proto/api/v1/workspace_service"; import { useTranslate } from "@/utils/i18n"; const StorageSection = observer(() => { const t = useTranslate(); - const [workspaceStorageSetting, setWorkspaceStorageSetting] = useState( - WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}), + const [workspaceStorageSetting, setWorkspaceStorageSetting] = useState( + WorkspaceSetting_StorageSetting.fromPartial( + workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}, + ), ); useEffect(() => { setWorkspaceStorageSetting( - WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}), + WorkspaceSetting_StorageSetting.fromPartial( + workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}, + ), ); }, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)]); @@ -38,14 +42,14 @@ const StorageSection = observer(() => { return false; } - const origin = WorkspaceStorageSetting.fromPartial( + const origin = WorkspaceSetting_StorageSetting.fromPartial( workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}, ); - if (workspaceStorageSetting.storageType === WorkspaceStorageSetting_StorageType.LOCAL) { + if (workspaceStorageSetting.storageType === WorkspaceSetting_StorageSetting_StorageType.LOCAL) { if (workspaceStorageSetting.filepathTemplate.length === 0) { return false; } - } else if (workspaceStorageSetting.storageType === WorkspaceStorageSetting_StorageType.S3) { + } else if (workspaceStorageSetting.storageType === WorkspaceSetting_StorageSetting_StorageType.S3) { if ( workspaceStorageSetting.s3Config?.accessKeyId.length === 0 || workspaceStorageSetting.s3Config?.accessKeySecret.length === 0 || @@ -64,7 +68,7 @@ const StorageSection = observer(() => { if (Number.isNaN(num)) { num = 0; } - const update: WorkspaceStorageSetting = { + const update: WorkspaceSetting_StorageSetting = { ...workspaceStorageSetting, uploadSizeLimitMb: num, }; @@ -72,17 +76,17 @@ const StorageSection = observer(() => { }; const handleFilepathTemplateChanged = async (event: React.FocusEvent) => { - const update: WorkspaceStorageSetting = { + const update: WorkspaceSetting_StorageSetting = { ...workspaceStorageSetting, filepathTemplate: event.target.value, }; setWorkspaceStorageSetting(update); }; - const handlePartialS3ConfigChanged = async (s3Config: Partial) => { - const update: WorkspaceStorageSetting = { + const handlePartialS3ConfigChanged = async (s3Config: Partial) => { + const update: WorkspaceSetting_StorageSetting = { ...workspaceStorageSetting, - s3Config: WorkspaceStorageSetting_S3Config.fromPartial({ + s3Config: WorkspaceSetting_StorageSetting_S3Config.fromPartial({ ...workspaceStorageSetting.s3Config, ...s3Config, }), @@ -116,8 +120,8 @@ const StorageSection = observer(() => { }); }; - const handleStorageTypeChanged = async (storageType: WorkspaceStorageSetting_StorageType) => { - const update: WorkspaceStorageSetting = { + const handleStorageTypeChanged = async (storageType: WorkspaceSetting_StorageSetting_StorageType) => { + const update: WorkspaceSetting_StorageSetting = { ...workspaceStorageSetting, storageType: storageType, }; @@ -138,20 +142,20 @@ const StorageSection = observer(() => { { - handleStorageTypeChanged(value as WorkspaceStorageSetting_StorageType); + handleStorageTypeChanged(value as WorkspaceSetting_StorageSetting_StorageType); }} className="flex flex-row gap-4" >
- +
- +
- +
@@ -171,7 +175,7 @@ const StorageSection = observer(() => { - {workspaceStorageSetting.storageType !== WorkspaceStorageSetting_StorageType.DATABASE && ( + {workspaceStorageSetting.storageType !== WorkspaceSetting_StorageSetting_StorageType.DATABASE && (
{t("setting.storage-section.filepath-template")} { />
)} - {workspaceStorageSetting.storageType === WorkspaceStorageSetting_StorageType.S3 && ( + {workspaceStorageSetting.storageType === WorkspaceSetting_StorageSetting_StorageType.S3 && ( <>
Access key id diff --git a/web/src/components/Settings/WorkspaceSection.tsx b/web/src/components/Settings/WorkspaceSection.tsx index 36dbd1863..526e3db36 100644 --- a/web/src/components/Settings/WorkspaceSection.tsx +++ b/web/src/components/Settings/WorkspaceSection.tsx @@ -14,7 +14,7 @@ import useDialog from "@/hooks/useDialog"; import { workspaceStore } from "@/store"; import { workspaceSettingNamePrefix } from "@/store/common"; import { IdentityProvider } from "@/types/proto/api/v1/idp_service"; -import { WorkspaceGeneralSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; +import { WorkspaceSetting_GeneralSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; import { useTranslate } from "@/utils/i18n"; import ThemeSelector from "../ThemeSelector"; import UpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; @@ -22,10 +22,10 @@ import UpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; const WorkspaceSection = observer(() => { const t = useTranslate(); const customizeDialog = useDialog(); - const originalSetting = WorkspaceGeneralSetting.fromPartial( + const originalSetting = WorkspaceSetting_GeneralSetting.fromPartial( workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.GENERAL)?.generalSetting || {}, ); - const [workspaceGeneralSetting, setWorkspaceGeneralSetting] = useState(originalSetting); + const [workspaceGeneralSetting, setWorkspaceGeneralSetting] = useState(originalSetting); const [identityProviderList, setIdentityProviderList] = useState([]); useEffect(() => { @@ -36,9 +36,9 @@ const WorkspaceSection = observer(() => { customizeDialog.open(); }; - const updatePartialSetting = (partial: Partial) => { + const updatePartialSetting = (partial: Partial) => { setWorkspaceGeneralSetting( - WorkspaceGeneralSetting.fromPartial({ + WorkspaceSetting_GeneralSetting.fromPartial({ ...workspaceGeneralSetting, ...partial, }), diff --git a/web/src/components/UpdateCustomizedProfileDialog.tsx b/web/src/components/UpdateCustomizedProfileDialog.tsx index 2ce5b8cc7..4c7896332 100644 --- a/web/src/components/UpdateCustomizedProfileDialog.tsx +++ b/web/src/components/UpdateCustomizedProfileDialog.tsx @@ -7,7 +7,7 @@ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { workspaceStore } from "@/store"; import { workspaceSettingNamePrefix } from "@/store/common"; -import { WorkspaceCustomProfile, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; +import { WorkspaceSetting_GeneralSetting_CustomProfile, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; import { useTranslate } from "@/utils/i18n"; import AppearanceSelect from "./AppearanceSelect"; import LocaleSelect from "./LocaleSelect"; @@ -21,13 +21,13 @@ interface Props { function UpdateCustomizedProfileDialog({ open, onOpenChange, onSuccess }: Props) { const t = useTranslate(); const workspaceGeneralSetting = workspaceStore.state.generalSetting; - const [customProfile, setCustomProfile] = useState( - WorkspaceCustomProfile.fromPartial(workspaceGeneralSetting.customProfile || {}), + const [customProfile, setCustomProfile] = useState( + WorkspaceSetting_GeneralSetting_CustomProfile.fromPartial(workspaceGeneralSetting.customProfile || {}), ); const [isLoading, setIsLoading] = useState(false); - const setPartialState = (partialState: Partial) => { + const setPartialState = (partialState: Partial) => { setCustomProfile((state) => ({ ...state, ...partialState, diff --git a/web/src/store/workspace.ts b/web/src/store/workspace.ts index 77ee76925..72e0178e8 100644 --- a/web/src/store/workspace.ts +++ b/web/src/store/workspace.ts @@ -2,7 +2,11 @@ import { uniqBy } from "lodash-es"; import { makeAutoObservable } from "mobx"; import { workspaceServiceClient } from "@/grpcweb"; import { WorkspaceProfile, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service"; -import { WorkspaceGeneralSetting, WorkspaceMemoRelatedSetting, WorkspaceSetting } from "@/types/proto/api/v1/workspace_service"; +import { + WorkspaceSetting_GeneralSetting, + WorkspaceSetting_MemoRelatedSetting, + WorkspaceSetting, +} from "@/types/proto/api/v1/workspace_service"; import { isValidateLocale } from "@/utils/i18n"; import { workspaceSettingNamePrefix } from "./common"; @@ -15,14 +19,14 @@ class LocalState { get generalSetting() { return ( this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.GENERAL}`)?.generalSetting || - WorkspaceGeneralSetting.fromPartial({}) + WorkspaceSetting_GeneralSetting.fromPartial({}) ); } get memoRelatedSetting() { return ( this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.MEMO_RELATED}`) - ?.memoRelatedSetting || WorkspaceMemoRelatedSetting.fromPartial({}) + ?.memoRelatedSetting || WorkspaceSetting_MemoRelatedSetting.fromPartial({}) ); } diff --git a/web/src/types/proto/api/v1/workspace_service.ts b/web/src/types/proto/api/v1/workspace_service.ts index b97963a46..6bf817ade 100644 --- a/web/src/types/proto/api/v1/workspace_service.ts +++ b/web/src/types/proto/api/v1/workspace_service.ts @@ -36,15 +36,14 @@ export interface WorkspaceSetting { * Format: workspace/settings/{setting} */ name: string; - generalSetting?: WorkspaceGeneralSetting | undefined; - storageSetting?: WorkspaceStorageSetting | undefined; - memoRelatedSetting?: WorkspaceMemoRelatedSetting | undefined; + generalSetting?: WorkspaceSetting_GeneralSetting | undefined; + storageSetting?: WorkspaceSetting_StorageSetting | undefined; + memoRelatedSetting?: WorkspaceSetting_MemoRelatedSetting | undefined; } +/** Enumeration of workspace setting keys. */ export enum WorkspaceSetting_Key { KEY_UNSPECIFIED = "KEY_UNSPECIFIED", - /** BASIC - BASIC is the key for basic settings. */ - BASIC = "BASIC", /** GENERAL - GENERAL is the key for general settings. */ GENERAL = "GENERAL", /** STORAGE - STORAGE is the key for storage settings. */ @@ -60,15 +59,12 @@ export function workspaceSetting_KeyFromJSON(object: any): WorkspaceSetting_Key case "KEY_UNSPECIFIED": return WorkspaceSetting_Key.KEY_UNSPECIFIED; case 1: - case "BASIC": - return WorkspaceSetting_Key.BASIC; - case 2: case "GENERAL": return WorkspaceSetting_Key.GENERAL; - case 3: + case 2: case "STORAGE": return WorkspaceSetting_Key.STORAGE; - case 4: + case 3: case "MEMO_RELATED": return WorkspaceSetting_Key.MEMO_RELATED; case -1: @@ -82,21 +78,20 @@ export function workspaceSetting_KeyToNumber(object: WorkspaceSetting_Key): numb switch (object) { case WorkspaceSetting_Key.KEY_UNSPECIFIED: return 0; - case WorkspaceSetting_Key.BASIC: - return 1; case WorkspaceSetting_Key.GENERAL: - return 2; + return 1; case WorkspaceSetting_Key.STORAGE: - return 3; + return 2; case WorkspaceSetting_Key.MEMO_RELATED: - return 4; + return 3; case WorkspaceSetting_Key.UNRECOGNIZED: default: return -1; } } -export interface WorkspaceGeneralSetting { +/** General workspace settings configuration. */ +export interface WorkspaceSetting_GeneralSetting { /** * theme is the name of the selected theme. * This references a CSS file in the web/public/themes/ directory. @@ -112,7 +107,7 @@ export interface WorkspaceGeneralSetting { additionalStyle: string; /** custom_profile is the custom profile. */ customProfile?: - | WorkspaceCustomProfile + | WorkspaceSetting_GeneralSetting_CustomProfile | undefined; /** * week_start_day_offset is the week start day offset from Sunday. @@ -126,7 +121,8 @@ export interface WorkspaceGeneralSetting { disallowChangeNickname: boolean; } -export interface WorkspaceCustomProfile { +/** Custom profile configuration for workspace branding. */ +export interface WorkspaceSetting_GeneralSetting_CustomProfile { title: string; description: string; logoUrl: string; @@ -134,9 +130,10 @@ export interface WorkspaceCustomProfile { appearance: string; } -export interface WorkspaceStorageSetting { +/** Storage configuration settings for workspace attachments. */ +export interface WorkspaceSetting_StorageSetting { /** storage_type is the storage type. */ - storageType: WorkspaceStorageSetting_StorageType; + storageType: WorkspaceSetting_StorageSetting_StorageType; /** * The template of file path. * e.g. assets/{timestamp}_{filename} @@ -145,10 +142,11 @@ export interface WorkspaceStorageSetting { /** The max upload size in megabytes. */ uploadSizeLimitMb: number; /** The S3 config. */ - s3Config?: WorkspaceStorageSetting_S3Config | undefined; + s3Config?: WorkspaceSetting_StorageSetting_S3Config | undefined; } -export enum WorkspaceStorageSetting_StorageType { +/** Storage type enumeration for different storage backends. */ +export enum WorkspaceSetting_StorageSetting_StorageType { STORAGE_TYPE_UNSPECIFIED = "STORAGE_TYPE_UNSPECIFIED", /** DATABASE - DATABASE is the database storage type. */ DATABASE = "DATABASE", @@ -159,45 +157,52 @@ export enum WorkspaceStorageSetting_StorageType { UNRECOGNIZED = "UNRECOGNIZED", } -export function workspaceStorageSetting_StorageTypeFromJSON(object: any): WorkspaceStorageSetting_StorageType { +export function workspaceSetting_StorageSetting_StorageTypeFromJSON( + object: any, +): WorkspaceSetting_StorageSetting_StorageType { switch (object) { case 0: case "STORAGE_TYPE_UNSPECIFIED": - return WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; + return WorkspaceSetting_StorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; case 1: case "DATABASE": - return WorkspaceStorageSetting_StorageType.DATABASE; + return WorkspaceSetting_StorageSetting_StorageType.DATABASE; case 2: case "LOCAL": - return WorkspaceStorageSetting_StorageType.LOCAL; + return WorkspaceSetting_StorageSetting_StorageType.LOCAL; case 3: case "S3": - return WorkspaceStorageSetting_StorageType.S3; + return WorkspaceSetting_StorageSetting_StorageType.S3; case -1: case "UNRECOGNIZED": default: - return WorkspaceStorageSetting_StorageType.UNRECOGNIZED; + return WorkspaceSetting_StorageSetting_StorageType.UNRECOGNIZED; } } -export function workspaceStorageSetting_StorageTypeToNumber(object: WorkspaceStorageSetting_StorageType): number { +export function workspaceSetting_StorageSetting_StorageTypeToNumber( + object: WorkspaceSetting_StorageSetting_StorageType, +): number { switch (object) { - case WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED: + case WorkspaceSetting_StorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED: return 0; - case WorkspaceStorageSetting_StorageType.DATABASE: + case WorkspaceSetting_StorageSetting_StorageType.DATABASE: return 1; - case WorkspaceStorageSetting_StorageType.LOCAL: + case WorkspaceSetting_StorageSetting_StorageType.LOCAL: return 2; - case WorkspaceStorageSetting_StorageType.S3: + case WorkspaceSetting_StorageSetting_StorageType.S3: return 3; - case WorkspaceStorageSetting_StorageType.UNRECOGNIZED: + case WorkspaceSetting_StorageSetting_StorageType.UNRECOGNIZED: default: return -1; } } -/** Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ */ -export interface WorkspaceStorageSetting_S3Config { +/** + * S3 configuration for cloud storage backend. + * Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ + */ +export interface WorkspaceSetting_StorageSetting_S3Config { accessKeyId: string; accessKeySecret: string; endpoint: string; @@ -206,7 +211,8 @@ export interface WorkspaceStorageSetting_S3Config { usePathStyle: boolean; } -export interface WorkspaceMemoRelatedSetting { +/** Memo-related workspace settings and policies. */ +export interface WorkspaceSetting_MemoRelatedSetting { /** disallow_public_visibility disallows set memo as public visibility. */ disallowPublicVisibility: boolean; /** display_with_update_time orders and displays memo with update time. */ @@ -374,13 +380,13 @@ export const WorkspaceSetting: MessageFns = { writer.uint32(10).string(message.name); } if (message.generalSetting !== undefined) { - WorkspaceGeneralSetting.encode(message.generalSetting, writer.uint32(18).fork()).join(); + WorkspaceSetting_GeneralSetting.encode(message.generalSetting, writer.uint32(18).fork()).join(); } if (message.storageSetting !== undefined) { - WorkspaceStorageSetting.encode(message.storageSetting, writer.uint32(26).fork()).join(); + WorkspaceSetting_StorageSetting.encode(message.storageSetting, writer.uint32(26).fork()).join(); } if (message.memoRelatedSetting !== undefined) { - WorkspaceMemoRelatedSetting.encode(message.memoRelatedSetting, writer.uint32(34).fork()).join(); + WorkspaceSetting_MemoRelatedSetting.encode(message.memoRelatedSetting, writer.uint32(34).fork()).join(); } return writer; }, @@ -405,7 +411,7 @@ export const WorkspaceSetting: MessageFns = { break; } - message.generalSetting = WorkspaceGeneralSetting.decode(reader, reader.uint32()); + message.generalSetting = WorkspaceSetting_GeneralSetting.decode(reader, reader.uint32()); continue; } case 3: { @@ -413,7 +419,7 @@ export const WorkspaceSetting: MessageFns = { break; } - message.storageSetting = WorkspaceStorageSetting.decode(reader, reader.uint32()); + message.storageSetting = WorkspaceSetting_StorageSetting.decode(reader, reader.uint32()); continue; } case 4: { @@ -421,7 +427,7 @@ export const WorkspaceSetting: MessageFns = { break; } - message.memoRelatedSetting = WorkspaceMemoRelatedSetting.decode(reader, reader.uint32()); + message.memoRelatedSetting = WorkspaceSetting_MemoRelatedSetting.decode(reader, reader.uint32()); continue; } } @@ -440,19 +446,19 @@ export const WorkspaceSetting: MessageFns = { const message = createBaseWorkspaceSetting(); message.name = object.name ?? ""; message.generalSetting = (object.generalSetting !== undefined && object.generalSetting !== null) - ? WorkspaceGeneralSetting.fromPartial(object.generalSetting) + ? WorkspaceSetting_GeneralSetting.fromPartial(object.generalSetting) : undefined; message.storageSetting = (object.storageSetting !== undefined && object.storageSetting !== null) - ? WorkspaceStorageSetting.fromPartial(object.storageSetting) + ? WorkspaceSetting_StorageSetting.fromPartial(object.storageSetting) : undefined; message.memoRelatedSetting = (object.memoRelatedSetting !== undefined && object.memoRelatedSetting !== null) - ? WorkspaceMemoRelatedSetting.fromPartial(object.memoRelatedSetting) + ? WorkspaceSetting_MemoRelatedSetting.fromPartial(object.memoRelatedSetting) : undefined; return message; }, }; -function createBaseWorkspaceGeneralSetting(): WorkspaceGeneralSetting { +function createBaseWorkspaceSetting_GeneralSetting(): WorkspaceSetting_GeneralSetting { return { theme: "", disallowUserRegistration: false, @@ -466,8 +472,8 @@ function createBaseWorkspaceGeneralSetting(): WorkspaceGeneralSetting { }; } -export const WorkspaceGeneralSetting: MessageFns = { - encode(message: WorkspaceGeneralSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { +export const WorkspaceSetting_GeneralSetting: MessageFns = { + encode(message: WorkspaceSetting_GeneralSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.theme !== "") { writer.uint32(10).string(message.theme); } @@ -484,7 +490,7 @@ export const WorkspaceGeneralSetting: MessageFns = { writer.uint32(42).string(message.additionalStyle); } if (message.customProfile !== undefined) { - WorkspaceCustomProfile.encode(message.customProfile, writer.uint32(50).fork()).join(); + WorkspaceSetting_GeneralSetting_CustomProfile.encode(message.customProfile, writer.uint32(50).fork()).join(); } if (message.weekStartDayOffset !== 0) { writer.uint32(56).int32(message.weekStartDayOffset); @@ -498,10 +504,10 @@ export const WorkspaceGeneralSetting: MessageFns = { return writer; }, - decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceGeneralSetting { + decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceSetting_GeneralSetting { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseWorkspaceGeneralSetting(); + const message = createBaseWorkspaceSetting_GeneralSetting(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -550,7 +556,7 @@ export const WorkspaceGeneralSetting: MessageFns = { break; } - message.customProfile = WorkspaceCustomProfile.decode(reader, reader.uint32()); + message.customProfile = WorkspaceSetting_GeneralSetting_CustomProfile.decode(reader, reader.uint32()); continue; } case 7: { @@ -586,18 +592,18 @@ export const WorkspaceGeneralSetting: MessageFns = { return message; }, - create(base?: DeepPartial): WorkspaceGeneralSetting { - return WorkspaceGeneralSetting.fromPartial(base ?? {}); + create(base?: DeepPartial): WorkspaceSetting_GeneralSetting { + return WorkspaceSetting_GeneralSetting.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): WorkspaceGeneralSetting { - const message = createBaseWorkspaceGeneralSetting(); + fromPartial(object: DeepPartial): WorkspaceSetting_GeneralSetting { + const message = createBaseWorkspaceSetting_GeneralSetting(); message.theme = object.theme ?? ""; message.disallowUserRegistration = object.disallowUserRegistration ?? false; message.disallowPasswordAuth = object.disallowPasswordAuth ?? false; message.additionalScript = object.additionalScript ?? ""; message.additionalStyle = object.additionalStyle ?? ""; message.customProfile = (object.customProfile !== undefined && object.customProfile !== null) - ? WorkspaceCustomProfile.fromPartial(object.customProfile) + ? WorkspaceSetting_GeneralSetting_CustomProfile.fromPartial(object.customProfile) : undefined; message.weekStartDayOffset = object.weekStartDayOffset ?? 0; message.disallowChangeUsername = object.disallowChangeUsername ?? false; @@ -606,113 +612,121 @@ export const WorkspaceGeneralSetting: MessageFns = { }, }; -function createBaseWorkspaceCustomProfile(): WorkspaceCustomProfile { +function createBaseWorkspaceSetting_GeneralSetting_CustomProfile(): WorkspaceSetting_GeneralSetting_CustomProfile { return { title: "", description: "", logoUrl: "", locale: "", appearance: "" }; } -export const WorkspaceCustomProfile: MessageFns = { - encode(message: WorkspaceCustomProfile, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.title !== "") { - writer.uint32(10).string(message.title); - } - if (message.description !== "") { - writer.uint32(18).string(message.description); - } - if (message.logoUrl !== "") { - writer.uint32(26).string(message.logoUrl); - } - if (message.locale !== "") { - writer.uint32(34).string(message.locale); - } - if (message.appearance !== "") { - writer.uint32(42).string(message.appearance); - } - return writer; - }, +export const WorkspaceSetting_GeneralSetting_CustomProfile: MessageFns = + { + encode( + message: WorkspaceSetting_GeneralSetting_CustomProfile, + writer: BinaryWriter = new BinaryWriter(), + ): BinaryWriter { + if (message.title !== "") { + writer.uint32(10).string(message.title); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.logoUrl !== "") { + writer.uint32(26).string(message.logoUrl); + } + if (message.locale !== "") { + writer.uint32(34).string(message.locale); + } + if (message.appearance !== "") { + writer.uint32(42).string(message.appearance); + } + return writer; + }, - decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceCustomProfile { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseWorkspaceCustomProfile(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; + decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceSetting_GeneralSetting_CustomProfile { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceSetting_GeneralSetting_CustomProfile(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.title = reader.string(); + continue; } + case 2: { + if (tag !== 18) { + break; + } - message.title = reader.string(); - continue; - } - case 2: { - if (tag !== 18) { - break; + message.description = reader.string(); + continue; } + case 3: { + if (tag !== 26) { + break; + } - message.description = reader.string(); - continue; - } - case 3: { - if (tag !== 26) { - break; + message.logoUrl = reader.string(); + continue; } + case 4: { + if (tag !== 34) { + break; + } - message.logoUrl = reader.string(); - continue; - } - case 4: { - if (tag !== 34) { - break; + message.locale = reader.string(); + continue; } + case 5: { + if (tag !== 42) { + break; + } - message.locale = reader.string(); - continue; - } - case 5: { - if (tag !== 42) { - break; + message.appearance = reader.string(); + continue; } - - message.appearance = reader.string(); - continue; } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, + return message; + }, - create(base?: DeepPartial): WorkspaceCustomProfile { - return WorkspaceCustomProfile.fromPartial(base ?? {}); - }, - fromPartial(object: DeepPartial): WorkspaceCustomProfile { - const message = createBaseWorkspaceCustomProfile(); - message.title = object.title ?? ""; - message.description = object.description ?? ""; - message.logoUrl = object.logoUrl ?? ""; - message.locale = object.locale ?? ""; - message.appearance = object.appearance ?? ""; - return message; - }, -}; + create( + base?: DeepPartial, + ): WorkspaceSetting_GeneralSetting_CustomProfile { + return WorkspaceSetting_GeneralSetting_CustomProfile.fromPartial(base ?? {}); + }, + fromPartial( + object: DeepPartial, + ): WorkspaceSetting_GeneralSetting_CustomProfile { + const message = createBaseWorkspaceSetting_GeneralSetting_CustomProfile(); + message.title = object.title ?? ""; + message.description = object.description ?? ""; + message.logoUrl = object.logoUrl ?? ""; + message.locale = object.locale ?? ""; + message.appearance = object.appearance ?? ""; + return message; + }, + }; -function createBaseWorkspaceStorageSetting(): WorkspaceStorageSetting { +function createBaseWorkspaceSetting_StorageSetting(): WorkspaceSetting_StorageSetting { return { - storageType: WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED, + storageType: WorkspaceSetting_StorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED, filepathTemplate: "", uploadSizeLimitMb: 0, s3Config: undefined, }; } -export const WorkspaceStorageSetting: MessageFns = { - encode(message: WorkspaceStorageSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.storageType !== WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED) { - writer.uint32(8).int32(workspaceStorageSetting_StorageTypeToNumber(message.storageType)); +export const WorkspaceSetting_StorageSetting: MessageFns = { + encode(message: WorkspaceSetting_StorageSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.storageType !== WorkspaceSetting_StorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED) { + writer.uint32(8).int32(workspaceSetting_StorageSetting_StorageTypeToNumber(message.storageType)); } if (message.filepathTemplate !== "") { writer.uint32(18).string(message.filepathTemplate); @@ -721,15 +735,15 @@ export const WorkspaceStorageSetting: MessageFns = { writer.uint32(24).int64(message.uploadSizeLimitMb); } if (message.s3Config !== undefined) { - WorkspaceStorageSetting_S3Config.encode(message.s3Config, writer.uint32(34).fork()).join(); + WorkspaceSetting_StorageSetting_S3Config.encode(message.s3Config, writer.uint32(34).fork()).join(); } return writer; }, - decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceStorageSetting { + decode(input: BinaryReader | Uint8Array, length?: number): WorkspaceSetting_StorageSetting { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseWorkspaceStorageSetting(); + const message = createBaseWorkspaceSetting_StorageSetting(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { @@ -738,7 +752,7 @@ export const WorkspaceStorageSetting: MessageFns = { break; } - message.storageType = workspaceStorageSetting_StorageTypeFromJSON(reader.int32()); + message.storageType = workspaceSetting_StorageSetting_StorageTypeFromJSON(reader.int32()); continue; } case 2: { @@ -762,7 +776,7 @@ export const WorkspaceStorageSetting: MessageFns = { break; } - message.s3Config = WorkspaceStorageSetting_S3Config.decode(reader, reader.uint32()); + message.s3Config = WorkspaceSetting_StorageSetting_S3Config.decode(reader, reader.uint32()); continue; } } @@ -774,27 +788,27 @@ export const WorkspaceStorageSetting: MessageFns = { return message; }, - create(base?: DeepPartial): WorkspaceStorageSetting { - return WorkspaceStorageSetting.fromPartial(base ?? {}); + create(base?: DeepPartial): WorkspaceSetting_StorageSetting { + return WorkspaceSetting_StorageSetting.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): WorkspaceStorageSetting { - const message = createBaseWorkspaceStorageSetting(); - message.storageType = object.storageType ?? WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; + fromPartial(object: DeepPartial): WorkspaceSetting_StorageSetting { + const message = createBaseWorkspaceSetting_StorageSetting(); + message.storageType = object.storageType ?? WorkspaceSetting_StorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; message.filepathTemplate = object.filepathTemplate ?? ""; message.uploadSizeLimitMb = object.uploadSizeLimitMb ?? 0; message.s3Config = (object.s3Config !== undefined && object.s3Config !== null) - ? WorkspaceStorageSetting_S3Config.fromPartial(object.s3Config) + ? WorkspaceSetting_StorageSetting_S3Config.fromPartial(object.s3Config) : undefined; return message; }, }; -function createBaseWorkspaceStorageSetting_S3Config(): WorkspaceStorageSetting_S3Config { +function createBaseWorkspaceSetting_StorageSetting_S3Config(): WorkspaceSetting_StorageSetting_S3Config { return { accessKeyId: "", accessKeySecret: "", endpoint: "", region: "", bucket: "", usePathStyle: false }; } -export const WorkspaceStorageSetting_S3Config: MessageFns = { - encode(message: WorkspaceStorageSetting_S3Config, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { +export const WorkspaceSetting_StorageSetting_S3Config: MessageFns = { + encode(message: WorkspaceSetting_StorageSetting_S3Config, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.accessKeyId !== "") { writer.uint32(10).string(message.accessKeyId); } @@ -816,10 +830,10 @@ export const WorkspaceStorageSetting_S3Config: MessageFns>> 3) { @@ -880,11 +894,11 @@ export const WorkspaceStorageSetting_S3Config: MessageFns): WorkspaceStorageSetting_S3Config { - return WorkspaceStorageSetting_S3Config.fromPartial(base ?? {}); + create(base?: DeepPartial): WorkspaceSetting_StorageSetting_S3Config { + return WorkspaceSetting_StorageSetting_S3Config.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): WorkspaceStorageSetting_S3Config { - const message = createBaseWorkspaceStorageSetting_S3Config(); + fromPartial(object: DeepPartial): WorkspaceSetting_StorageSetting_S3Config { + const message = createBaseWorkspaceSetting_StorageSetting_S3Config(); message.accessKeyId = object.accessKeyId ?? ""; message.accessKeySecret = object.accessKeySecret ?? ""; message.endpoint = object.endpoint ?? ""; @@ -895,7 +909,7 @@ export const WorkspaceStorageSetting_S3Config: MessageFns = { - encode(message: WorkspaceMemoRelatedSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { +export const WorkspaceSetting_MemoRelatedSetting: MessageFns = { + encode(message: WorkspaceSetting_MemoRelatedSetting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.disallowPublicVisibility !== false) { writer.uint32(8).bool(message.disallowPublicVisibility); } @@ -945,10 +959,10 @@ export const WorkspaceMemoRelatedSetting: MessageFns>> 3) { @@ -1041,11 +1055,11 @@ export const WorkspaceMemoRelatedSetting: MessageFns): WorkspaceMemoRelatedSetting { - return WorkspaceMemoRelatedSetting.fromPartial(base ?? {}); + create(base?: DeepPartial): WorkspaceSetting_MemoRelatedSetting { + return WorkspaceSetting_MemoRelatedSetting.fromPartial(base ?? {}); }, - fromPartial(object: DeepPartial): WorkspaceMemoRelatedSetting { - const message = createBaseWorkspaceMemoRelatedSetting(); + fromPartial(object: DeepPartial): WorkspaceSetting_MemoRelatedSetting { + const message = createBaseWorkspaceSetting_MemoRelatedSetting(); message.disallowPublicVisibility = object.disallowPublicVisibility ?? false; message.displayWithUpdateTime = object.displayWithUpdateTime ?? false; message.contentLengthLimit = object.contentLengthLimit ?? 0;