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 GetCommit(GetCommitRequest) returns (GetCommitResponse); rpc GetCommitDivergences(GetCommitDivergencesRequest) returns (GetCommitDivergencesResponse); rpc DeleteRepository(DeleteRepositoryRequest) returns (DeleteRepositoryResponse); } message CreateRepositoryRequest { oneof data { CreateRepositoryRequestHeader header = 1; FileUpload file = 2; } } message CreateRepositoryRequestHeader { WriteRequest base = 1; string default_branch = 2; Identity author = 3; Identity committer = 4; } message CreateRepositoryResponse { } message GetTreeNodeRequest { ReadRequest base = 1; string git_ref = 2; string path = 3; bool include_latest_commit = 4; } message GetTreeNodeResponse { TreeNode node = 1; Commit commit = 2; } message ListTreeNodesRequest { ReadRequest base = 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 GetCommitRequest { ReadRequest base = 1; string sha = 2; } message GetCommitResponse { Commit commit = 1; } message ListCommitsRequest { ReadRequest base = 1; string git_ref = 2; string after = 3; int32 page = 4; int32 limit = 5; } message ListCommitsResponse { Commit commit = 1; } message GetBlobRequest { ReadRequest base = 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 { ReadRequest base = 1; string git_ref = 2; string path = 3; } message GetSubmoduleResponse { Submodule submodule = 1; } message Submodule { string name = 1; string url = 2; } message GetCommitDivergencesRequest { ReadRequest base = 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; } message DeleteRepositoryRequest { WriteRequest base = 1; } message DeleteRepositoryResponse { }