mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
- 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>
1005 lines
31 KiB
Go
1005 lines
31 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: post.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)
|
|
)
|
|
|
|
// PostMetadata contains additional metadata about a post.
|
|
// Maps to model.PostMetadata in Go.
|
|
type PostMetadata struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Embedded content (link previews, etc.)
|
|
Embeds []*PostEmbed `protobuf:"bytes,1,rep,name=embeds,proto3" json:"embeds,omitempty"`
|
|
// Emoji reactions on this post
|
|
Reactions []*Reaction `protobuf:"bytes,2,rep,name=reactions,proto3" json:"reactions,omitempty"`
|
|
// File attachments
|
|
Files []*FileInfo `protobuf:"bytes,3,rep,name=files,proto3" json:"files,omitempty"`
|
|
// Images in the post (URLs to dimensions)
|
|
Images map[string]*PostImage `protobuf:"bytes,4,rep,name=images,proto3" json:"images,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
|
// Post priority information
|
|
Priority *PostPriority `protobuf:"bytes,5,opt,name=priority,proto3,oneof" json:"priority,omitempty"`
|
|
// Acknowledgements from users
|
|
Acknowledgements []*PostAcknowledgement `protobuf:"bytes,6,rep,name=acknowledgements,proto3" json:"acknowledgements,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostMetadata) Reset() {
|
|
*x = PostMetadata{}
|
|
mi := &file_post_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostMetadata) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostMetadata) ProtoMessage() {}
|
|
|
|
func (x *PostMetadata) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_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 PostMetadata.ProtoReflect.Descriptor instead.
|
|
func (*PostMetadata) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
func (x *PostMetadata) GetEmbeds() []*PostEmbed {
|
|
if x != nil {
|
|
return x.Embeds
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostMetadata) GetReactions() []*Reaction {
|
|
if x != nil {
|
|
return x.Reactions
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostMetadata) GetFiles() []*FileInfo {
|
|
if x != nil {
|
|
return x.Files
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostMetadata) GetImages() map[string]*PostImage {
|
|
if x != nil {
|
|
return x.Images
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostMetadata) GetPriority() *PostPriority {
|
|
if x != nil {
|
|
return x.Priority
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostMetadata) GetAcknowledgements() []*PostAcknowledgement {
|
|
if x != nil {
|
|
return x.Acknowledgements
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// PostEmbed represents embedded content in a post.
|
|
type PostEmbed struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// The type of embed (e.g., "link", "opengraph", "image")
|
|
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
|
|
// The URL being embedded
|
|
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
|
|
// The embedded data (structure depends on type)
|
|
Data *structpb.Struct `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostEmbed) Reset() {
|
|
*x = PostEmbed{}
|
|
mi := &file_post_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostEmbed) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostEmbed) ProtoMessage() {}
|
|
|
|
func (x *PostEmbed) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_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 PostEmbed.ProtoReflect.Descriptor instead.
|
|
func (*PostEmbed) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *PostEmbed) GetType() string {
|
|
if x != nil {
|
|
return x.Type
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostEmbed) GetUrl() string {
|
|
if x != nil {
|
|
return x.Url
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostEmbed) GetData() *structpb.Struct {
|
|
if x != nil {
|
|
return x.Data
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// PostImage represents image dimensions.
|
|
type PostImage struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Width int32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
|
|
Height int32 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
|
|
Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"`
|
|
FrameCount int64 `protobuf:"varint,4,opt,name=frame_count,json=frameCount,proto3" json:"frame_count,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostImage) Reset() {
|
|
*x = PostImage{}
|
|
mi := &file_post_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostImage) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostImage) ProtoMessage() {}
|
|
|
|
func (x *PostImage) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_proto_msgTypes[2]
|
|
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 PostImage.ProtoReflect.Descriptor instead.
|
|
func (*PostImage) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
func (x *PostImage) GetWidth() int32 {
|
|
if x != nil {
|
|
return x.Width
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *PostImage) GetHeight() int32 {
|
|
if x != nil {
|
|
return x.Height
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *PostImage) GetFormat() string {
|
|
if x != nil {
|
|
return x.Format
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostImage) GetFrameCount() int64 {
|
|
if x != nil {
|
|
return x.FrameCount
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// PostPriority represents priority settings for a post.
|
|
type PostPriority struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Priority level (e.g., "urgent")
|
|
Priority *string `protobuf:"bytes,1,opt,name=priority,proto3,oneof" json:"priority,omitempty"`
|
|
// Whether acknowledgement was requested
|
|
RequestedAck *bool `protobuf:"varint,2,opt,name=requested_ack,json=requestedAck,proto3,oneof" json:"requested_ack,omitempty"`
|
|
// Whether persistent notifications are enabled
|
|
PersistentNotifications *bool `protobuf:"varint,3,opt,name=persistent_notifications,json=persistentNotifications,proto3,oneof" json:"persistent_notifications,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostPriority) Reset() {
|
|
*x = PostPriority{}
|
|
mi := &file_post_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostPriority) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostPriority) ProtoMessage() {}
|
|
|
|
func (x *PostPriority) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_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 PostPriority.ProtoReflect.Descriptor instead.
|
|
func (*PostPriority) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *PostPriority) GetPriority() string {
|
|
if x != nil && x.Priority != nil {
|
|
return *x.Priority
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostPriority) GetRequestedAck() bool {
|
|
if x != nil && x.RequestedAck != nil {
|
|
return *x.RequestedAck
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *PostPriority) GetPersistentNotifications() bool {
|
|
if x != nil && x.PersistentNotifications != nil {
|
|
return *x.PersistentNotifications
|
|
}
|
|
return false
|
|
}
|
|
|
|
// PostAcknowledgement represents a user's acknowledgement of a post.
|
|
type PostAcknowledgement struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
|
PostId string `protobuf:"bytes,2,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"`
|
|
AcknowledgedAt int64 `protobuf:"varint,3,opt,name=acknowledged_at,json=acknowledgedAt,proto3" json:"acknowledged_at,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostAcknowledgement) Reset() {
|
|
*x = PostAcknowledgement{}
|
|
mi := &file_post_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostAcknowledgement) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostAcknowledgement) ProtoMessage() {}
|
|
|
|
func (x *PostAcknowledgement) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_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 PostAcknowledgement.ProtoReflect.Descriptor instead.
|
|
func (*PostAcknowledgement) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *PostAcknowledgement) GetUserId() string {
|
|
if x != nil {
|
|
return x.UserId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostAcknowledgement) GetPostId() string {
|
|
if x != nil {
|
|
return x.PostId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostAcknowledgement) GetAcknowledgedAt() int64 {
|
|
if x != nil {
|
|
return x.AcknowledgedAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// Reaction represents a user's emoji reaction to a post.
|
|
// Maps to model.Reaction in Go.
|
|
type Reaction struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
|
PostId string `protobuf:"bytes,2,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"`
|
|
EmojiName string `protobuf:"bytes,3,opt,name=emoji_name,json=emojiName,proto3" json:"emoji_name,omitempty"`
|
|
CreateAt int64 `protobuf:"varint,4,opt,name=create_at,json=createAt,proto3" json:"create_at,omitempty"`
|
|
UpdateAt int64 `protobuf:"varint,5,opt,name=update_at,json=updateAt,proto3" json:"update_at,omitempty"`
|
|
DeleteAt int64 `protobuf:"varint,6,opt,name=delete_at,json=deleteAt,proto3" json:"delete_at,omitempty"`
|
|
RemoteId *string `protobuf:"bytes,7,opt,name=remote_id,json=remoteId,proto3,oneof" json:"remote_id,omitempty"`
|
|
ChannelId *string `protobuf:"bytes,8,opt,name=channel_id,json=channelId,proto3,oneof" json:"channel_id,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Reaction) Reset() {
|
|
*x = Reaction{}
|
|
mi := &file_post_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Reaction) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Reaction) ProtoMessage() {}
|
|
|
|
func (x *Reaction) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_proto_msgTypes[5]
|
|
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 Reaction.ProtoReflect.Descriptor instead.
|
|
func (*Reaction) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
func (x *Reaction) GetUserId() string {
|
|
if x != nil {
|
|
return x.UserId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Reaction) GetPostId() string {
|
|
if x != nil {
|
|
return x.PostId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Reaction) GetEmojiName() string {
|
|
if x != nil {
|
|
return x.EmojiName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Reaction) GetCreateAt() int64 {
|
|
if x != nil {
|
|
return x.CreateAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Reaction) GetUpdateAt() int64 {
|
|
if x != nil {
|
|
return x.UpdateAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Reaction) GetDeleteAt() int64 {
|
|
if x != nil {
|
|
return x.DeleteAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Reaction) GetRemoteId() string {
|
|
if x != nil && x.RemoteId != nil {
|
|
return *x.RemoteId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Reaction) GetChannelId() string {
|
|
if x != nil && x.ChannelId != nil {
|
|
return *x.ChannelId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Post represents a message/post in Mattermost.
|
|
// Maps to model.Post in Go.
|
|
type Post struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Unique identifier for the post (26-char ID)
|
|
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
|
// Timestamp when the post was created (milliseconds since epoch)
|
|
CreateAt int64 `protobuf:"varint,2,opt,name=create_at,json=createAt,proto3" json:"create_at,omitempty"`
|
|
// Timestamp when the post 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 post was last edited (0 if never edited)
|
|
EditAt int64 `protobuf:"varint,4,opt,name=edit_at,json=editAt,proto3" json:"edit_at,omitempty"`
|
|
// Timestamp when the post was deleted (0 if not deleted)
|
|
DeleteAt int64 `protobuf:"varint,5,opt,name=delete_at,json=deleteAt,proto3" json:"delete_at,omitempty"`
|
|
// Whether the post is pinned to the channel
|
|
IsPinned bool `protobuf:"varint,6,opt,name=is_pinned,json=isPinned,proto3" json:"is_pinned,omitempty"`
|
|
// ID of the user who created the post
|
|
UserId string `protobuf:"bytes,7,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
|
// ID of the channel this post belongs to
|
|
ChannelId string `protobuf:"bytes,8,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
|
|
// ID of the root post if this is a reply (empty for root posts)
|
|
RootId string `protobuf:"bytes,9,opt,name=root_id,json=rootId,proto3" json:"root_id,omitempty"`
|
|
// Original post ID (used for cross-posting)
|
|
OriginalId string `protobuf:"bytes,10,opt,name=original_id,json=originalId,proto3" json:"original_id,omitempty"`
|
|
// The message content
|
|
Message string `protobuf:"bytes,11,opt,name=message,proto3" json:"message,omitempty"`
|
|
// Original message before server modifications (for edit boxes)
|
|
MessageSource string `protobuf:"bytes,12,opt,name=message_source,json=messageSource,proto3" json:"message_source,omitempty"`
|
|
// Post type (empty for normal posts, "system_*" for system messages)
|
|
Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type,omitempty"`
|
|
// Post-specific properties (attachments, webhook data, etc.)
|
|
// Maps to model.StringInterface (map[string]any) in Go
|
|
Props *structpb.Struct `protobuf:"bytes,14,opt,name=props,proto3" json:"props,omitempty"`
|
|
// Extracted hashtags from the message
|
|
Hashtags string `protobuf:"bytes,15,opt,name=hashtags,proto3" json:"hashtags,omitempty"`
|
|
// IDs of attached files
|
|
FileIds []string `protobuf:"bytes,16,rep,name=file_ids,json=fileIds,proto3" json:"file_ids,omitempty"`
|
|
// Client-generated ID for deduplication
|
|
PendingPostId string `protobuf:"bytes,17,opt,name=pending_post_id,json=pendingPostId,proto3" json:"pending_post_id,omitempty"`
|
|
// Whether this post has emoji reactions
|
|
HasReactions bool `protobuf:"varint,18,opt,name=has_reactions,json=hasReactions,proto3" json:"has_reactions,omitempty"`
|
|
// Remote cluster ID if this post is from a shared channel
|
|
RemoteId *string `protobuf:"bytes,19,opt,name=remote_id,json=remoteId,proto3,oneof" json:"remote_id,omitempty"`
|
|
// Number of replies (for root posts only)
|
|
ReplyCount int64 `protobuf:"varint,20,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"`
|
|
// Timestamp of the last reply (for root posts only)
|
|
LastReplyAt int64 `protobuf:"varint,21,opt,name=last_reply_at,json=lastReplyAt,proto3" json:"last_reply_at,omitempty"`
|
|
// Users who participated in the thread
|
|
Participants []*User `protobuf:"bytes,22,rep,name=participants,proto3" json:"participants,omitempty"`
|
|
// Whether the current user is following this thread
|
|
IsFollowing *bool `protobuf:"varint,23,opt,name=is_following,json=isFollowing,proto3,oneof" json:"is_following,omitempty"`
|
|
// Additional metadata (embeds, reactions, files, etc.)
|
|
Metadata *PostMetadata `protobuf:"bytes,24,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Post) Reset() {
|
|
*x = Post{}
|
|
mi := &file_post_proto_msgTypes[6]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Post) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Post) ProtoMessage() {}
|
|
|
|
func (x *Post) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_proto_msgTypes[6]
|
|
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 Post.ProtoReflect.Descriptor instead.
|
|
func (*Post) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{6}
|
|
}
|
|
|
|
func (x *Post) GetId() string {
|
|
if x != nil {
|
|
return x.Id
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetCreateAt() int64 {
|
|
if x != nil {
|
|
return x.CreateAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetUpdateAt() int64 {
|
|
if x != nil {
|
|
return x.UpdateAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetEditAt() int64 {
|
|
if x != nil {
|
|
return x.EditAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetDeleteAt() int64 {
|
|
if x != nil {
|
|
return x.DeleteAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetIsPinned() bool {
|
|
if x != nil {
|
|
return x.IsPinned
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *Post) GetUserId() string {
|
|
if x != nil {
|
|
return x.UserId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetChannelId() string {
|
|
if x != nil {
|
|
return x.ChannelId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetRootId() string {
|
|
if x != nil {
|
|
return x.RootId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetOriginalId() string {
|
|
if x != nil {
|
|
return x.OriginalId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetMessage() string {
|
|
if x != nil {
|
|
return x.Message
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetMessageSource() string {
|
|
if x != nil {
|
|
return x.MessageSource
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetType() string {
|
|
if x != nil {
|
|
return x.Type
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetProps() *structpb.Struct {
|
|
if x != nil {
|
|
return x.Props
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Post) GetHashtags() string {
|
|
if x != nil {
|
|
return x.Hashtags
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetFileIds() []string {
|
|
if x != nil {
|
|
return x.FileIds
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Post) GetPendingPostId() string {
|
|
if x != nil {
|
|
return x.PendingPostId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetHasReactions() bool {
|
|
if x != nil {
|
|
return x.HasReactions
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *Post) GetRemoteId() string {
|
|
if x != nil && x.RemoteId != nil {
|
|
return *x.RemoteId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Post) GetReplyCount() int64 {
|
|
if x != nil {
|
|
return x.ReplyCount
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetLastReplyAt() int64 {
|
|
if x != nil {
|
|
return x.LastReplyAt
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Post) GetParticipants() []*User {
|
|
if x != nil {
|
|
return x.Participants
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Post) GetIsFollowing() bool {
|
|
if x != nil && x.IsFollowing != nil {
|
|
return *x.IsFollowing
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *Post) GetMetadata() *PostMetadata {
|
|
if x != nil {
|
|
return x.Metadata
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// PostList represents a list of posts with ordering information.
|
|
// Maps to model.PostList in Go.
|
|
type PostList struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Ordered list of post IDs
|
|
Order []string `protobuf:"bytes,1,rep,name=order,proto3" json:"order,omitempty"`
|
|
// Map of post ID to Post
|
|
Posts map[string]*Post `protobuf:"bytes,2,rep,name=posts,proto3" json:"posts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
|
// The ID to use for fetching the next page
|
|
NextPostId string `protobuf:"bytes,3,opt,name=next_post_id,json=nextPostId,proto3" json:"next_post_id,omitempty"`
|
|
// The ID to use for fetching the previous page
|
|
PrevPostId string `protobuf:"bytes,4,opt,name=prev_post_id,json=prevPostId,proto3" json:"prev_post_id,omitempty"`
|
|
// Whether the first post in the list is at the channel's first unread
|
|
FirstInaccessiblePostTime bool `protobuf:"varint,5,opt,name=first_inaccessible_post_time,json=firstInaccessiblePostTime,proto3" json:"first_inaccessible_post_time,omitempty"`
|
|
// Whether there are more posts to fetch
|
|
HasNext bool `protobuf:"varint,6,opt,name=has_next,json=hasNext,proto3" json:"has_next,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PostList) Reset() {
|
|
*x = PostList{}
|
|
mi := &file_post_proto_msgTypes[7]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PostList) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PostList) ProtoMessage() {}
|
|
|
|
func (x *PostList) ProtoReflect() protoreflect.Message {
|
|
mi := &file_post_proto_msgTypes[7]
|
|
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 PostList.ProtoReflect.Descriptor instead.
|
|
func (*PostList) Descriptor() ([]byte, []int) {
|
|
return file_post_proto_rawDescGZIP(), []int{7}
|
|
}
|
|
|
|
func (x *PostList) GetOrder() []string {
|
|
if x != nil {
|
|
return x.Order
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostList) GetPosts() map[string]*Post {
|
|
if x != nil {
|
|
return x.Posts
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PostList) GetNextPostId() string {
|
|
if x != nil {
|
|
return x.NextPostId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostList) GetPrevPostId() string {
|
|
if x != nil {
|
|
return x.PrevPostId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PostList) GetFirstInaccessiblePostTime() bool {
|
|
if x != nil {
|
|
return x.FirstInaccessiblePostTime
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *PostList) GetHasNext() bool {
|
|
if x != nil {
|
|
return x.HasNext
|
|
}
|
|
return false
|
|
}
|
|
|
|
var File_post_proto protoreflect.FileDescriptor
|
|
|
|
const file_post_proto_rawDesc = "" +
|
|
"\n" +
|
|
"\n" +
|
|
"post.proto\x12\x17mattermost.pluginapi.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\n" +
|
|
"user.proto\x1a\n" +
|
|
"file.proto\"\x9d\x04\n" +
|
|
"\fPostMetadata\x12:\n" +
|
|
"\x06embeds\x18\x01 \x03(\v2\".mattermost.pluginapi.v1.PostEmbedR\x06embeds\x12?\n" +
|
|
"\treactions\x18\x02 \x03(\v2!.mattermost.pluginapi.v1.ReactionR\treactions\x127\n" +
|
|
"\x05files\x18\x03 \x03(\v2!.mattermost.pluginapi.v1.FileInfoR\x05files\x12I\n" +
|
|
"\x06images\x18\x04 \x03(\v21.mattermost.pluginapi.v1.PostMetadata.ImagesEntryR\x06images\x12F\n" +
|
|
"\bpriority\x18\x05 \x01(\v2%.mattermost.pluginapi.v1.PostPriorityH\x00R\bpriority\x88\x01\x01\x12X\n" +
|
|
"\x10acknowledgements\x18\x06 \x03(\v2,.mattermost.pluginapi.v1.PostAcknowledgementR\x10acknowledgements\x1a]\n" +
|
|
"\vImagesEntry\x12\x10\n" +
|
|
"\x03key\x18\x01 \x01(\tR\x03key\x128\n" +
|
|
"\x05value\x18\x02 \x01(\v2\".mattermost.pluginapi.v1.PostImageR\x05value:\x028\x01B\v\n" +
|
|
"\t_priority\"^\n" +
|
|
"\tPostEmbed\x12\x12\n" +
|
|
"\x04type\x18\x01 \x01(\tR\x04type\x12\x10\n" +
|
|
"\x03url\x18\x02 \x01(\tR\x03url\x12+\n" +
|
|
"\x04data\x18\x03 \x01(\v2\x17.google.protobuf.StructR\x04data\"r\n" +
|
|
"\tPostImage\x12\x14\n" +
|
|
"\x05width\x18\x01 \x01(\x05R\x05width\x12\x16\n" +
|
|
"\x06height\x18\x02 \x01(\x05R\x06height\x12\x16\n" +
|
|
"\x06format\x18\x03 \x01(\tR\x06format\x12\x1f\n" +
|
|
"\vframe_count\x18\x04 \x01(\x03R\n" +
|
|
"frameCount\"\xd5\x01\n" +
|
|
"\fPostPriority\x12\x1f\n" +
|
|
"\bpriority\x18\x01 \x01(\tH\x00R\bpriority\x88\x01\x01\x12(\n" +
|
|
"\rrequested_ack\x18\x02 \x01(\bH\x01R\frequestedAck\x88\x01\x01\x12>\n" +
|
|
"\x18persistent_notifications\x18\x03 \x01(\bH\x02R\x17persistentNotifications\x88\x01\x01B\v\n" +
|
|
"\t_priorityB\x10\n" +
|
|
"\x0e_requested_ackB\x1b\n" +
|
|
"\x19_persistent_notifications\"p\n" +
|
|
"\x13PostAcknowledgement\x12\x17\n" +
|
|
"\auser_id\x18\x01 \x01(\tR\x06userId\x12\x17\n" +
|
|
"\apost_id\x18\x02 \x01(\tR\x06postId\x12'\n" +
|
|
"\x0facknowledged_at\x18\x03 \x01(\x03R\x0eacknowledgedAt\"\x95\x02\n" +
|
|
"\bReaction\x12\x17\n" +
|
|
"\auser_id\x18\x01 \x01(\tR\x06userId\x12\x17\n" +
|
|
"\apost_id\x18\x02 \x01(\tR\x06postId\x12\x1d\n" +
|
|
"\n" +
|
|
"emoji_name\x18\x03 \x01(\tR\temojiName\x12\x1b\n" +
|
|
"\tcreate_at\x18\x04 \x01(\x03R\bcreateAt\x12\x1b\n" +
|
|
"\tupdate_at\x18\x05 \x01(\x03R\bupdateAt\x12\x1b\n" +
|
|
"\tdelete_at\x18\x06 \x01(\x03R\bdeleteAt\x12 \n" +
|
|
"\tremote_id\x18\a \x01(\tH\x00R\bremoteId\x88\x01\x01\x12\"\n" +
|
|
"\n" +
|
|
"channel_id\x18\b \x01(\tH\x01R\tchannelId\x88\x01\x01B\f\n" +
|
|
"\n" +
|
|
"_remote_idB\r\n" +
|
|
"\v_channel_id\"\xe3\x06\n" +
|
|
"\x04Post\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\x17\n" +
|
|
"\aedit_at\x18\x04 \x01(\x03R\x06editAt\x12\x1b\n" +
|
|
"\tdelete_at\x18\x05 \x01(\x03R\bdeleteAt\x12\x1b\n" +
|
|
"\tis_pinned\x18\x06 \x01(\bR\bisPinned\x12\x17\n" +
|
|
"\auser_id\x18\a \x01(\tR\x06userId\x12\x1d\n" +
|
|
"\n" +
|
|
"channel_id\x18\b \x01(\tR\tchannelId\x12\x17\n" +
|
|
"\aroot_id\x18\t \x01(\tR\x06rootId\x12\x1f\n" +
|
|
"\voriginal_id\x18\n" +
|
|
" \x01(\tR\n" +
|
|
"originalId\x12\x18\n" +
|
|
"\amessage\x18\v \x01(\tR\amessage\x12%\n" +
|
|
"\x0emessage_source\x18\f \x01(\tR\rmessageSource\x12\x12\n" +
|
|
"\x04type\x18\r \x01(\tR\x04type\x12-\n" +
|
|
"\x05props\x18\x0e \x01(\v2\x17.google.protobuf.StructR\x05props\x12\x1a\n" +
|
|
"\bhashtags\x18\x0f \x01(\tR\bhashtags\x12\x19\n" +
|
|
"\bfile_ids\x18\x10 \x03(\tR\afileIds\x12&\n" +
|
|
"\x0fpending_post_id\x18\x11 \x01(\tR\rpendingPostId\x12#\n" +
|
|
"\rhas_reactions\x18\x12 \x01(\bR\fhasReactions\x12 \n" +
|
|
"\tremote_id\x18\x13 \x01(\tH\x00R\bremoteId\x88\x01\x01\x12\x1f\n" +
|
|
"\vreply_count\x18\x14 \x01(\x03R\n" +
|
|
"replyCount\x12\"\n" +
|
|
"\rlast_reply_at\x18\x15 \x01(\x03R\vlastReplyAt\x12A\n" +
|
|
"\fparticipants\x18\x16 \x03(\v2\x1d.mattermost.pluginapi.v1.UserR\fparticipants\x12&\n" +
|
|
"\fis_following\x18\x17 \x01(\bH\x01R\visFollowing\x88\x01\x01\x12F\n" +
|
|
"\bmetadata\x18\x18 \x01(\v2%.mattermost.pluginapi.v1.PostMetadataH\x02R\bmetadata\x88\x01\x01B\f\n" +
|
|
"\n" +
|
|
"_remote_idB\x0f\n" +
|
|
"\r_is_followingB\v\n" +
|
|
"\t_metadata\"\xdd\x02\n" +
|
|
"\bPostList\x12\x14\n" +
|
|
"\x05order\x18\x01 \x03(\tR\x05order\x12B\n" +
|
|
"\x05posts\x18\x02 \x03(\v2,.mattermost.pluginapi.v1.PostList.PostsEntryR\x05posts\x12 \n" +
|
|
"\fnext_post_id\x18\x03 \x01(\tR\n" +
|
|
"nextPostId\x12 \n" +
|
|
"\fprev_post_id\x18\x04 \x01(\tR\n" +
|
|
"prevPostId\x12?\n" +
|
|
"\x1cfirst_inaccessible_post_time\x18\x05 \x01(\bR\x19firstInaccessiblePostTime\x12\x19\n" +
|
|
"\bhas_next\x18\x06 \x01(\bR\ahasNext\x1aW\n" +
|
|
"\n" +
|
|
"PostsEntry\x12\x10\n" +
|
|
"\x03key\x18\x01 \x01(\tR\x03key\x123\n" +
|
|
"\x05value\x18\x02 \x01(\v2\x1d.mattermost.pluginapi.v1.PostR\x05value:\x028\x01BXZVgithub.com/mattermost/mattermost/server/public/pluginapi/grpc/generated/go/pluginapiv1b\x06proto3"
|
|
|
|
var (
|
|
file_post_proto_rawDescOnce sync.Once
|
|
file_post_proto_rawDescData []byte
|
|
)
|
|
|
|
func file_post_proto_rawDescGZIP() []byte {
|
|
file_post_proto_rawDescOnce.Do(func() {
|
|
file_post_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_post_proto_rawDesc), len(file_post_proto_rawDesc)))
|
|
})
|
|
return file_post_proto_rawDescData
|
|
}
|
|
|
|
var file_post_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
|
|
var file_post_proto_goTypes = []any{
|
|
(*PostMetadata)(nil), // 0: mattermost.pluginapi.v1.PostMetadata
|
|
(*PostEmbed)(nil), // 1: mattermost.pluginapi.v1.PostEmbed
|
|
(*PostImage)(nil), // 2: mattermost.pluginapi.v1.PostImage
|
|
(*PostPriority)(nil), // 3: mattermost.pluginapi.v1.PostPriority
|
|
(*PostAcknowledgement)(nil), // 4: mattermost.pluginapi.v1.PostAcknowledgement
|
|
(*Reaction)(nil), // 5: mattermost.pluginapi.v1.Reaction
|
|
(*Post)(nil), // 6: mattermost.pluginapi.v1.Post
|
|
(*PostList)(nil), // 7: mattermost.pluginapi.v1.PostList
|
|
nil, // 8: mattermost.pluginapi.v1.PostMetadata.ImagesEntry
|
|
nil, // 9: mattermost.pluginapi.v1.PostList.PostsEntry
|
|
(*FileInfo)(nil), // 10: mattermost.pluginapi.v1.FileInfo
|
|
(*structpb.Struct)(nil), // 11: google.protobuf.Struct
|
|
(*User)(nil), // 12: mattermost.pluginapi.v1.User
|
|
}
|
|
var file_post_proto_depIdxs = []int32{
|
|
1, // 0: mattermost.pluginapi.v1.PostMetadata.embeds:type_name -> mattermost.pluginapi.v1.PostEmbed
|
|
5, // 1: mattermost.pluginapi.v1.PostMetadata.reactions:type_name -> mattermost.pluginapi.v1.Reaction
|
|
10, // 2: mattermost.pluginapi.v1.PostMetadata.files:type_name -> mattermost.pluginapi.v1.FileInfo
|
|
8, // 3: mattermost.pluginapi.v1.PostMetadata.images:type_name -> mattermost.pluginapi.v1.PostMetadata.ImagesEntry
|
|
3, // 4: mattermost.pluginapi.v1.PostMetadata.priority:type_name -> mattermost.pluginapi.v1.PostPriority
|
|
4, // 5: mattermost.pluginapi.v1.PostMetadata.acknowledgements:type_name -> mattermost.pluginapi.v1.PostAcknowledgement
|
|
11, // 6: mattermost.pluginapi.v1.PostEmbed.data:type_name -> google.protobuf.Struct
|
|
11, // 7: mattermost.pluginapi.v1.Post.props:type_name -> google.protobuf.Struct
|
|
12, // 8: mattermost.pluginapi.v1.Post.participants:type_name -> mattermost.pluginapi.v1.User
|
|
0, // 9: mattermost.pluginapi.v1.Post.metadata:type_name -> mattermost.pluginapi.v1.PostMetadata
|
|
9, // 10: mattermost.pluginapi.v1.PostList.posts:type_name -> mattermost.pluginapi.v1.PostList.PostsEntry
|
|
2, // 11: mattermost.pluginapi.v1.PostMetadata.ImagesEntry.value:type_name -> mattermost.pluginapi.v1.PostImage
|
|
6, // 12: mattermost.pluginapi.v1.PostList.PostsEntry.value:type_name -> mattermost.pluginapi.v1.Post
|
|
13, // [13:13] is the sub-list for method output_type
|
|
13, // [13:13] is the sub-list for method input_type
|
|
13, // [13:13] is the sub-list for extension type_name
|
|
13, // [13:13] is the sub-list for extension extendee
|
|
0, // [0:13] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_post_proto_init() }
|
|
func file_post_proto_init() {
|
|
if File_post_proto != nil {
|
|
return
|
|
}
|
|
file_user_proto_init()
|
|
file_file_proto_init()
|
|
file_post_proto_msgTypes[0].OneofWrappers = []any{}
|
|
file_post_proto_msgTypes[3].OneofWrappers = []any{}
|
|
file_post_proto_msgTypes[5].OneofWrappers = []any{}
|
|
file_post_proto_msgTypes[6].OneofWrappers = []any{}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_post_proto_rawDesc), len(file_post_proto_rawDesc)),
|
|
NumEnums: 0,
|
|
NumMessages: 10,
|
|
NumExtensions: 0,
|
|
NumServices: 0,
|
|
},
|
|
GoTypes: file_post_proto_goTypes,
|
|
DependencyIndexes: file_post_proto_depIdxs,
|
|
MessageInfos: file_post_proto_msgTypes,
|
|
}.Build()
|
|
File_post_proto = out.File
|
|
file_post_proto_goTypes = nil
|
|
file_post_proto_depIdxs = nil
|
|
}
|