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