memos/proto/api/v2/markdown_service.proto

209 lines
3.6 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;
TABLE = 11;
TEXT = 12;
BOLD = 13;
ITALIC = 14;
BOLD_ITALIC = 15;
CODE = 16;
IMAGE = 17;
LINK = 18;
AUTO_LINK = 19;
TAG = 20;
STRIKETHROUGH = 21;
ESCAPING_CHARACTER = 22;
MATH = 23;
HIGHLIGHT = 24;
SUBSCRIPT = 25;
SUPERSCRIPT = 26;
}
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;
TableNode table_node = 12;
TextNode text_node = 13;
BoldNode bold_node = 14;
ItalicNode italic_node = 15;
BoldItalicNode bold_italic_node = 16;
CodeNode code_node = 17;
ImageNode image_node = 18;
LinkNode link_node = 19;
AutoLinkNode auto_link_node = 20;
TagNode tag_node = 21;
StrikethroughNode strikethrough_node = 22;
EscapingCharacterNode escaping_character_node = 23;
MathNode math_node = 24;
HighlightNode highlight_node = 25;
SubscriptNode subscript_node = 26;
SuperscriptNode superscript_node = 27;
}
}
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;
int32 indent = 2;
repeated Node children = 3;
}
message UnorderedListNode {
string symbol = 1;
int32 indent = 2;
repeated Node children = 3;
}
message TaskListNode {
string symbol = 1;
int32 indent = 2;
bool complete = 3;
repeated Node children = 4;
}
message MathBlockNode {
string content = 1;
}
message TableNode {
repeated string header = 1;
repeated string delimiter = 2;
message Row {
repeated string cells = 1;
}
repeated Row rows = 3;
}
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;
}
message HighlightNode {
string content = 1;
}
message SubscriptNode {
string content = 1;
}
message SuperscriptNode {
string content = 1;
}