blob: c6edfda0cb79df46bfc1e498d9bf1ed1e24b9b69 [file] [log] [blame]
// 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
// This file defines protobufs for issues and related business
// objects, e.g., field values, comments, and attachments.
syntax = "proto3";
package monorail;
option go_package = "infra/monorailv2/api/api_proto;monorail";
import "google/protobuf/wrappers.proto";
import "api/api_proto/common.proto";
// Next available tag: 8
message Approval {
FieldRef field_ref = 1;
repeated UserRef approver_refs = 2;
ApprovalStatus status = 3;
fixed32 set_on = 4;
UserRef setter_ref = 5;
PhaseRef phase_ref = 7;
}
// Next available tag: 8
enum ApprovalStatus {
NOT_SET = 0;
NEEDS_REVIEW = 1;
NA = 2;
REVIEW_REQUESTED = 3;
REVIEW_STARTED = 4;
NEED_INFO = 5;
APPROVED = 6;
NOT_APPROVED = 7;
}
// This message is only suitable for displaying the amendment to users.
// We don't currently offer structured amendments that client code can
// reason about, field names can be ambiguous, and we don't have
// old_value for most changes.
// Next available tag: 4
message Amendment {
// This may be the name of a built-in or custom field, or relative to
// an approval field name.
string field_name = 1;
// This may be a new value that overwrote the old value, e.g., "Assigned",
// or it may be a space-separated list of changes, e.g., "Size-L -Size-S".
string new_or_delta_value = 2;
// old_value is only used when the user changes the summary.
string old_value = 3;
}
// Next available tag: 9
message Attachment {
uint64 attachment_id = 1;
string filename = 2;
uint64 size = 3; // Size in bytes.
string content_type = 4;
bool is_deleted = 5;
string thumbnail_url = 6;
string view_url = 7;
string download_url = 8;
}
// Next available tag: 16
message Comment {
string project_name = 1;
uint32 local_id = 2;
uint32 sequence_num = 3;
bool is_deleted = 4;
UserRef commenter = 5;
fixed32 timestamp = 6;
string content = 7;
string inbound_message = 8;
repeated Amendment amendments = 9;
repeated Attachment attachments = 10;
FieldRef approval_ref = 11;
// If set, this comment is an issue description.
uint32 description_num = 12;
bool is_spam = 13;
bool can_delete = 14;
bool can_flag = 15;
}
// Next available tag: 5
message FieldValue {
FieldRef field_ref = 1;
string value = 2;
bool is_derived = 3;
PhaseRef phase_ref = 4;
}
// Next available tag: 28
message Issue {
string project_name = 1;
uint32 local_id = 2;
string summary = 3;
StatusRef status_ref = 4;
UserRef owner_ref = 5;
repeated UserRef cc_refs = 6;
repeated LabelRef label_refs = 7;
repeated ComponentRef component_refs = 8;
repeated IssueRef blocked_on_issue_refs = 9;
repeated IssueRef blocking_issue_refs = 10;
repeated IssueRef dangling_blocked_on_refs = 23;
repeated IssueRef dangling_blocking_refs = 24;
IssueRef merged_into_issue_ref = 11;
repeated FieldValue field_values = 12;
bool is_deleted = 13;
UserRef reporter_ref = 14;
fixed32 opened_timestamp = 15;
fixed32 closed_timestamp = 16;
fixed32 modified_timestamp = 17;
fixed32 component_modified_timestamp = 25;
fixed32 status_modified_timestamp = 26;
fixed32 owner_modified_timestamp = 27;
uint32 star_count = 18;
bool is_spam = 19;
uint32 attachment_count = 20;
repeated Approval approval_values = 21;
repeated PhaseDef phases = 22;
}
// Next available tag: 18
message IssueDelta {
// Note: We use StringValue instead of string so that we can
// check if delta.HasField('status'). Proto3 only allows that
// for nested messages and provides "boxed" values for this purpose.
// In JSON, a StringValue is represented as a simple string.
google.protobuf.StringValue status = 1;
UserRef owner_ref = 2;
repeated UserRef cc_refs_add = 3;
repeated UserRef cc_refs_remove = 4;
repeated ComponentRef comp_refs_add = 5;
repeated ComponentRef comp_refs_remove = 6;
repeated LabelRef label_refs_add = 7;
repeated LabelRef label_refs_remove = 8;
repeated FieldValue field_vals_add = 9;
repeated FieldValue field_vals_remove = 10;
repeated FieldRef fields_clear = 11;
repeated IssueRef blocked_on_refs_add = 12;
repeated IssueRef blocked_on_refs_remove = 13;
repeated IssueRef blocking_refs_add = 14;
repeated IssueRef blocking_refs_remove = 15;
IssueRef merged_into_ref = 16;
google.protobuf.StringValue summary = 17;
}
// Next available tag: 7
message ApprovalDelta {
ApprovalStatus status = 1;
repeated UserRef approver_refs_add = 2;
repeated UserRef approver_refs_remove = 3;
repeated FieldValue field_vals_add = 4;
repeated FieldValue field_vals_remove = 5;
repeated FieldRef fields_clear = 6;
}
// Next available tag: 3
message AttachmentUpload {
string filename = 1;
bytes content = 2;
}
// Next available tag: 4
message IssueSummary {
string project_name = 1;
uint32 local_id = 2;
string summary = 3;
}
// Next available tag: 3
message PhaseDef {
PhaseRef phase_ref = 1;
uint32 rank = 2;
}
// Next available tag: 2
message PhaseRef {
string phase_name = 1;
}
// Next available tag: 7
enum SearchScope {
ALL = 0;
NEW = 1;
OPEN = 2;
OWNED = 3;
REPORTED = 4;
STARRED = 5;
TO_VERIFY = 6;
}