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