// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

syntax = "proto3";

package monorail;

option go_package = "infra/monorailv2/api/api_proto;monorail";

import "google/protobuf/empty.proto";
import "api/api_proto/common.proto";
import "api/api_proto/issue_objects.proto";
import "api/api_proto/project_objects.proto";


service Issues {
  rpc CreateIssue (CreateIssueRequest) returns (IssueResponse) {}
  rpc GetIssue (GetIssueRequest) returns (IssueResponse) {}
  rpc ListIssues (ListIssuesRequest) returns (ListIssuesResponse) {}
  rpc ListReferencedIssues(ListReferencedIssuesRequest) returns (ListReferencedIssuesResponse) {}
  rpc ListApplicableFieldDefs(ListApplicableFieldDefsRequest) returns (ListApplicableFieldDefsResponse) {}
  rpc UpdateIssue (UpdateIssueRequest) returns (IssueResponse) {}
  rpc StarIssue (StarIssueRequest) returns (StarIssueResponse) {}
  rpc IsIssueStarred (IsIssueStarredRequest) returns (IsIssueStarredResponse) {}
  rpc ListStarredIssues (ListStarredIssuesRequest) returns (ListStarredIssuesResponse) {}
  // There is no CreateComment method because comments are created by updates,
  // which may have just comment content and no delta.
  // There is no GetComment method, clients should use ListComments.
  rpc ListComments (ListCommentsRequest) returns (ListCommentsResponse) {}
  rpc ListActivities (ListActivitiesRequest) returns (ListActivitiesResponse) {}
  rpc DeleteComment (DeleteCommentRequest) returns (google.protobuf.Empty) {}
  rpc BulkUpdateApprovals (BulkUpdateApprovalsRequest) returns (BulkUpdateApprovalsResponse) {}
  rpc UpdateApproval (UpdateApprovalRequest) returns (UpdateApprovalResponse) {}
  rpc ConvertIssueApprovalsTemplate (ConvertIssueApprovalsTemplateRequest) returns (ConvertIssueApprovalsTemplateResponse) {}
  rpc IssueSnapshot (IssueSnapshotRequest) returns (IssueSnapshotResponse) {}
  rpc PresubmitIssue (PresubmitIssueRequest) returns (PresubmitIssueResponse) {}
  rpc RerankBlockedOnIssues (RerankBlockedOnIssuesRequest) returns (RerankBlockedOnIssuesResponse) {}
  rpc DeleteIssue (DeleteIssueRequest) returns (DeleteIssueResponse) {}
  rpc DeleteIssueComment (DeleteIssueCommentRequest) returns (DeleteIssueCommentResponse) {}
  rpc DeleteAttachment (DeleteAttachmentRequest) returns (DeleteAttachmentResponse) {}
  rpc FlagIssues (FlagIssuesRequest) returns (FlagIssuesResponse) {}
  rpc FlagComment (FlagCommentRequest) returns (FlagCommentResponse) {}
  rpc ListIssuePermissions (ListIssuePermissionsRequest) returns (ListIssuePermissionsResponse) {}
  rpc MoveIssue (MoveIssueRequest) returns (MoveIssueResponse) {}
  rpc CopyIssue (CopyIssueRequest) returns (CopyIssueResponse) {}
}


// Next available tag: 4
message CreateIssueRequest {
  string project_name = 2;
  Issue issue = 3;
}


// Next available tag: 3
message GetIssueRequest {
  IssueRef issue_ref = 2;
}


// Next available tag: 3
message IssueResponse {
  Issue issue = 1;
  IssueRef moved_to_ref = 2;
}


// Next available tag: 8
message ListIssuesRequest {
  string query = 2;
  uint32 canned_query = 3;
  repeated string project_names = 4;
  Pagination pagination = 5;
  string group_by_spec = 6;
  string sort_spec = 7;
}


// Next available tag: 3
message ListIssuesResponse {
  repeated Issue issues = 1;
  uint32 total_results = 2;
}


// Next available tag: 3
message ListReferencedIssuesRequest {
  repeated IssueRef issue_refs = 2;
}


// Next available tag: 2
message ListReferencedIssuesResponse {
  // TODO(ehmaldonado): monorail:4033 Rename these fields to issues rather than
  // refs.
  repeated Issue open_refs = 1;
  repeated Issue closed_refs = 2;
}


// Next available tag: 3
message ListApplicableFieldDefsRequest {
  repeated IssueRef issue_refs = 2;
}


// Next available tag: 2
message ListApplicableFieldDefsResponse {
  repeated FieldDef field_defs = 1;
}


// Next available tag: 9
message UpdateIssueRequest {
  IssueRef issue_ref = 2;
  bool send_email = 3;
  IssueDelta delta = 4;
  string comment_content = 5;
  bool is_description = 6;
  repeated AttachmentUpload uploads = 7;
  repeated int64 kept_attachments = 8;
}


// Next available tag: 4
message StarIssueRequest {
  IssueRef issue_ref = 2;
  bool starred = 3;  // True to add a star, False to remove one.
}


// Next available tag: 2
message StarIssueResponse {
  uint32 star_count = 1;
}


// Next available tag: 3
message IsIssueStarredRequest {
  IssueRef issue_ref = 2;
}


// Next available tag: 2
message IsIssueStarredResponse {
  bool is_starred = 1;
}


// Next available tag: 1
message ListStarredIssuesRequest {
}


// Next available tag: 2
message ListStarredIssuesResponse {
  repeated IssueRef starred_issue_refs = 1;
}


// Next available tag: 3
message ListCommentsRequest {
  IssueRef issue_ref = 2;
}


// Next available tag: 2
message ListCommentsResponse {
  // Comments are in chronological order.  The list of comments may
  // include deleted, spam, and description comments.  Spam and
  // deleted comments will only have content supplied if the user is
  // allowed to see it.
  repeated Comment comments = 1;
}


// Next available tag: 5
message ListActivitiesRequest {
  // TODO(tyreej) description
  UserRef user_ref = 2;
  fixed32 before = 3;
  fixed32 after = 4;
}


// Next available tag: 3
message ListActivitiesResponse {
  // TODO(tyreej) description
  repeated Comment comments = 1;
  repeated IssueSummary issue_summaries = 2;
}


// Next available tag: 5
message DeleteCommentRequest {
  IssueRef issue_ref = 2;
  int64 sequence_num = 3;
  bool delete = 4;  // True to delete, False to undelete.
}


// TODO: Consider eventually replacing calls to UpdateApprovalRequest
// with BulkUpdateApprovalsRequest.
// TODO: For now, block bulk attaching uploads and survey editing.
// Next available tag: 7
message BulkUpdateApprovalsRequest {
  repeated IssueRef issue_refs = 2;
  FieldRef field_ref = 3;
  ApprovalDelta approval_delta = 4;
  string comment_content = 5;
  bool send_email = 6;
}


// Next available tag: 2
message BulkUpdateApprovalsResponse {
  repeated IssueRef issue_refs = 1;
}


// Next available tag: 10
message UpdateApprovalRequest {
  IssueRef issue_ref = 2;
  FieldRef field_ref = 3;
  ApprovalDelta approval_delta = 4;
  string comment_content = 5;
  bool send_email = 6;
  bool is_description = 7;
  repeated AttachmentUpload uploads = 8;
  repeated int64 kept_attachments = 9;
}


// Next available tag: 2
message UpdateApprovalResponse {
  Approval approval = 1;
  // TODO(jojwang): monorail:3895, add new_comment field.
}


// Next available tag: 6
message ConvertIssueApprovalsTemplateRequest {
  IssueRef issue_ref = 2;
  string template_name = 3;
  string comment_content = 4;
  bool send_email = 5;
}


// Next available tag: 2
message ConvertIssueApprovalsTemplateResponse {
  Issue issue = 1;
}


// Next available tag: 9
message IssueSnapshotRequest {
  int32 timestamp = 2;
  string query = 3;
  int32 canned_query = 4;
  string group_by = 5;
  string label_prefix = 6;
  string project_name = 7;
  int32 hotlist_id = 8;
}


// Next available tag: 3
message IssueSnapshotCount {
  string dimension = 1;
  int32 count = 2;
}


// Next available tag: 3
message IssueSnapshotResponse {
  repeated IssueSnapshotCount snapshot_count = 1;
  repeated string unsupported_field = 2;
  bool search_limit_reached = 3;
}


// Next available tag: 4
message PresubmitIssueRequest {
  IssueRef issue_ref = 2;
  IssueDelta issue_delta = 3;
}


// Next available tag: 8
message PresubmitIssueResponse {
  string owner_availability = 1;
  string owner_availability_state = 2;
  repeated ValueAndWhy derived_labels = 3;
  repeated ValueAndWhy derived_owners = 4;
  repeated ValueAndWhy derived_ccs = 5;
  repeated ValueAndWhy warnings = 6;
  repeated ValueAndWhy errors = 7;
}


// Next available tag: 6
message RerankBlockedOnIssuesRequest {
  IssueRef issue_ref = 2;
  IssueRef moved_ref = 3;
  IssueRef target_ref = 4;
  bool split_above = 5;
}


// Next available tag: 2
message RerankBlockedOnIssuesResponse {
  repeated IssueRef blocked_on_issue_refs = 1;
}


// Next available tag: 4
message DeleteIssueRequest {
  IssueRef issue_ref = 2;
  bool delete = 3;
}


// Next available tag: 1
message DeleteIssueResponse {
}


// Next available tag: 5
message DeleteIssueCommentRequest {
  IssueRef issue_ref = 2;
  uint32 sequence_num = 3;
  bool delete = 4;
}


// Next available tag: 1
message DeleteIssueCommentResponse {
}


// Next available tag: 6
message DeleteAttachmentRequest {
  IssueRef issue_ref = 2;
  uint32 sequence_num = 3;
  uint32 attachment_id = 4;
  bool delete = 5;
}


// Next available tag: 1
message DeleteAttachmentResponse {
}


// Next available tag: 4
message FlagIssuesRequest {
  repeated IssueRef issue_refs = 2;
  bool flag = 3;
}


// Next available tag: 1
message FlagIssuesResponse {
}


// Next available tag: 5
message FlagCommentRequest {
  IssueRef issue_ref = 2;
  uint32 sequence_num = 3;
  bool flag = 4;
}


// Next available tag: 1
message FlagCommentResponse {
}


// Next available tag: 3
message ListIssuePermissionsRequest {
  IssueRef issue_ref = 2;
}


// Next available tag: 2
message ListIssuePermissionsResponse {
  repeated string permissions = 1;
}


// Next available tag: 4
message MoveIssueRequest {
  IssueRef issue_ref = 2;
  string target_project_name = 3;
}


// Next available tag: 2
message MoveIssueResponse {
  IssueRef new_issue_ref = 1;
}


// Next available tag: 4
message CopyIssueRequest {
  IssueRef issue_ref = 2;
  string target_project_name = 3;
}


// Next available tag: 2
message CopyIssueResponse {
  IssueRef new_issue_ref = 1;
}
