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