Files
proto/yoresee_doc/v1/yoresee_doc.proto
T
2026-07-15 22:55:11 +08:00

1122 lines
29 KiB
Protocol Buffer

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);
}