Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/api/api_proto/project_objects.proto b/api/api_proto/project_objects.proto
new file mode 100644
index 0000000..a6943ec
--- /dev/null
+++ b/api/api_proto/project_objects.proto
@@ -0,0 +1,136 @@
+// 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 "api/api_proto/common.proto";
+import "api/api_proto/issue_objects.proto";
+
+
+// Next available tag: 4
+message Project {
+ string name = 1;
+ string summary = 2;
+ string description = 3;
+}
+
+
+// Next available tag: 6
+message StatusDef {
+ string status = 1;
+ bool means_open = 2;
+ uint32 rank = 3;
+ string docstring = 4;
+ bool deprecated = 5;
+}
+
+
+// Next available tag: 5
+message LabelDef {
+ string label = 1;
+ string docstring = 3;
+ bool deprecated = 4;
+}
+
+
+// Next available tag: 11
+message ComponentDef {
+ string path = 1;
+ string docstring = 2;
+ repeated UserRef admin_refs = 3;
+ repeated UserRef cc_refs = 4;
+ bool deprecated = 5;
+ fixed32 created = 6;
+ UserRef creator_ref = 7;
+ fixed32 modified = 8;
+ UserRef modifier_ref = 9;
+ repeated LabelRef label_refs = 10;
+}
+
+
+// Next available tag: 9
+message FieldDef {
+ FieldRef field_ref = 1;
+ string applicable_type = 2;
+ // TODO(jrobbins): applicable_predicate
+ bool is_required = 3;
+ bool is_niche = 4;
+ bool is_multivalued = 5;
+ string docstring = 6;
+ repeated UserRef admin_refs = 7;
+ // TODO(jrobbins): validation, permission granting, and notification options.
+ bool is_phase_field = 8;
+ repeated UserRef user_choices = 9;
+ repeated LabelDef enum_choices = 10;
+}
+
+
+// Next available tag: 3
+message FieldOptions {
+ FieldRef field_ref = 1;
+ repeated UserRef user_refs = 2;
+}
+
+
+// Next available tag: 4
+message ApprovalDef {
+ FieldRef field_ref = 1;
+ repeated UserRef approver_refs = 2;
+ string survey = 3;
+}
+
+
+// Next available tag: 11
+message Config {
+ string project_name = 1;
+ repeated StatusDef status_defs = 2;
+ repeated StatusRef statuses_offer_merge = 3;
+ repeated LabelDef label_defs = 4;
+ repeated string exclusive_label_prefixes = 5;
+ repeated ComponentDef component_defs = 6;
+ repeated FieldDef field_defs = 7;
+ repeated ApprovalDef approval_defs = 8;
+ bool restrict_to_known = 9;
+}
+
+
+// Next available tag: 11
+message PresentationConfig {
+ string project_thumbnail_url = 1;
+ string project_summary = 2;
+ string custom_issue_entry_url = 3;
+ string default_query = 4;
+ repeated SavedQuery saved_queries = 5;
+ string revision_url_format = 6;
+ string default_col_spec = 7;
+ string default_sort_spec = 8;
+ string default_x_attr = 9;
+ string default_y_attr = 10;
+}
+
+
+// Next available tag: 16
+message TemplateDef {
+ string template_name = 1;
+ string content = 2;
+ string summary = 3;
+ bool summary_must_be_edited = 4;
+ UserRef owner_ref = 5;
+ StatusRef status_ref = 6;
+ repeated LabelRef label_refs = 7;
+ bool members_only = 8;
+ bool owner_defaults_to_member = 9;
+ repeated UserRef admin_refs = 10;
+ repeated FieldValue field_values = 11;
+ repeated ComponentRef component_refs = 12;
+ bool component_required = 13;
+ repeated Approval approval_values = 14;
+ repeated PhaseDef phases = 15;
+}