syntax = "proto3"; package rpc; option go_package = "github.com/harness/gitness/gitrpc/rpc"; import "shared.proto"; // RepositoryService is a service providing RPCs accessing repositories as a whole. service RepositoryService { rpc CreateRepository(stream CreateRepositoryRequest) returns (CreateRepositoryResponse); rpc GetTreeNode(GetTreeNodeRequest) returns (GetTreeNodeResponse); rpc ListTreeNodes(ListTreeNodesRequest) returns (stream ListTreeNodesResponse); rpc GetSubmodule(GetSubmoduleRequest) returns (GetSubmoduleResponse); rpc GetBlob(GetBlobRequest) returns (GetBlobResponse); rpc ListCommits(ListCommitsRequest) returns (stream ListCommitsResponse); rpc GetCommitDivergences(GetCommitDivergencesRequest) returns (GetCommitDivergencesResponse); } message CreateRepositoryRequest { oneof data { CreateRepositoryRequestHeader header = 1; FileUpload file = 2; } } message CreateRepositoryRequestHeader { string uid = 1; string default_branch = 2; } message CreateRepositoryResponse { } message GetTreeNodeRequest { string repo_uid = 1; string git_ref = 2; string path = 3; bool include_latest_commit = 4; } message GetTreeNodeResponse { TreeNode node = 1; Commit commit = 2; } message ListTreeNodesRequest { string repo_uid = 1; string git_ref = 2; string path = 3; bool include_latest_commit = 4; bool recursive = 5; } message ListTreeNodesResponse { TreeNode node = 1; Commit commit = 2; } message TreeNode { TreeNodeType type = 1; TreeNodeMode mode = 2; string sha = 3; string name = 4; string path = 5; } enum TreeNodeType { TreeNodeTypeTree = 0; TreeNodeTypeBlob = 1; TreeNodeTypeCommit = 2; } enum TreeNodeMode { TreeNodeModeFile = 0; TreeNodeModeSymlink = 1; TreeNodeModeExec = 2; TreeNodeModeTree = 3; TreeNodeModeCommit = 4; } message ListCommitsRequest { string repo_uid = 1; string git_ref = 2; string after = 3; int32 page = 4; int32 limit = 5; } message ListCommitsResponse { Commit commit = 1; } message GetBlobRequest { string repo_uid = 1; string sha = 2; int64 sizeLimit = 3; } message GetBlobResponse { Blob blob = 1; } message Blob { string sha = 1; int64 size = 2; bytes content = 3; } message GetSubmoduleRequest { string repo_uid = 1; string git_ref = 2; string path = 3; } message GetSubmoduleResponse { Submodule submodule = 1; } message Submodule { string name = 1; string url = 2; } message GetCommitDivergencesRequest { string repo_uid = 1; int32 max_count = 2; repeated CommitDivergenceRequest requests = 3; } message CommitDivergenceRequest { string from = 1; string to = 2; } message GetCommitDivergencesResponse { repeated CommitDivergence divergences = 1; } message CommitDivergence { int32 ahead = 1; int32 behind = 2; }