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 ListBranches(ListBranchesRequest) returns (stream ListBranchesResponse); rpc ListCommitTags(ListCommitTagsRequest) returns (stream ListCommitTagsResponse); } 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; int32 page = 3; int32 pageSize = 4; } message ListCommitsResponse { oneof data { ListCommitsResponseHeader header = 1; Commit commit = 2; } } message ListCommitsResponseHeader { int64 total_count = 1; } message ListBranchesRequest { enum SortOption { Default = 0; Name = 1; Date = 2; } string repo_uid = 1; bool include_commit = 2; string query = 3; SortOption sort = 4; SortOrder order = 5; int32 page = 6; int32 pageSize = 7; } message ListBranchesResponse { Branch branch = 1; } message Branch { string name = 1; string sha = 2; Commit commit = 3; } 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 ListCommitTagsRequest { enum SortOption { Default = 0; Name = 1; Date = 2; } string repo_uid = 1; bool include_commit = 2; string query = 3; SortOption sort = 4; SortOrder order = 5; int32 page = 6; int32 pageSize = 7; } message ListCommitTagsResponse { CommitTag tag = 1; } message CommitTag { string name = 1; string sha = 2; bool is_annotated = 3; string title = 4; string message = 5; Signature tagger = 6; Commit commit = 7; } message Commit { string sha = 1; string title = 2; string message = 3; Signature author = 4; Signature committer = 5; } message Signature { Identity identity = 1; int64 when = 2; } message Identity { string name = 1; string email = 2; }