memos/proto/api/v2/markdown_service.proto
2024-01-08 20:57:44 +08:00

176 lines
3 KiB
Protocol Buffer

syntax = "proto3";
package memos.api.v2;
import "google/api/annotations.proto";
option go_package = "gen/api/v2";
service MarkdownService {
rpc ParseMarkdown(ParseMarkdownRequest) returns (ParseMarkdownResponse) {
option (google.api.http) = {
post: "/api/v2/markdown"
body: "*"
};
}
}
message ParseMarkdownRequest {
string markdown = 1;
}
message ParseMarkdownResponse {
repeated Node nodes = 1;
}
enum NodeType {
NODE_UNSPECIFIED = 0;
LINE_BREAK = 1;
PARAGRAPH = 2;
CODE_BLOCK = 3;
HEADING = 4;
HORIZONTAL_RULE = 5;
BLOCKQUOTE = 6;
ORDERED_LIST = 7;
UNORDERED_LIST = 8;
TASK_LIST = 9;
MATH_BLOCK = 10;
TEXT = 11;
BOLD = 12;
ITALIC = 13;
BOLD_ITALIC = 14;
CODE = 15;
IMAGE = 16;
LINK = 17;
AUTO_LINK = 18;
TAG = 19;
STRIKETHROUGH = 20;
ESCAPING_CHARACTER = 21;
MATH = 22;
}
message Node {
NodeType type = 1;
oneof node {
LineBreakNode line_break_node = 2;
ParagraphNode paragraph_node = 3;
CodeBlockNode code_block_node = 4;
HeadingNode heading_node = 5;
HorizontalRuleNode horizontal_rule_node = 6;
BlockquoteNode blockquote_node = 7;
OrderedListNode ordered_list_node = 8;
UnorderedListNode unordered_list_node = 9;
TaskListNode task_list_node = 10;
MathBlockNode math_block_node = 11;
TextNode text_node = 12;
BoldNode bold_node = 13;
ItalicNode italic_node = 14;
BoldItalicNode bold_italic_node = 15;
CodeNode code_node = 16;
ImageNode image_node = 17;
LinkNode link_node = 18;
AutoLinkNode auto_link_node = 19;
TagNode tag_node = 20;
StrikethroughNode strikethrough_node = 21;
EscapingCharacterNode escaping_character_node = 22;
MathNode math_node = 23;
}
}
message LineBreakNode {}
message ParagraphNode {
repeated Node children = 1;
}
message CodeBlockNode {
string language = 1;
string content = 2;
}
message HeadingNode {
int32 level = 1;
repeated Node children = 2;
}
message HorizontalRuleNode {
string symbol = 1;
}
message BlockquoteNode {
repeated Node children = 1;
}
message OrderedListNode {
string number = 1;
repeated Node children = 2;
}
message UnorderedListNode {
string symbol = 1;
repeated Node children = 2;
}
message TaskListNode {
string symbol = 1;
bool complete = 2;
repeated Node children = 3;
}
message MathBlockNode {
string content = 1;
}
message TextNode {
string content = 1;
}
message BoldNode {
string symbol = 1;
repeated Node children = 2;
}
message ItalicNode {
string symbol = 1;
string content = 2;
}
message BoldItalicNode {
string symbol = 1;
string content = 2;
}
message CodeNode {
string content = 1;
}
message ImageNode {
string alt_text = 1;
string url = 2;
}
message LinkNode {
string text = 1;
string url = 2;
}
message AutoLinkNode {
string url = 1;
bool is_raw_text = 2;
}
message TagNode {
string content = 1;
}
message StrikethroughNode {
string content = 1;
}
message EscapingCharacterNode {
string symbol = 1;
}
message MathNode {
string content = 1;
}