Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2019-07-05 12:28:16 +0300
committerZeger-Jan van de Weg <git@zjvandeweg.nl>2019-07-05 12:28:16 +0300
commitb9c9aec5cf53de4ea1a7fc3b067dd56d7828e080 (patch)
tree2693a49918682c12ea22e4085b8c569ac9e62497 /proto/wiki.proto
parent873a408c49ef1b34fce0cd47a80aa192f426d7c0 (diff)
Start preparation for migrating .proto files
Diffstat (limited to 'proto/wiki.proto')
-rw-r--r--proto/wiki.proto204
1 files changed, 204 insertions, 0 deletions
diff --git a/proto/wiki.proto b/proto/wiki.proto
new file mode 100644
index 000000000..00f0a9c8f
--- /dev/null
+++ b/proto/wiki.proto
@@ -0,0 +1,204 @@
+syntax = "proto3";
+
+import "shared.proto";
+
+package gitaly;
+
+option go_package = "gitlab.com/gitlab-org/gitaly/proto/go/gitalypb";
+
+service WikiService {
+ rpc WikiGetPageVersions(WikiGetPageVersionsRequest) returns (stream WikiGetPageVersionsResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+ rpc WikiWritePage(stream WikiWritePageRequest) returns (WikiWritePageResponse) {
+ option (op_type) = {
+ op: MUTATOR
+ target_repository_field: "1"
+ };
+ }
+ rpc WikiUpdatePage(stream WikiUpdatePageRequest) returns (WikiUpdatePageResponse) {
+ option (op_type) = {
+ op: MUTATOR
+ target_repository_field: "1"
+ };
+ }
+ rpc WikiDeletePage(WikiDeletePageRequest) returns (WikiDeletePageResponse) {
+ option (op_type) = {
+ op: MUTATOR
+ target_repository_field: "1"
+ };
+ }
+ // WikiFindPage returns a stream because the page's raw_data field may be arbitrarily large.
+ rpc WikiFindPage(WikiFindPageRequest) returns (stream WikiFindPageResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+ rpc WikiFindFile(WikiFindFileRequest) returns (stream WikiFindFileResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+ rpc WikiGetAllPages(WikiGetAllPagesRequest) returns (stream WikiGetAllPagesResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+ rpc WikiListPages(WikiListPagesRequest) returns (stream WikiListPagesResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+ rpc WikiGetFormattedData(WikiGetFormattedDataRequest) returns (stream WikiGetFormattedDataResponse) {
+ option (op_type).op = ACCESSOR;
+ }
+}
+
+message WikiCommitDetails {
+ bytes name = 1;
+ bytes email = 2;
+ bytes message = 3;
+ int32 user_id = 4;
+ bytes user_name = 5;
+}
+
+message WikiPageVersion {
+ GitCommit commit = 1;
+ string format = 2;
+}
+
+message WikiPage {
+ // These fields are only present in the first message of a WikiPage stream
+ WikiPageVersion version = 1;
+ string format = 2;
+ bytes title = 3;
+ string url_path = 4;
+ bytes path = 5;
+ bytes name = 6;
+ bool historical = 7;
+
+ // This field is present in all messages of a WikiPage stream
+ bytes raw_data = 8;
+}
+
+message WikiGetPageVersionsRequest {
+ Repository repository = 1;
+ bytes page_path = 2;
+
+ int32 page = 3;
+ int32 per_page = 4;
+}
+
+message WikiGetPageVersionsResponse {
+ repeated WikiPageVersion versions = 1;
+}
+
+// This message is sent in a stream because the 'content' field may be large.
+message WikiWritePageRequest {
+ // These following fields are only present in the first message.
+ Repository repository = 1;
+ bytes name = 2;
+ string format = 3;
+ WikiCommitDetails commit_details = 4;
+ // This field is present in all messages.
+ bytes content = 5;
+}
+
+message WikiWritePageResponse {
+ bytes duplicate_error = 1;
+}
+
+message WikiUpdatePageRequest {
+ // There fields are only present in the first message of the stream
+ Repository repository = 1;
+ bytes page_path = 2;
+ bytes title = 3;
+ string format = 4;
+ WikiCommitDetails commit_details = 5;
+
+ // This field is present in all messages
+ bytes content = 6;
+}
+
+message WikiUpdatePageResponse {
+ bytes error = 1;
+}
+
+message WikiDeletePageRequest {
+ Repository repository = 1;
+ bytes page_path = 2;
+ WikiCommitDetails commit_details = 3;
+}
+
+message WikiDeletePageResponse {}
+
+message WikiFindPageRequest {
+ Repository repository = 1;
+ bytes title = 2;
+ bytes revision = 3;
+ bytes directory = 4;
+}
+
+// WikiFindPageResponse is a stream because we need multiple WikiPage
+// messages to send the raw_data field.
+message WikiFindPageResponse {
+ WikiPage page = 1;
+}
+
+message WikiFindFileRequest {
+ Repository repository = 1;
+ bytes name = 2;
+ // Optional: revision
+ bytes revision = 3;
+}
+
+message WikiFindFileResponse {
+ // If 'name' is empty, the file was not found.
+ bytes name = 1;
+ string mime_type = 2;
+ bytes raw_data = 3;
+ bytes path = 4;
+}
+
+message WikiGetAllPagesRequest {
+ Repository repository = 1;
+ // Passing 0 means no limit is applied
+ uint32 limit = 2;
+ bool direction_desc = 3;
+
+ enum SortBy {
+ TITLE = 0;
+ CREATED_AT = 1;
+ }
+ SortBy sort = 4;
+}
+
+// The WikiGetAllPagesResponse stream is a concatenation of WikiPage streams
+message WikiGetAllPagesResponse {
+ WikiPage page = 1;
+ // When end_of_page is true it signals a change of page for the next Response message (if any)
+ bool end_of_page = 2;
+}
+
+message WikiGetFormattedDataRequest {
+ Repository repository = 1;
+ bytes title = 2;
+ bytes revision = 3;
+ bytes directory = 4;
+}
+
+message WikiGetFormattedDataResponse {
+ bytes data = 1;
+}
+
+message WikiListPagesRequest {
+ Repository repository = 1;
+ // Passing 0 means no limit is applied
+ uint32 limit = 2;
+ bool direction_desc = 3;
+
+ enum SortBy {
+ TITLE = 0;
+ CREATED_AT = 1;
+ }
+ SortBy sort = 4;
+
+ uint32 offset = 5;
+}
+
+// The WikiListPagesResponse stream is a concatenation of WikiPage streams without content
+message WikiListPagesResponse {
+ WikiPage page = 1;
+}