syntax = "proto3";

package diffstore;

option go_package = ".;diffstore";

// DiffService implements a service for image diffs. The exposed functions
// mirror the diff.DiffStore interface.
service DiffService {
  // Same functionality as Get in the diff.DiffStore interface.
  rpc GetDiffs(GetDiffsRequest) returns (GetDiffsResponse) {}

  // Same functionality asSee UnavailableDigests in the diff.DiffStore interface.
  rpc UnavailableDigests(Empty) returns (UnavailableDigestsResponse) {}

  //Same functionality asSee PurgeDigestset in the diff.DiffStore interface.
  rpc PurgeDigests(PurgeDigestsRequest) returns (Empty) {}

  // Ping is used to test connection.
  rpc Ping(Empty) returns (Empty) {}
}

message Empty {}

message GetDiffsRequest {
  string mainDigest = 2;
  repeated string rightDigests = 3;
}

message GetDiffsResponse {
  bytes diffs = 1;
}

message PurgeDigestsRequest {
  repeated string digests = 1;
  bool purgeGCS = 2;
}

message UnavailableDigestsResponse {
  map<string, DigestFailureResponse> digestFailures = 1;
}

message DigestFailureResponse {
  string Digest = 1;
  string Reason = 2;
  int64 TS = 3;
}
