syntax = "proto3"; package komp_ac.document_data; service DocumentDataService { rpc RegisterTypstTemplate(RegisterTypstTemplateRequest) returns (RegisterTypstTemplateResponse); rpc ListTypstTemplates(ListTypstTemplatesRequest) returns (ListTypstTemplatesResponse); rpc ListEnabledTypstTemplates(ListEnabledTypstTemplatesRequest) returns (ListTypstTemplatesResponse); rpc SaveDocument(SaveDocumentRequest) returns (SaveDocumentResponse); rpc UpdateDocument(UpdateDocumentRequest) returns (UpdateDocumentResponse); rpc GetDocuments(GetDocumentsRequest) returns (GetDocumentsResponse); rpc GetDocument(GetDocumentRequest) returns (GetDocumentResponse); rpc GetDocumentVersion(GetDocumentVersionRequest) returns (GetDocumentVersionResponse); rpc GetTypstTemplateVersion(GetTypstTemplateVersionRequest) returns (GetTypstTemplateVersionResponse); } message SourceRecord { string profile_name = 1; string table_name = 2; int64 table_def_id = 3; int64 record_id = 4; } message SaveDocumentRequest { repeated SourceRecord source_records = 1; string template_name = 2; string data_json = 3; int64 expected_template_version_id = 4; } message RegisterTypstTemplateRequest { string template_name = 1; string input_table_name = 2; string typst_source = 3; string typst_compiler_version = 4; } message RegisterTypstTemplateResponse { TypstTemplateVersion template_version = 1; } message ListTypstTemplatesRequest { string search = 1; uint32 limit = 2; } message ListTypstTemplatesResponse { repeated TypstTemplateVersion templates = 1; } message ListEnabledTypstTemplatesRequest { string profile_name = 1; } message SaveDocumentResponse { int64 document_id = 1; int64 snapshot_id = 2; int32 version_number = 3; int64 template_version_id = 4; int32 template_version = 5; } message UpdateDocumentRequest { int64 document_id = 1; string data_json = 2; } message UpdateDocumentResponse { int64 document_id = 1; int64 snapshot_id = 2; int32 version_number = 3; } message GetDocumentsRequest { optional int64 schema_id = 1; uint32 limit = 2; optional string template_name = 3; optional string source_profile_name = 4; optional string source_table_name = 5; } message Document { int64 snapshot_id = 1; int64 document_id = 2; int64 schema_id = 3; repeated SourceRecord source_records = 4; string data_json = 5; string change_kind = 6; int32 version_number = 7; string created_at = 8; string updated_at = 9; int64 template_version_id = 10; string data_sha256 = 11; } message GetDocumentsResponse { repeated Document documents = 1; } message GetDocumentRequest { int64 document_id = 1; } message GetDocumentResponse { optional Document document = 1; } message GetDocumentVersionRequest { int64 document_id = 1; int32 version_number = 2; } message GetDocumentVersionResponse { optional Document document = 1; } message GetTypstTemplateVersionRequest { int64 template_version_id = 1; int64 document_id = 2; } message TypstTemplateVersion { int64 id = 1; int64 template_id = 2; string template_name = 3; int32 version = 4; string source_code = 5; string source_sha256 = 6; string typst_compiler_version = 7; string created_at = 8; string input_table_name = 9; repeated string field_paths = 10; repeated TypstTemplateFieldBinding field_bindings = 11; } // One profile-specific source mapping for an enabled template version. message TypstTemplateFieldBinding { string field_path = 1; string collection_path = 2; string column_name = 3; string source_table_name = 4; string source_column_name = 5; } message GetTypstTemplateVersionResponse { optional TypstTemplateVersion template_version = 1; }