Codebase list golang-gitaly-proto / upstream/1.14.0+dfsg wiki.proto
upstream/1.14.0+dfsg

Tree @upstream/1.14.0+dfsg (Download .tar.gz)

wiki.proto @upstream/1.14.0+dfsgraw · history · blame

syntax = "proto3";

import "shared.proto";

package gitaly;

service WikiService {
  rpc WikiGetPageVersions(WikiGetPageVersionsRequest) returns (stream WikiGetPageVersionsResponse) {}
  rpc WikiWritePage(stream WikiWritePageRequest) returns (WikiWritePageResponse) {}
  rpc WikiUpdatePage(stream WikiUpdatePageRequest) returns (WikiUpdatePageResponse) {}
  rpc WikiDeletePage(WikiDeletePageRequest) returns (WikiDeletePageResponse) {}
  // WikiFindPage returns a stream because the page's raw_data field may be arbitrarily large.
  rpc WikiFindPage(WikiFindPageRequest) returns (stream WikiFindPageResponse) {}
  rpc WikiFindFile(WikiFindFileRequest) returns (stream WikiFindFileResponse) {}
  rpc WikiGetAllPages(WikiGetAllPagesRequest) returns (stream WikiGetAllPagesResponse) {}
  rpc WikiGetFormattedData(WikiGetFormattedDataRequest) returns (stream WikiGetFormattedDataResponse) {}
}

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

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