mattermost/server/public/pluginapi/grpc/generated/go/pluginapiv1/channel.pb.go
Nick Misasi ca57bca5a2 feat(01-02): add core protobuf types (User, Channel, Post, Team, FileInfo)
- Add common.proto with Empty, StringMap, and AppError messages
- Add user.proto with User message (34 fields mirroring model.User)
- Add channel.proto with Channel, ChannelType enum, ChannelBannerInfo
- Add post.proto with Post, PostMetadata, PostEmbed, PostPriority, Reaction
- Add team.proto with Team, TeamMember, TeamUnread, TeamType enum
- Add file.proto with FileInfo, FileUploadResponse, FileData
- Update Makefile to support all proto files with proper import mappings
- Remove bootstrap.proto (replaced by common.proto)
- Use google.protobuf.Struct for dynamic JSON fields (Post.props, Channel.props)
- All timestamps are int64 (milliseconds since epoch)
- All IDs are strings (26-char base32)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 11:06:42 -05:00

542 lines
17 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.6
// protoc v6.33.4
// source: channel.proto
package pluginapiv1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
structpb "google.golang.org/protobuf/types/known/structpb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// ChannelType represents the type of a channel.
// Maps to model.ChannelType in Go.
type ChannelType int32
const (
// Unspecified channel type (should not be used)
ChannelType_CHANNEL_TYPE_UNSPECIFIED ChannelType = 0
// Open/public channel (anyone can join)
ChannelType_CHANNEL_TYPE_OPEN ChannelType = 1
// Private channel (invitation only)
ChannelType_CHANNEL_TYPE_PRIVATE ChannelType = 2
// Direct message between two users
ChannelType_CHANNEL_TYPE_DIRECT ChannelType = 3
// Group message between 3-8 users
ChannelType_CHANNEL_TYPE_GROUP ChannelType = 4
)
// Enum value maps for ChannelType.
var (
ChannelType_name = map[int32]string{
0: "CHANNEL_TYPE_UNSPECIFIED",
1: "CHANNEL_TYPE_OPEN",
2: "CHANNEL_TYPE_PRIVATE",
3: "CHANNEL_TYPE_DIRECT",
4: "CHANNEL_TYPE_GROUP",
}
ChannelType_value = map[string]int32{
"CHANNEL_TYPE_UNSPECIFIED": 0,
"CHANNEL_TYPE_OPEN": 1,
"CHANNEL_TYPE_PRIVATE": 2,
"CHANNEL_TYPE_DIRECT": 3,
"CHANNEL_TYPE_GROUP": 4,
}
)
func (x ChannelType) Enum() *ChannelType {
p := new(ChannelType)
*p = x
return p
}
func (x ChannelType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ChannelType) Descriptor() protoreflect.EnumDescriptor {
return file_channel_proto_enumTypes[0].Descriptor()
}
func (ChannelType) Type() protoreflect.EnumType {
return &file_channel_proto_enumTypes[0]
}
func (x ChannelType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ChannelType.Descriptor instead.
func (ChannelType) EnumDescriptor() ([]byte, []int) {
return file_channel_proto_rawDescGZIP(), []int{0}
}
// ChannelBannerInfo contains information about a channel's banner.
// Maps to model.ChannelBannerInfo in Go.
type ChannelBannerInfo struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Whether the banner is enabled
Enabled *bool `protobuf:"varint,1,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"`
// The banner text content
Text *string `protobuf:"bytes,2,opt,name=text,proto3,oneof" json:"text,omitempty"`
// The banner background color (hex format, e.g., "#FF0000")
BackgroundColor *string `protobuf:"bytes,3,opt,name=background_color,json=backgroundColor,proto3,oneof" json:"background_color,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ChannelBannerInfo) Reset() {
*x = ChannelBannerInfo{}
mi := &file_channel_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ChannelBannerInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChannelBannerInfo) ProtoMessage() {}
func (x *ChannelBannerInfo) ProtoReflect() protoreflect.Message {
mi := &file_channel_proto_msgTypes[0]
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 ChannelBannerInfo.ProtoReflect.Descriptor instead.
func (*ChannelBannerInfo) Descriptor() ([]byte, []int) {
return file_channel_proto_rawDescGZIP(), []int{0}
}
func (x *ChannelBannerInfo) GetEnabled() bool {
if x != nil && x.Enabled != nil {
return *x.Enabled
}
return false
}
func (x *ChannelBannerInfo) GetText() string {
if x != nil && x.Text != nil {
return *x.Text
}
return ""
}
func (x *ChannelBannerInfo) GetBackgroundColor() string {
if x != nil && x.BackgroundColor != nil {
return *x.BackgroundColor
}
return ""
}
// Channel represents a Mattermost channel.
// Maps to model.Channel in Go.
type Channel struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Unique identifier for the channel (26-char ID)
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Timestamp when the channel was created (milliseconds since epoch)
CreateAt int64 `protobuf:"varint,2,opt,name=create_at,json=createAt,proto3" json:"create_at,omitempty"`
// Timestamp when the channel was last updated (milliseconds since epoch)
UpdateAt int64 `protobuf:"varint,3,opt,name=update_at,json=updateAt,proto3" json:"update_at,omitempty"`
// Timestamp when the channel was deleted (0 if not deleted, milliseconds since epoch)
DeleteAt int64 `protobuf:"varint,4,opt,name=delete_at,json=deleteAt,proto3" json:"delete_at,omitempty"`
// ID of the team this channel belongs to (empty for DMs/GMs)
TeamId string `protobuf:"bytes,5,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"`
// The type of channel
Type ChannelType `protobuf:"varint,6,opt,name=type,proto3,enum=mattermost.pluginapi.v1.ChannelType" json:"type,omitempty"`
// The channel's display name
DisplayName string `protobuf:"bytes,7,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// The channel's URL-friendly name (unique within team)
Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
// The channel header text (appears at top of channel)
Header string `protobuf:"bytes,9,opt,name=header,proto3" json:"header,omitempty"`
// The channel's purpose description
Purpose string `protobuf:"bytes,10,opt,name=purpose,proto3" json:"purpose,omitempty"`
// Timestamp of the last post in this channel (milliseconds since epoch)
LastPostAt int64 `protobuf:"varint,11,opt,name=last_post_at,json=lastPostAt,proto3" json:"last_post_at,omitempty"`
// Total number of messages in the channel
TotalMsgCount int64 `protobuf:"varint,12,opt,name=total_msg_count,json=totalMsgCount,proto3" json:"total_msg_count,omitempty"`
// Timestamp for extra data updates (milliseconds since epoch)
ExtraUpdateAt int64 `protobuf:"varint,13,opt,name=extra_update_at,json=extraUpdateAt,proto3" json:"extra_update_at,omitempty"`
// ID of the user who created the channel
CreatorId string `protobuf:"bytes,14,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"`
// ID of the permission scheme applied to this channel
SchemeId *string `protobuf:"bytes,15,opt,name=scheme_id,json=schemeId,proto3,oneof" json:"scheme_id,omitempty"`
// Channel-specific properties (arbitrary JSON data)
// Maps to map[string]any in Go
Props *structpb.Struct `protobuf:"bytes,16,opt,name=props,proto3" json:"props,omitempty"`
// Whether the channel membership is constrained by group sync
GroupConstrained *bool `protobuf:"varint,17,opt,name=group_constrained,json=groupConstrained,proto3,oneof" json:"group_constrained,omitempty"`
// Whether auto-translation is enabled for this channel
AutoTranslation bool `protobuf:"varint,18,opt,name=auto_translation,json=autoTranslation,proto3" json:"auto_translation,omitempty"`
// Whether this channel is shared with other servers
Shared *bool `protobuf:"varint,19,opt,name=shared,proto3,oneof" json:"shared,omitempty"`
// Total number of root messages (excluding replies)
TotalMsgCountRoot int64 `protobuf:"varint,20,opt,name=total_msg_count_root,json=totalMsgCountRoot,proto3" json:"total_msg_count_root,omitempty"`
// ID of the data retention policy applied to this channel
PolicyId *string `protobuf:"bytes,21,opt,name=policy_id,json=policyId,proto3,oneof" json:"policy_id,omitempty"`
// Timestamp of the last root post (milliseconds since epoch)
LastRootPostAt int64 `protobuf:"varint,22,opt,name=last_root_post_at,json=lastRootPostAt,proto3" json:"last_root_post_at,omitempty"`
// Banner information for the channel
BannerInfo *ChannelBannerInfo `protobuf:"bytes,23,opt,name=banner_info,json=bannerInfo,proto3,oneof" json:"banner_info,omitempty"`
// Whether a data retention policy is enforced on this channel
PolicyEnforced bool `protobuf:"varint,24,opt,name=policy_enforced,json=policyEnforced,proto3" json:"policy_enforced,omitempty"`
// Whether the data retention policy is currently active
PolicyIsActive bool `protobuf:"varint,25,opt,name=policy_is_active,json=policyIsActive,proto3" json:"policy_is_active,omitempty"`
// Default sidebar category name for this channel
DefaultCategoryName string `protobuf:"bytes,26,opt,name=default_category_name,json=defaultCategoryName,proto3" json:"default_category_name,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Channel) Reset() {
*x = Channel{}
mi := &file_channel_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Channel) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Channel) ProtoMessage() {}
func (x *Channel) ProtoReflect() protoreflect.Message {
mi := &file_channel_proto_msgTypes[1]
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 Channel.ProtoReflect.Descriptor instead.
func (*Channel) Descriptor() ([]byte, []int) {
return file_channel_proto_rawDescGZIP(), []int{1}
}
func (x *Channel) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Channel) GetCreateAt() int64 {
if x != nil {
return x.CreateAt
}
return 0
}
func (x *Channel) GetUpdateAt() int64 {
if x != nil {
return x.UpdateAt
}
return 0
}
func (x *Channel) GetDeleteAt() int64 {
if x != nil {
return x.DeleteAt
}
return 0
}
func (x *Channel) GetTeamId() string {
if x != nil {
return x.TeamId
}
return ""
}
func (x *Channel) GetType() ChannelType {
if x != nil {
return x.Type
}
return ChannelType_CHANNEL_TYPE_UNSPECIFIED
}
func (x *Channel) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *Channel) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Channel) GetHeader() string {
if x != nil {
return x.Header
}
return ""
}
func (x *Channel) GetPurpose() string {
if x != nil {
return x.Purpose
}
return ""
}
func (x *Channel) GetLastPostAt() int64 {
if x != nil {
return x.LastPostAt
}
return 0
}
func (x *Channel) GetTotalMsgCount() int64 {
if x != nil {
return x.TotalMsgCount
}
return 0
}
func (x *Channel) GetExtraUpdateAt() int64 {
if x != nil {
return x.ExtraUpdateAt
}
return 0
}
func (x *Channel) GetCreatorId() string {
if x != nil {
return x.CreatorId
}
return ""
}
func (x *Channel) GetSchemeId() string {
if x != nil && x.SchemeId != nil {
return *x.SchemeId
}
return ""
}
func (x *Channel) GetProps() *structpb.Struct {
if x != nil {
return x.Props
}
return nil
}
func (x *Channel) GetGroupConstrained() bool {
if x != nil && x.GroupConstrained != nil {
return *x.GroupConstrained
}
return false
}
func (x *Channel) GetAutoTranslation() bool {
if x != nil {
return x.AutoTranslation
}
return false
}
func (x *Channel) GetShared() bool {
if x != nil && x.Shared != nil {
return *x.Shared
}
return false
}
func (x *Channel) GetTotalMsgCountRoot() int64 {
if x != nil {
return x.TotalMsgCountRoot
}
return 0
}
func (x *Channel) GetPolicyId() string {
if x != nil && x.PolicyId != nil {
return *x.PolicyId
}
return ""
}
func (x *Channel) GetLastRootPostAt() int64 {
if x != nil {
return x.LastRootPostAt
}
return 0
}
func (x *Channel) GetBannerInfo() *ChannelBannerInfo {
if x != nil {
return x.BannerInfo
}
return nil
}
func (x *Channel) GetPolicyEnforced() bool {
if x != nil {
return x.PolicyEnforced
}
return false
}
func (x *Channel) GetPolicyIsActive() bool {
if x != nil {
return x.PolicyIsActive
}
return false
}
func (x *Channel) GetDefaultCategoryName() string {
if x != nil {
return x.DefaultCategoryName
}
return ""
}
var File_channel_proto protoreflect.FileDescriptor
const file_channel_proto_rawDesc = "" +
"\n" +
"\rchannel.proto\x12\x17mattermost.pluginapi.v1\x1a\x1cgoogle/protobuf/struct.proto\"\xa5\x01\n" +
"\x11ChannelBannerInfo\x12\x1d\n" +
"\aenabled\x18\x01 \x01(\bH\x00R\aenabled\x88\x01\x01\x12\x17\n" +
"\x04text\x18\x02 \x01(\tH\x01R\x04text\x88\x01\x01\x12.\n" +
"\x10background_color\x18\x03 \x01(\tH\x02R\x0fbackgroundColor\x88\x01\x01B\n" +
"\n" +
"\b_enabledB\a\n" +
"\x05_textB\x13\n" +
"\x11_background_color\"\xac\b\n" +
"\aChannel\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" +
"\tcreate_at\x18\x02 \x01(\x03R\bcreateAt\x12\x1b\n" +
"\tupdate_at\x18\x03 \x01(\x03R\bupdateAt\x12\x1b\n" +
"\tdelete_at\x18\x04 \x01(\x03R\bdeleteAt\x12\x17\n" +
"\ateam_id\x18\x05 \x01(\tR\x06teamId\x128\n" +
"\x04type\x18\x06 \x01(\x0e2$.mattermost.pluginapi.v1.ChannelTypeR\x04type\x12!\n" +
"\fdisplay_name\x18\a \x01(\tR\vdisplayName\x12\x12\n" +
"\x04name\x18\b \x01(\tR\x04name\x12\x16\n" +
"\x06header\x18\t \x01(\tR\x06header\x12\x18\n" +
"\apurpose\x18\n" +
" \x01(\tR\apurpose\x12 \n" +
"\flast_post_at\x18\v \x01(\x03R\n" +
"lastPostAt\x12&\n" +
"\x0ftotal_msg_count\x18\f \x01(\x03R\rtotalMsgCount\x12&\n" +
"\x0fextra_update_at\x18\r \x01(\x03R\rextraUpdateAt\x12\x1d\n" +
"\n" +
"creator_id\x18\x0e \x01(\tR\tcreatorId\x12 \n" +
"\tscheme_id\x18\x0f \x01(\tH\x00R\bschemeId\x88\x01\x01\x12-\n" +
"\x05props\x18\x10 \x01(\v2\x17.google.protobuf.StructR\x05props\x120\n" +
"\x11group_constrained\x18\x11 \x01(\bH\x01R\x10groupConstrained\x88\x01\x01\x12)\n" +
"\x10auto_translation\x18\x12 \x01(\bR\x0fautoTranslation\x12\x1b\n" +
"\x06shared\x18\x13 \x01(\bH\x02R\x06shared\x88\x01\x01\x12/\n" +
"\x14total_msg_count_root\x18\x14 \x01(\x03R\x11totalMsgCountRoot\x12 \n" +
"\tpolicy_id\x18\x15 \x01(\tH\x03R\bpolicyId\x88\x01\x01\x12)\n" +
"\x11last_root_post_at\x18\x16 \x01(\x03R\x0elastRootPostAt\x12P\n" +
"\vbanner_info\x18\x17 \x01(\v2*.mattermost.pluginapi.v1.ChannelBannerInfoH\x04R\n" +
"bannerInfo\x88\x01\x01\x12'\n" +
"\x0fpolicy_enforced\x18\x18 \x01(\bR\x0epolicyEnforced\x12(\n" +
"\x10policy_is_active\x18\x19 \x01(\bR\x0epolicyIsActive\x122\n" +
"\x15default_category_name\x18\x1a \x01(\tR\x13defaultCategoryNameB\f\n" +
"\n" +
"_scheme_idB\x14\n" +
"\x12_group_constrainedB\t\n" +
"\a_sharedB\f\n" +
"\n" +
"_policy_idB\x0e\n" +
"\f_banner_info*\x8d\x01\n" +
"\vChannelType\x12\x1c\n" +
"\x18CHANNEL_TYPE_UNSPECIFIED\x10\x00\x12\x15\n" +
"\x11CHANNEL_TYPE_OPEN\x10\x01\x12\x18\n" +
"\x14CHANNEL_TYPE_PRIVATE\x10\x02\x12\x17\n" +
"\x13CHANNEL_TYPE_DIRECT\x10\x03\x12\x16\n" +
"\x12CHANNEL_TYPE_GROUP\x10\x04BXZVgithub.com/mattermost/mattermost/server/public/pluginapi/grpc/generated/go/pluginapiv1b\x06proto3"
var (
file_channel_proto_rawDescOnce sync.Once
file_channel_proto_rawDescData []byte
)
func file_channel_proto_rawDescGZIP() []byte {
file_channel_proto_rawDescOnce.Do(func() {
file_channel_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_channel_proto_rawDesc), len(file_channel_proto_rawDesc)))
})
return file_channel_proto_rawDescData
}
var file_channel_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_channel_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_channel_proto_goTypes = []any{
(ChannelType)(0), // 0: mattermost.pluginapi.v1.ChannelType
(*ChannelBannerInfo)(nil), // 1: mattermost.pluginapi.v1.ChannelBannerInfo
(*Channel)(nil), // 2: mattermost.pluginapi.v1.Channel
(*structpb.Struct)(nil), // 3: google.protobuf.Struct
}
var file_channel_proto_depIdxs = []int32{
0, // 0: mattermost.pluginapi.v1.Channel.type:type_name -> mattermost.pluginapi.v1.ChannelType
3, // 1: mattermost.pluginapi.v1.Channel.props:type_name -> google.protobuf.Struct
1, // 2: mattermost.pluginapi.v1.Channel.banner_info:type_name -> mattermost.pluginapi.v1.ChannelBannerInfo
3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type
3, // [3:3] is the sub-list for extension type_name
3, // [3:3] is the sub-list for extension extendee
0, // [0:3] is the sub-list for field type_name
}
func init() { file_channel_proto_init() }
func file_channel_proto_init() {
if File_channel_proto != nil {
return
}
file_channel_proto_msgTypes[0].OneofWrappers = []any{}
file_channel_proto_msgTypes[1].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_channel_proto_rawDesc), len(file_channel_proto_rawDesc)),
NumEnums: 1,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_channel_proto_goTypes,
DependencyIndexes: file_channel_proto_depIdxs,
EnumInfos: file_channel_proto_enumTypes,
MessageInfos: file_channel_proto_msgTypes,
}.Build()
File_channel_proto = out.File
file_channel_proto_goTypes = nil
file_channel_proto_depIdxs = nil
}