syntax = "proto3";
package rpc;

option go_package = "github.com/harness/gitness/gitrpc/rpc";

message ReadRequest {
  string repo_uid = 1;
}

message WriteRequest {
  string repo_uid          = 1;
  repeated EnvVar env_vars = 2;
  Identity actor           = 3;
}

message EnvVar {
  string name  = 1;
  string value = 2;
}

message FileUpload {
  oneof data {
    FileUploadHeader header = 1;
    Chunk chunk             = 2;
  }
}

message FileUploadHeader {
  string path         = 1;
}

message Chunk {
  bool eof   = 1;
  bytes data = 2;
}

enum SortOrder {
  Default = 0;
  Asc     = 1;
  Desc    = 2;
}

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

enum RefType {
  Undefined = 0;
  RefRaw = 1;
  RefBranch = 2;
  RefTag = 3;
  RefPullReqHead = 4;
  RefPullReqMerge = 5;
}