// Copyright 2020 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 features and related business
// objects, e.g., hotlists.

syntax = "proto3";

package monorail.v3;

option go_package = "api/v3/api_proto";

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";
import "api/v3/api_proto/issue_objects.proto";

// A user-owned list of Issues.
// Next available tag: 9
message Hotlist {
  option (google.api.resource) = {
    type: "api.crbug.com/Hotlist"
    pattern: "hotlists/{hotlist_id}"
  };

  // Resource name of the hotlist.
  string name = 1;
  // `display_name` must follow pattern found at `framework_bizobj.RE_HOTLIST_NAME_PATTERN`.
  string display_name = 2 [ (google.api.field_behavior) = REQUIRED ];
  // Resource name of the hotlist owner.
  // Owners can update hotlist settings, editors, owner, and HotlistItems.
  // TODO(monorail:7023): field_behavior may be changed in the future.
  string owner = 3 [
      (google.api.resource_reference) = {type: "api.crbug.com/User"},
      (google.api.field_behavior) = REQUIRED ];
  // Resource names of the hotlist editors.
  // Editors can update hotlist HotlistItems.
  repeated string editors = 4 [ (google.api.resource_reference) = {type: "api.crbug.com/User"} ];
  // Summary of the hotlist.
  string summary = 5 [ (google.api.field_behavior) = REQUIRED ];
  // More detailed description of the purpose of the hotlist.
  string description = 6 [ (google.api.field_behavior) = REQUIRED ];
  // Ordered list of default columns shown on hotlist's issues list view.
  repeated IssuesListColumn default_columns = 7;

  // Privacy level of a Hotlist.
  // Next available tag: 2
  enum HotlistPrivacy {
    // This value is unused.
    HOTLIST_PRIVACY_UNSPECIFIED = 0;
    // Only the owner and editors of the hotlist can view the hotlist.
    PRIVATE = 1;
    // Anyone on the web can view the hotlist.
    PUBLIC = 2;
  }
  HotlistPrivacy hotlist_privacy = 8;
}


// Represents the the position of an Issue in a Hotlist.
// Next available tag: 7
message HotlistItem {
  option (google.api.resource) = {
    type: "api.crbug.com/HotlistItem"
    pattern: "hotlists/{hotlist_id}/items/{item_id}"
  };

  // Resource name of the HotlistItem.
  string name = 1;
  // The Issue associated with this item.
  string issue = 2 [
      (google.api.resource_reference) = {type: "api.crbug.com/Issue"},
      (google.api.field_behavior) = IMMUTABLE ];
  // Represents the item's position in the Hotlist in decreasing priority order.
  // Values will be from 1 to N (the size of the hotlist), each item having a unique rank.
  // Changes to rank must be made in `RerankHotlistItems`.
  uint32 rank = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  // Resource name of the adder of HotlistItem.
  string adder = 4 [
      (google.api.resource_reference) = {type: "api.crbug.com/User"},
      (google.api.field_behavior) = OUTPUT_ONLY ];
  // The time this HotlistItem was added to the hotlist.
  google.protobuf.Timestamp create_time = 5  [ (google.api.field_behavior) = OUTPUT_ONLY ];
  // User-provided additional details about this item.
  string note = 6;
}