Project import generated by Copybara.

GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/api/api_proto/projects.proto b/api/api_proto/projects.proto
new file mode 100644
index 0000000..bcd1167
--- /dev/null
+++ b/api/api_proto/projects.proto
@@ -0,0 +1,211 @@
+// 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;
+
+import "api/api_proto/common.proto";
+import "api/api_proto/project_objects.proto";
+
+
+service Projects {
+  rpc ListProjects (ListProjectsRequest) returns (ListProjectsResponse) {}
+  rpc ListProjectTemplates (ListProjectTemplatesRequest) returns (ListProjectTemplatesResponse) {}
+  rpc GetConfig (GetConfigRequest) returns (Config) {}
+  rpc GetPresentationConfig (GetPresentationConfigRequest) returns (PresentationConfig) {}
+  rpc GetCustomPermissions (GetCustomPermissionsRequest) returns (GetCustomPermissionsResponse) {}
+  rpc GetVisibleMembers (GetVisibleMembersRequest) returns (GetVisibleMembersResponse) {}
+  rpc GetLabelOptions (GetLabelOptionsRequest) returns (GetLabelOptionsResponse) {}
+  rpc ListStatuses (ListStatusesRequest) returns (ListStatusesResponse) {}
+  rpc ListComponents (ListComponentsRequest) returns (ListComponentsResponse) {}
+  rpc ListFields (ListFieldsRequest) returns (ListFieldsResponse) {}
+  rpc GetProjectStarCount (GetProjectStarCountRequest) returns (GetProjectStarCountResponse) {}
+  rpc StarProject (StarProjectRequest) returns (StarProjectResponse) {}
+  rpc CheckProjectName (CheckProjectNameRequest) returns (CheckProjectNameResponse) {}
+  rpc CheckComponentName (CheckComponentNameRequest) returns (CheckComponentNameResponse) {}
+  rpc CheckFieldName (CheckFieldNameRequest) returns (CheckFieldNameResponse) {}
+}
+
+
+// Next available tag: 3
+message ListProjectsRequest {
+  int32 page_size = 1;
+  string page_token = 2;
+}
+
+
+// Next available tag: 3
+message ListProjectsResponse {
+  repeated Project projects = 1;
+  string next_page_token = 2;
+}
+
+
+// Next available tag: 3
+message ListProjectTemplatesRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 2
+message ListProjectTemplatesResponse {
+  repeated TemplateDef templates = 1;
+}
+
+
+// Next available tag: 3
+message GetConfigRequest {
+  string project_name = 2;
+}
+
+// Next available tag: 3
+message GetPresentationConfigRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 3
+message GetCustomPermissionsRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 2
+message GetCustomPermissionsResponse {
+  repeated string permissions = 1;
+}
+
+
+// Next available tag: 3
+message GetVisibleMembersRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 3
+message GetVisibleMembersResponse {
+  repeated UserRef user_refs = 1;
+  repeated UserRef group_refs = 2;
+}
+
+
+// Next available tag: 3
+message GetLabelOptionsRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 3
+message GetLabelOptionsResponse {
+  repeated LabelDef label_options = 1;
+  repeated string exclusive_label_prefixes = 2;
+}
+
+
+// Next available tag: 3
+message ListStatusesRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 4
+message ListStatusesResponse {
+  repeated StatusDef status_defs = 1;
+  repeated StatusRef statuses_offer_merge = 2;
+  bool restrict_to_known = 3;
+}
+
+
+// Next available tag: 4
+message ListComponentsRequest {
+  string project_name = 2;
+  bool include_admin_info = 3;
+}
+
+
+// Next available tag: 2
+message ListComponentsResponse {
+  repeated ComponentDef component_defs = 1;
+}
+
+
+// Next available tag: 5
+message ListFieldsRequest {
+  string project_name = 2;
+  bool include_admin_info = 3;
+  bool include_user_choices = 4;
+}
+
+
+// Next available tag: 2
+message ListFieldsResponse {
+  repeated FieldDef field_defs = 1;
+}
+
+
+// Next available tag: 3
+message GetProjectStarCountRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 2
+message GetProjectStarCountResponse {
+  uint32 star_count = 1;
+}
+
+
+// Next available tag: 3
+message StarProjectRequest {
+  string project_name = 2;
+  bool starred = 3;
+}
+
+
+// Next available tag: 2
+message StarProjectResponse {
+  uint32 star_count = 1;
+}
+
+
+// Next available tag: 3
+message CheckProjectNameRequest {
+  string project_name = 2;
+}
+
+
+// Next available tag: 1
+message CheckProjectNameResponse {
+  string error = 1;
+}
+
+
+// Next available tag: 5
+message CheckComponentNameRequest {
+  string project_name = 2;
+  string parent_path = 3;
+  string component_name = 4;
+}
+
+
+// Next available tag: 2
+message CheckComponentNameResponse {
+  string error = 1;
+}
+
+
+// Next available tag: 4
+message CheckFieldNameRequest {
+  string project_name = 2;
+  string field_name = 3;
+}
+
+
+// Next available tag: 2
+message CheckFieldNameResponse {
+  string error = 1;
+}