From cbc81bf209403bd25c4bf6632fc34b2abfddf03a Mon Sep 17 00:00:00 2001 From: Fendy Date: Wed, 15 Jul 2026 22:55:11 +0800 Subject: [PATCH] migrate from github --- yoresee_doc/v1/yoresee_doc.proto | 1122 ++++++++++++++++++++++++++++++ 1 file changed, 1122 insertions(+) create mode 100644 yoresee_doc/v1/yoresee_doc.proto diff --git a/yoresee_doc/v1/yoresee_doc.proto b/yoresee_doc/v1/yoresee_doc.proto new file mode 100644 index 0000000..606dec3 --- /dev/null +++ b/yoresee_doc/v1/yoresee_doc.proto @@ -0,0 +1,1122 @@ +syntax = "proto3"; + +package yoresee_doc.v1; + +option go_package = "github.com/XingfenD/yoresee_doc/pkg/gen/yoresee_doc/v1;yoreseedocpb"; + +message BaseResponse { + int32 code = 1; + string message = 2; +} + +message HealthRequest {} + +message HealthResponse { + BaseResponse base = 1; + string timestamp = 2; + string status = 3; + string version = 4; +} + +message SystemInfoRequest {} + +message SystemInfoResponse { + BaseResponse base = 1; + string system_name = 2; + string system_register_mode = 3; +} + +message UserGroupResponse { + string external_id = 1; + string name = 2; + string description = 3; + string creator_user_external_id = 4; + int32 member_count = 5; +} + +message OrgNodeResponse { + string external_id = 1; + string parent_external_id = 2; + string name = 3; + string path = 4; + string description = 5; + string creator_user_external_id = 6; + int32 member_count = 7; + repeated OrgNodeResponse children = 8; +} + +message ListUserGroupsRequest { + optional string keyword = 1; + int32 page = 2; + int32 page_size = 3; +} + +message ListUserGroupsResponse { + BaseResponse base = 1; + repeated UserGroupResponse user_groups = 2; + int64 total = 3; +} + +message GetUserGroupRequest { + string external_id = 1; +} + +message GetUserGroupResponse { + BaseResponse base = 1; + UserGroupResponse user_group = 2; +} + +message CreateUserGroupRequest { + string name = 1; + string description = 2; + repeated string member_user_external_ids = 3; +} + +message CreateUserGroupResponse { + BaseResponse base = 1; + string external_id = 2; +} + +message UpdateUserGroupRequest { + string external_id = 1; + optional string name = 2; + optional string description = 3; + bool sync_members = 4; + repeated string member_user_external_ids = 5; +} + +message UpdateUserGroupResponse { + BaseResponse base = 1; +} + +message DeleteUserGroupRequest { + string external_id = 1; +} + +message DeleteUserGroupResponse { + BaseResponse base = 1; +} + +message ListUsersRequest { + optional string keyword = 1; + int32 page = 2; + int32 page_size = 3; +} + +message ListUsersResponse { + BaseResponse base = 1; + repeated UserResponse users = 2; + int64 total = 3; +} + +message ListUserGroupMembersRequest { + string external_id = 1; + optional string keyword = 2; + int32 page = 3; + int32 page_size = 4; +} + +message ListUserGroupMembersResponse { + BaseResponse base = 1; + repeated UserResponse users = 2; + int64 total = 3; +} + +message ListOrgNodesRequest { + string parent_external_id = 1; + optional string keyword = 2; + int32 page = 3; + int32 page_size = 4; + bool include_children = 5; +} + +message ListOrgNodesResponse { + BaseResponse base = 1; + repeated OrgNodeResponse org_nodes = 2; + int64 total = 3; +} + +message GetOrgNodeRequest { + string external_id = 1; + bool include_children = 2; +} + +message GetOrgNodeResponse { + BaseResponse base = 1; + OrgNodeResponse org_node = 2; +} + +message CreateOrgNodeRequest { + string name = 1; + string description = 2; + string parent_external_id = 3; + repeated string member_user_external_ids = 4; +} + +message CreateOrgNodeResponse { + BaseResponse base = 1; + string external_id = 2; +} + +message UpdateOrgNodeRequest { + string external_id = 1; + optional string name = 2; + optional string description = 3; + bool sync_members = 4; + repeated string member_user_external_ids = 5; +} + +message UpdateOrgNodeResponse { + BaseResponse base = 1; +} + +message DeleteOrgNodeRequest { + string external_id = 1; +} + +message DeleteOrgNodeResponse { + BaseResponse base = 1; +} + +message MoveOrgNodeRequest { + string external_id = 1; + string new_parent_external_id = 2; +} + +message MoveOrgNodeResponse { + BaseResponse base = 1; +} + +message ListOrgNodeMembersRequest { + string external_id = 1; + optional string keyword = 2; + int32 page = 3; + int32 page_size = 4; +} + +message ListOrgNodeMembersResponse { + BaseResponse base = 1; + repeated UserResponse users = 2; + int64 total = 3; +} + +message SettingOption { + string label = 1; + string label_key = 2; + string value = 3; +} + +message SettingUI { + string component = 1; + repeated SettingOption options = 2; + string placeholder = 3; + string placeholder_key = 4; +} + +message SettingItem { + string key = 1; + string label = 2; + string label_key = 3; + string description = 4; + string description_key = 5; + string type = 6; + SettingUI ui = 7; + string value = 8; + string default_value = 9; + bool required = 10; + bool readonly = 11; +} + +message SettingGroup { + string key = 1; + string title = 2; + string title_key = 3; + repeated SettingItem items = 4; +} + +message GetSettingsRequest { + string scene = 1; +} + +message GetSettingsResponse { + BaseResponse base = 1; + repeated SettingGroup groups = 2; +} + +message SettingUpdate { + string key = 1; + string value = 2; +} + +message UpdateSettingsRequest { + repeated SettingUpdate updates = 1; +} + +message UpdateSettingsResponse { + BaseResponse base = 1; +} + +message UpdateUserRequest { + string external_id = 1; + optional string username = 2; + optional string email = 3; + optional string nickname = 4; + optional int32 status = 5; +} + +message UpdateUserResponse { + BaseResponse base = 1; +} + +message AuthLoginRequest { + string email = 1; + string password = 2; +} + +message AuthLoginResponse { + BaseResponse base = 1; + string token = 2; + UserResponse user = 3; +} + +message AuthRegisterRequest { + string username = 1; + string password = 2; + string email = 3; + optional string invitation_code = 4; +} + +message AuthRegisterResponse { + BaseResponse base = 1; +} + +message UpdateProfileRequest { + optional string username = 1; + optional string email = 2; + optional string nickname = 3; + optional string password = 4; + optional string avatar = 5; + optional bytes avatar_file = 6; + optional string avatar_filename = 7; + optional string avatar_content_type = 8; +} + +message UpdateProfileResponse { + BaseResponse base = 1; + UserResponse user = 2; +} + +message QuerySideBarDisplayRequest { + // scene enum string: home | user_info | manage + string scene = 1; +} + +message QuerySideBarDisplayResponse { + BaseResponse base = 1; + // tab key enum strings defined by frontend and backend convention. + repeated string display_tabs = 2; +} + +message QueryTopNavDisplayRequest {} + +message QueryTopNavDisplayResponse { + BaseResponse base = 1; + // menu key enum strings defined by frontend and backend convention. + repeated string display_menus = 2; +} + +enum DocumentType { + DOCUMENT_TYPE_UNSPECIFIED = 0; + DOCUMENT_TYPE_MARKDOWN = 1; + DOCUMENT_TYPE_TABLE = 2; + DOCUMENT_TYPE_MARKDOWN_SLIDE = 3; + DOCUMENT_TYPE_YORESEE_RICH_TEXT = 4; +} + +message DocumentResponse { + string external_id = 1; + string title = 2; + DocumentType type = 3; + string summary = 4; + reserved 5; + repeated string tags = 6; + int32 view_count = 7; + int32 edit_count = 8; + string created_at = 9; + string updated_at = 10; + repeated DocumentResponse children = 11; + bool has_children = 12; + bool is_public = 13; +} + +message GetDocumentContentRequest { + string document_external_id = 1; +} + +message GetDocumentContentResponse { + BaseResponse base = 1; + DocumentResponse document = 2; + string content = 3; +} + +message GetDocumentSettingsRequest { + string document_external_id = 1; +} + +message GetDocumentSettingsResponse { + BaseResponse base = 1; + optional bool is_public = 2; +} + +message ListRecentDocumentsRequest { + optional string start_time = 1; + optional string end_time = 2; + int32 page = 3; + int32 page_size = 4; +} + +message ListRecentDocumentsResponse { + BaseResponse base = 1; + repeated DocumentResponse documents = 2; + int64 total = 3; +} + +message RecordRecentDocumentRequest { + string document_external_id = 1; +} + +message RecordRecentDocumentResponse { + BaseResponse base = 1; +} + +message RecursiveOptions { + bool include_children = 1; + bool recursive = 2; + int32 depth = 3; +} + +message TimeRange { + optional string start = 1; + optional string end = 2; +} + +message ListDocumentsRequest { + optional string user_external_id = 1; + optional string root_document_external_id = 2; + optional string title_keyword = 3; + optional string type = 4; + reserved 5; + repeated string tags = 6; + optional TimeRange create_time_range = 7; + optional TimeRange update_time_range = 8; + optional string order_by = 9; + optional bool order_desc = 10; + int32 page = 11; + int32 page_size = 12; + optional RecursiveOptions options = 13; + optional string knowledge_base_external_id = 14; +} + +message ListDocumentsResponse { + BaseResponse base = 1; + repeated DocumentResponse documents = 2; + int64 total_count = 3; +} + +message GetOwnDocumentsRequest { + int32 page = 1; + int32 page_size = 2; + bool directory_only = 3; +} + +message GetOwnDocumentsResponse { + BaseResponse base = 1; + repeated DocumentResponse documents = 2; + int64 total_count = 3; +} + +enum CreateDocumentContainerType { + CREATE_DOCUMENT_CONTAINER_TYPE_UNSPECIFIED = 0; + CREATE_DOCUMENT_CONTAINER_TYPE_KNOWLEDGE_BASE = 1; + CREATE_DOCUMENT_CONTAINER_TYPE_OWN = 2; +} + +message CreateDocumentRequest { + string title = 1; + DocumentType type = 2; + CreateDocumentContainerType container_type = 3; + optional string knowledge_base_external_id = 4; + optional string parent_external_id = 5; + optional int64 template_id = 6; + optional bool is_public = 7; +} + +message CreateDocumentResponse { + BaseResponse base = 1; + string external_id = 2; +} + +message KnowledgeBaseResponse { + string external_id = 1; + string name = 2; + string description = 3; + string cover = 4; + bool is_public = 5; + string created_at = 6; + string updated_at = 7; + string deleted_at = 8; + string creator_user_external_id = 9; + string creator_name = 10; + int64 documents_count = 11; +} + +message ListKnowledgeBasesRequest { + bool only_mine = 1; + optional string name_keyword = 2; + optional bool is_public = 3; + optional TimeRange create_time_range = 4; + optional TimeRange update_time_range = 5; + optional string order_by = 6; + optional bool order_desc = 7; + int32 page = 8; + int32 page_size = 9; +} + +message ListKnowledgeBasesResponse { + BaseResponse base = 1; + repeated KnowledgeBaseResponse knowledge_bases = 2; + int64 total = 3; +} + +message CreateKnowledgeBaseRequest { + string name = 1; + string description = 2; + string cover = 3; + bool is_public = 4; +} + +message CreateKnowledgeBaseResponse { + BaseResponse base = 1; + string external_id = 2; +} + +message GetKnowledgeBaseRequest { + string knowledge_base_external_id = 1; + bool record_recent_log = 2; + int32 page = 3; + int32 page_size = 4; + bool directory_only = 5; +} + +message GetKnowledgeBaseResponse { + BaseResponse base = 1; + KnowledgeBaseResponse knowledge_base = 2; + repeated DocumentResponse documents = 3; + int64 total_count = 4; +} + +message UserResponse { + string external_id = 1; + string username = 2; + string email = 3; + string nickname = 4; + string avatar = 5; + int32 status = 6; + string created_at = 7; + string updated_at = 8; + optional string invitation_code = 9; +} + +message InvitationResponse { + string code = 1; + string created_by_external_id = 2; + string created_by_name = 3; + int64 used_cnt = 4; + optional int64 max_used_cnt = 5; + optional string expires_at = 6; + string created_at = 7; + bool disabled = 8; + optional string note = 9; +} + +message InvitationRecordResponse { + string code = 1; + string used_by = 2; + optional string used_by_external_id = 3; + string used_at = 4; + string status = 5; +} + +message ListInvitationsRequest { + optional int64 max_used_cnt = 2; + optional string expires_at_start = 3; + optional string expires_at_end = 4; + optional string created_at_start = 5; + optional string created_at_end = 6; + optional bool disabled = 7; + optional string order_by = 8; + optional bool order_desc = 9; + int32 page = 10; + int32 page_size = 11; + optional bool only_mine = 12; + optional string keyword = 13; +} + +message ListInvitationsResponse { + BaseResponse base = 1; + repeated InvitationResponse invitations = 2; + int64 total = 3; +} + +message CreateInvitationRequest { + optional int64 max_used_cnt = 1; + optional string expires_at = 2; + optional string note = 3; +} + +message CreateInvitationResponse { + BaseResponse base = 1; + InvitationResponse invitation = 2; +} + +message UpdateInvitationRequest { + string code = 1; + optional int64 max_used_cnt = 2; + optional string expires_at = 3; + optional bool disabled = 4; + optional string note = 5; +} + +message UpdateInvitationResponse { + BaseResponse base = 1; +} + +message DeleteInvitationRequest { + string code = 1; +} + +message DeleteInvitationResponse { + BaseResponse base = 1; +} + +message ListInvitationRecordsRequest { + optional string code = 1; + optional string status = 2; + optional string used_at_start = 3; + optional string used_at_end = 4; + int32 page = 5; + int32 page_size = 6; + optional bool only_mine = 7; + optional string keyword = 8; +} + +message ListInvitationRecordsResponse { + BaseResponse base = 1; + repeated InvitationRecordResponse records = 2; + int64 total = 3; +} + +message Notification { + string external_id = 1; + string type = 2; + string status = 3; + string title = 4; + string content = 5; + string payload = 6; + string created_at = 7; +} + +message CreateNotificationRequest { + repeated string receiver_external_ids = 1; + string type = 2; + string title = 3; + string content = 4; + string payload_json = 5; +} + +message CreateNotificationResponse { + BaseResponse base = 1; +} + +message ListNotificationsRequest { + int32 page = 1; + int32 page_size = 2; + optional string status = 3; +} + +message ListNotificationsResponse { + BaseResponse base = 1; + repeated Notification notifications = 2; + int64 total = 3; +} + +message MarkNotificationsReadRequest { + repeated string external_ids = 1; +} + +message MarkNotificationsReadResponse { + BaseResponse base = 1; +} + +message MarkAllNotificationsReadRequest {} + +message MarkAllNotificationsReadResponse { + BaseResponse base = 1; +} + +message UpdateDocumentRequest { + string external_id = 1; + optional string title = 2; + optional string knowledge_base_external_id = 3; + optional string parent_external_id = 4; + optional string content = 5; + optional CreateDocumentContainerType move_to_container = 6; +} + +message DocumentComment { + string external_id = 1; + string document_external_id = 2; + string parent_external_id = 3; + string content = 4; + string creator_user_external_id = 5; + string creator_name = 6; + string creator_avatar = 7; + string created_at = 8; + string anchor_id = 9; + string quote = 10; +} + +message CreateDocumentCommentRequest { + string document_external_id = 1; + string content = 2; + optional string parent_external_id = 3; + optional string anchor_id = 4; + optional string quote = 5; + repeated string mentioned_user_external_ids = 6; +} + +message CreateDocumentCommentResponse { + BaseResponse base = 1; + DocumentComment comment = 2; +} + +message ListDocumentCommentsRequest { + string document_external_id = 1; + int32 page = 2; + int32 page_size = 3; +} + +message ListDocumentCommentsResponse { + BaseResponse base = 1; + repeated DocumentComment comments = 2; + int64 total = 3; +} + +message DeleteDocumentCommentRequest { + string external_id = 1; +} + +message DeleteDocumentCommentResponse { + BaseResponse base = 1; +} + +message UpdateDocumentCommentRequest { + string external_id = 1; + string content = 2; +} + +message UpdateDocumentCommentResponse { + BaseResponse base = 1; + DocumentComment comment = 2; +} + +message UpdateDocumentResponse { + BaseResponse base = 1; +} + +message UpdateDocumentMetaRequest { + string external_id = 1; + optional string title = 2; + optional string summary = 3; + repeated string tags = 4; + reserved 5, 6; +} + +message UpdateDocumentMetaResponse { + BaseResponse base = 1; +} + +message UpdateDocumentSettingsRequest { + string external_id = 1; + optional bool is_public = 2; +} + +message UpdateDocumentSettingsResponse { + BaseResponse base = 1; + optional bool is_public = 2; +} + +message AttachmentResponse { + string external_id = 1; + string document_external_id = 2; + string name = 3; + int64 size = 4; + string mime_type = 5; + string path = 6; + string url = 7; + string created_at = 8; + string updated_at = 9; +} + +message UploadDocumentAttachmentRequest { + string document_external_id = 1; + bytes file_content = 2; + string file_name = 3; + optional string content_type = 4; +} + +message UploadDocumentAttachmentResponse { + BaseResponse base = 1; + AttachmentResponse attachment = 2; +} + +message ListDocumentAttachmentsRequest { + string document_external_id = 1; +} + +message ListDocumentAttachmentsResponse { + BaseResponse base = 1; + repeated AttachmentResponse attachments = 2; +} + +message DeleteDocumentAttachmentRequest { + string document_external_id = 1; + string attachment_external_id = 2; +} + +message DeleteDocumentAttachmentResponse { + BaseResponse base = 1; +} + +message DocumentVersionResponse { + int32 version = 1; + string title = 2; + string content = 3; + string change_summary = 4; + string created_at = 5; +} + +message ListDocumentVersionsRequest { + string document_external_id = 1; + int32 page = 2; + int32 page_size = 3; +} + +message ListDocumentVersionsResponse { + BaseResponse base = 1; + repeated DocumentVersionResponse versions = 2; + int64 total = 3; +} + +message GetDocumentVersionContentRequest { + string document_external_id = 1; + int32 version = 2; +} + +message GetDocumentVersionContentResponse { + BaseResponse base = 1; + DocumentVersionResponse version = 2; +} + +message GetDocumentYjsSnapshotRequest { + string document_external_id = 1; +} + +message GetDocumentYjsSnapshotResponse { + BaseResponse base = 1; + bytes state = 2; +} + +message SaveDocumentYjsSnapshotRequest { + string document_external_id = 1; + bytes state = 2; +} + +message SaveDocumentYjsSnapshotResponse { + BaseResponse base = 1; +} + +// listRecentKnowledgeBasesRequest requests the caller's recent knowledge bases. +// Note: This RPC does not accept any external user identifiers. The backend +// resolves the user from the authenticated context. +message ListRecentKnowledgeBasesRequest { + // Optional inclusive start time (RFC3339). If omitted, no lower bound. + optional string start_time = 1; + // Optional inclusive end time (RFC3339). If omitted, no upper bound. + optional string end_time = 2; + // 1-based page index. Defaults to 1 when <= 0. + int32 page = 3; + // Page size. Defaults to 10 when <= 0, capped by server. + int32 page_size = 4; +} + +// listRecentKnowledgeBasesResponse contains the recent knowledge bases. +message ListRecentKnowledgeBasesResponse { + BaseResponse base = 1; + repeated KnowledgeBaseResponse knowledge_bases = 2; + int64 total = 3; +} + +enum CreateTemplateContainer { + OWN_TEMPLATE = 0; + KNOWLEDGEBASE_TEMPLATE = 1; + PUBLIC_TEMPLATE = 2; +} + +message CreateTemplateRequest { + CreateTemplateContainer target_container = 1; + string knowledge_base_id = 2; + string template_content = 3; + DocumentType type = 4; +} + +message CreateTemplateResponse { + BaseResponse base = 1; +} + +message TemplateResponse { + int64 id = 1; + string name = 2; + string description = 3; + string content = 4; + string scope = 5; + string knowledge_base_external_id = 6; + repeated string tags = 7; + string created_at = 8; + string updated_at = 9; + DocumentType type = 10; +} + +message ListTemplatesRequest { + bool only_mine = 1; + optional CreateTemplateContainer target_container = 2; + optional string knowledge_base_id = 3; + optional string name_keyword = 4; + optional string order_by = 5; + optional bool order_desc = 6; + int32 page = 7; + int32 page_size = 8; + optional DocumentType type = 9; +} + +message ListTemplatesResponse { + BaseResponse base = 1; + repeated TemplateResponse templates = 2; + int64 total = 3; +} + +message GetTemplateRequest { + int64 template_id = 1; + bool record_recent_log = 2; +} + +message GetTemplateResponse { + BaseResponse base = 1; + TemplateResponse template = 2; +} + +message UpdateTemplateSettingsRequest { + int64 template_id = 1; + optional string name = 2; + optional string description = 3; + optional bool is_public = 4; +} + +message UpdateTemplateSettingsResponse { + BaseResponse base = 1; +} + +message DeleteDocumentRequest { + string document_external_id = 1; +} + +message DeleteDocumentResponse { + BaseResponse base = 1; +} + +message ListRecentTemplatesRequest { + optional string start_time = 1; + optional string end_time = 2; + int32 page = 3; + int32 page_size = 4; +} + +message ListRecentTemplatesResponse { + BaseResponse base = 1; + repeated TemplateResponse templates = 2; + int64 total = 3; +} + +// authService provides authentication APIs. +service AuthService { + // login authenticates a user and returns a token. + rpc Login(AuthLoginRequest) returns (AuthLoginResponse); + // register creates a new user account. + rpc Register(AuthRegisterRequest) returns (AuthRegisterResponse); + // update current user profile. + rpc UpdateProfile(UpdateProfileRequest) returns (UpdateProfileResponse); + // query side bar visible tabs for scene. + rpc QuerySideBarDisplay(QuerySideBarDisplayRequest) returns (QuerySideBarDisplayResponse); + // query top nav visible menus. + rpc QueryTopNavDisplay(QueryTopNavDisplayRequest) returns (QueryTopNavDisplayResponse); +} + +// documentService provides document APIs. +service DocumentService { + // listDocuments lists documents with filters and pagination. + rpc ListDocuments(ListDocumentsRequest) returns (ListDocumentsResponse); + // getDocumentContent fetches a document with its content. + rpc GetDocumentContent(GetDocumentContentRequest) returns (GetDocumentContentResponse); + // getDocumentSettings fetches document metadata for settings page. + rpc GetDocumentSettings(GetDocumentSettingsRequest) returns (GetDocumentSettingsResponse); + // list recent documents for caller. + rpc ListRecentDocuments(ListRecentDocumentsRequest) returns (ListRecentDocumentsResponse); + // record recent document for caller. + rpc RecordRecentDocument(RecordRecentDocumentRequest) returns (RecordRecentDocumentResponse); + // getDocumentYjsSnapshot fetches yjs snapshot by document external id. + rpc GetDocumentYjsSnapshot(GetDocumentYjsSnapshotRequest) returns (GetDocumentYjsSnapshotResponse); + // saveDocumentYjsSnapshot saves yjs snapshot state. + rpc SaveDocumentYjsSnapshot(SaveDocumentYjsSnapshotRequest) returns (SaveDocumentYjsSnapshotResponse); + // getOwnDocuments lists documents owned by the caller. + rpc GetOwnDocuments(GetOwnDocumentsRequest) returns (GetOwnDocumentsResponse); + // createDocument creates a new document. + rpc CreateDocument(CreateDocumentRequest) returns (CreateDocumentResponse); + // updateDocument updates an existing document. + rpc UpdateDocument(UpdateDocumentRequest) returns (UpdateDocumentResponse); + // updateDocumentMeta updates document metadata without changing content. + rpc UpdateDocumentMeta(UpdateDocumentMetaRequest) returns (UpdateDocumentMetaResponse); + // updateDocumentSettings updates settings fields for document. + rpc UpdateDocumentSettings(UpdateDocumentSettingsRequest) returns (UpdateDocumentSettingsResponse); + // upload attachment and bind to document. + rpc UploadDocumentAttachment(UploadDocumentAttachmentRequest) returns (UploadDocumentAttachmentResponse); + // list attachments by document. + rpc ListDocumentAttachments(ListDocumentAttachmentsRequest) returns (ListDocumentAttachmentsResponse); + // delete an attachment from document. + rpc DeleteDocumentAttachment(DeleteDocumentAttachmentRequest) returns (DeleteDocumentAttachmentResponse); + // list document history versions. + rpc ListDocumentVersions(ListDocumentVersionsRequest) returns (ListDocumentVersionsResponse); + // get document history version content. + rpc GetDocumentVersionContent(GetDocumentVersionContentRequest) returns (GetDocumentVersionContentResponse); + // save document as template + rpc CreateTemplate(CreateTemplateRequest) returns (CreateTemplateResponse); + // list templates with filters and pagination. + rpc ListTemplates(ListTemplatesRequest) returns (ListTemplatesResponse); + // list recent templates for caller. + rpc ListRecentTemplates(ListRecentTemplatesRequest) returns (ListRecentTemplatesResponse); + // get template by id. + rpc GetTemplate(GetTemplateRequest) returns (GetTemplateResponse); + // update template settings. + rpc UpdateTemplateSettings(UpdateTemplateSettingsRequest) returns (UpdateTemplateSettingsResponse); + // delete a document. + rpc DeleteDocument(DeleteDocumentRequest) returns (DeleteDocumentResponse); +} + +// commentService provides document comment APIs. +service CommentService { + // create a comment for document. + rpc CreateDocumentComment(CreateDocumentCommentRequest) returns (CreateDocumentCommentResponse); + // list comments for document. + rpc ListDocumentComments(ListDocumentCommentsRequest) returns (ListDocumentCommentsResponse); + // delete a comment. + rpc DeleteDocumentComment(DeleteDocumentCommentRequest) returns (DeleteDocumentCommentResponse); + // update a comment. + rpc UpdateDocumentComment(UpdateDocumentCommentRequest) returns (UpdateDocumentCommentResponse); +} + +// knowledgeBaseService provides knowledge base management and discovery APIs. +service KnowledgeBaseService { + // list knowledge bases with filters and pagination. + rpc ListKnowledgeBases(ListKnowledgeBasesRequest) returns (ListKnowledgeBasesResponse); + // get a knowledge base by external ID, optionally recording a recent-access log. + rpc GetKnowledgeBase(GetKnowledgeBaseRequest) returns (GetKnowledgeBaseResponse); + // create a knowledge base for the caller. + rpc CreateKnowledgeBase(CreateKnowledgeBaseRequest) returns (CreateKnowledgeBaseResponse); + // list the caller's recent knowledge bases. User identity is derived from auth context. + rpc ListRecentKnowledgeBases(ListRecentKnowledgeBasesRequest) returns (ListRecentKnowledgeBasesResponse); +} + +// systemService provides system health and info APIs. +service SystemService { + // health returns service health status. + rpc Health(HealthRequest) returns (HealthResponse); + // systemInfo returns system info and config. + rpc SystemInfo(SystemInfoRequest) returns (SystemInfoResponse); +} + +// settingService provides settings schema and update APIs. +service SettingService { + // get settings schema with current values. + rpc GetSettings(GetSettingsRequest) returns (GetSettingsResponse); + // update settings values. + rpc UpdateSettings(UpdateSettingsRequest) returns (UpdateSettingsResponse); +} + +// membershipService provides user group and org structure management APIs. +service MembershipService { + // list user groups with pagination. + rpc ListUserGroups(ListUserGroupsRequest) returns (ListUserGroupsResponse); + // get a user group by external id. + rpc GetUserGroup(GetUserGroupRequest) returns (GetUserGroupResponse); + // create user group and optional members. + rpc CreateUserGroup(CreateUserGroupRequest) returns (CreateUserGroupResponse); + // update user group metadata and optional member set. + rpc UpdateUserGroup(UpdateUserGroupRequest) returns (UpdateUserGroupResponse); + // delete a user group and its memberships. + rpc DeleteUserGroup(DeleteUserGroupRequest) returns (DeleteUserGroupResponse); + // list users for member management. + rpc ListUsers(ListUsersRequest) returns (ListUsersResponse); + // update user info or status. + rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse); + // list user group members with pagination. + rpc ListUserGroupMembers(ListUserGroupMembersRequest) returns (ListUserGroupMembersResponse); + // list org nodes with pagination. + rpc ListOrgNodes(ListOrgNodesRequest) returns (ListOrgNodesResponse); + // get an org node by external id. + rpc GetOrgNode(GetOrgNodeRequest) returns (GetOrgNodeResponse); + // create org node and optional members. + rpc CreateOrgNode(CreateOrgNodeRequest) returns (CreateOrgNodeResponse); + // update org node metadata and optional member set. + rpc UpdateOrgNode(UpdateOrgNodeRequest) returns (UpdateOrgNodeResponse); + // delete an org node and its memberships. + rpc DeleteOrgNode(DeleteOrgNodeRequest) returns (DeleteOrgNodeResponse); + // move an org node to a new parent. + rpc MoveOrgNode(MoveOrgNodeRequest) returns (MoveOrgNodeResponse); + // list org node members with pagination. + rpc ListOrgNodeMembers(ListOrgNodeMembersRequest) returns (ListOrgNodeMembersResponse); +} + +// invitationService provides invitation management APIs. +service InvitationService { + // create invitation code. + rpc CreateInvitation(CreateInvitationRequest) returns (CreateInvitationResponse); + // list invitations with filters and pagination. + rpc ListInvitations(ListInvitationsRequest) returns (ListInvitationsResponse); + // update invitation code. + rpc UpdateInvitation(UpdateInvitationRequest) returns (UpdateInvitationResponse); + // delete invitation code. + rpc DeleteInvitation(DeleteInvitationRequest) returns (DeleteInvitationResponse); + // list invitation usage records. + rpc ListInvitationRecords(ListInvitationRecordsRequest) returns (ListInvitationRecordsResponse); +} + +// notificationService provides notification APIs. +service NotificationService { + // create notifications (single or batch). + rpc CreateNotification(CreateNotificationRequest) returns (CreateNotificationResponse); + // list notifications for current user. + rpc ListNotifications(ListNotificationsRequest) returns (ListNotificationsResponse); + // mark notifications as read. + rpc MarkNotificationsRead(MarkNotificationsReadRequest) returns (MarkNotificationsReadResponse); + // mark all notifications as read. + rpc MarkAllNotificationsRead(MarkAllNotificationsReadRequest) returns (MarkAllNotificationsReadResponse); +} \ No newline at end of file