go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/internal/bugs/monorail/api_proto/hotlists.proto (about) 1 // Copyright 2020 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 syntax = "proto3"; 6 7 package monorail.v3; 8 9 option go_package = "go.chromium.org/luci/analysis/internal/bugs/monorail/api_proto"; 10 11 import "go.chromium.org/luci/analysis/internal/bugs/monorail/api_proto/feature_objects.proto"; 12 import "google/protobuf/field_mask.proto"; 13 import "google/protobuf/empty.proto"; 14 import "google/api/field_behavior.proto"; 15 import "google/api/resource.proto"; 16 17 // ***ONLY CALL rpcs WITH `status: {ALPHA|STABLE}`*** 18 // rpcs without `status` are not ready. 19 20 // Hotlists service includes all methods needed for managing Hotlists. 21 service Hotlists { 22 // status: NOT READY 23 // Creates a new hotlist. 24 // 25 // Raises: 26 // NOT_FOUND if some given hotlist editors do not exist. 27 // ALREADY_EXISTS if a hotlist with the same name owned by the user 28 // already exists. 29 // INVALID_ARGUMENT if a `hotlist.owner` is given. 30 rpc CreateHotlist (CreateHotlistRequest) returns (Hotlist) {} 31 32 // status: NOT READY 33 // Returns the requested Hotlist. 34 // 35 // Raises: 36 // NOT_FOUND if the requested hotlist is not found. 37 // PERMISSION_DENIED if the requester is not allowed to view the hotlist. 38 // INVALID_ARGUMENT if the given resource name is not valid. 39 rpc GetHotlist (GetHotlistRequest) returns (Hotlist) {} 40 41 // status: NOT READY 42 // Updates a hotlist. 43 // 44 // Raises: 45 // NOT_FOUND if the hotlist is not found. 46 // PERMISSION_DENIED if the requester is not allowed to update the hotlist. 47 // INVALID_ARGUMENT if required fields are missing. 48 rpc UpdateHotlist (UpdateHotlistRequest) returns (Hotlist) {} 49 50 // status: NOT READY 51 // Deletes a hotlist. 52 // 53 // Raises: 54 // NOT_FOUND if the hotlist is not found. 55 // PERMISSION_DENIED if the requester is not allowed to delete the hotlist. 56 rpc DeleteHotlist (GetHotlistRequest) returns (google.protobuf.Empty) {} 57 58 // status: NOT READY 59 // Returns a list of all HotlistItems in the hotlist. 60 // 61 // Raises: 62 // NOT_FOUND if the parent hotlist is not found. 63 // PERMISSION_DENIED if the requester is not allowed to view the hotlist. 64 // INVALID_ARGUMENT if the page_token or given hotlist resource name is not 65 // valid. 66 rpc ListHotlistItems (ListHotlistItemsRequest) returns (ListHotlistItemsResponse) {} 67 68 // status: NOT READY 69 // Reranks a hotlist's items. 70 // 71 // Raises: 72 // NOT_FOUND if the hotlist or issues to rerank are not found. 73 // PERMISSION_DENIED if the requester is not allowed to rerank the hotlist 74 // or view issues they're trying to rerank. 75 // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` 76 // is empty or contains items not in the Hotlist. 77 rpc RerankHotlistItems (RerankHotlistItemsRequest) returns (google.protobuf.Empty) {} 78 79 // status: NOT READY 80 // Adds new items associated with given issues to a hotlist. 81 // 82 // Raises: 83 // NOT_FOUND if the parent hotlist or issues are not found. 84 // PERMISSION_DENIED if the requester is not allowed to edit the hotlist or 85 // view issues they are trying to add. 86 // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` 87 // is empty or contains items not in the Hotlist. 88 rpc AddHotlistItems (AddHotlistItemsRequest) returns (google.protobuf.Empty) {} 89 90 // status: NOT READY 91 // Removes items associated with given issues from a hotlist. 92 // 93 // Raises: 94 // NOT_FOUND if the parent hotlist or issues are not found. 95 // PERMISSION_DENIED if the requester is not allowed to edit the hotlist or 96 // view issues they are trying to remove. 97 // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` 98 // is empty or contains items not in the Hotlist. 99 rpc RemoveHotlistItems (RemoveHotlistItemsRequest) returns (google.protobuf.Empty) {} 100 101 // status: NOT READY 102 // Removes editors assigned to a hotlist. 103 // 104 // Raises: 105 // NOT_FOUND if the hotlist is not found. 106 // PERMISSION_DENIED if the requester is not allowed to remove all specified 107 // editors from the hotlist. 108 // INVALID_ARGUMENT if any specified editors are not in the hotlist. 109 rpc RemoveHotlistEditors (RemoveHotlistEditorsRequest) returns (google.protobuf.Empty) {} 110 111 // status: NOT READY 112 // Gathers all viewable hotlists that a user is a member of. 113 // 114 // Raises: 115 // NOT_FOUND if the user is not found. 116 // INVALID_ARGUMENT if the `user` is invalid. 117 rpc GatherHotlistsForUser (GatherHotlistsForUserRequest) returns (GatherHotlistsForUserResponse) {} 118 } 119 120 121 // Request message for CreateHotlist method. 122 // Next available tag: 2 123 message CreateHotlistRequest { 124 // The hotlist to create. 125 // `hotlist.owner` must be empty. The owner of the new hotlist will be 126 // set to the requester. 127 Hotlist hotlist = 1 [ (google.api.field_behavior) = REQUIRED ]; 128 } 129 130 131 // Request message for GetHotlist method. 132 // Next available tag: 2 133 message GetHotlistRequest { 134 // The name of the hotlist to retrieve. 135 string name = 1 [ 136 (google.api.field_behavior) = REQUIRED, 137 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"}]; 138 } 139 140 141 // Request message for UpdateHotlist method. 142 // Next available tag: 2 143 message UpdateHotlistRequest { 144 // The hotlist's `name` field is used to identify the hotlist to be updated. 145 Hotlist hotlist = 1 [ 146 (google.api.field_behavior) = REQUIRED, 147 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; 148 // The list of fields to be updated. 149 google.protobuf.FieldMask update_mask = 2 [ (google.api.field_behavior) = REQUIRED ]; 150 } 151 152 153 // Request message for ListHotlistItems method. 154 // Next available tag: 5 155 message ListHotlistItemsRequest { 156 // The parent hotlist, which owns this collection of items. 157 string parent = 1 [ 158 (google.api.field_behavior) = REQUIRED, 159 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; 160 // The maximum number of items to return. The service may return fewer than 161 // this value. 162 // If unspecified, at most 1000 items will be returned. 163 // The maximum value is 1000; values above 1000 will be coerced to 1000. 164 int32 page_size = 2; 165 // The string of comma separated field names used to order the items. 166 // Adding '-' before a field, reverses the sort order. 167 // E.g. 'stars,-status' sorts the items by number of stars low to high, then 168 // status high to low. 169 // If unspecified, items will be ordered by their rank in the parent. 170 string order_by = 3; 171 // A page token, received from a previous `ListHotlistItems` call. 172 // Provide this to retrieve the subsequent page. 173 // 174 // When paginating, all other parameters provided to `ListHotlistItems` must 175 // match the call that provided the page token. 176 string page_token = 4; 177 } 178 179 180 // Response to ListHotlistItems call. 181 // Next available tag: 3 182 message ListHotlistItemsResponse { 183 // The items from the specified hotlist. 184 repeated HotlistItem items = 1; 185 // A token, which can be sent as `page_token` to retrieve the next page. 186 // If this field is omitted, there are no subsequent pages. 187 string next_page_token = 2; 188 } 189 190 191 // The request used to rerank a Hotlist. 192 // Next available tag: 4 193 message RerankHotlistItemsRequest { 194 // Resource name of the Hotlist to rerank. 195 string name = 1 [ 196 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"}, 197 (google.api.field_behavior) = REQUIRED ]; 198 // HotlistItems to be moved. The order of `hotlist_items` will 199 // determine the order of these items after they have been moved. 200 // E.g. With items [a, b, c, d, e], moving [d, c] to `target_position` 3, will 201 // result in items [a, b, e, d, c]. 202 repeated string hotlist_items = 2 [ 203 (google.api.resource_reference) = {type: "api.crbug.com/HotlistItem"}, 204 (google.api.field_behavior) = REQUIRED ]; 205 // Target starting position of the moved items. 206 // `target_position` must be between 0 and (# hotlist items - # items being moved). 207 uint32 target_position = 3 [ (google.api.field_behavior) = REQUIRED ]; 208 } 209 210 211 // Request message for an AddHotlistItems call. 212 // Next available tag: 4 213 message AddHotlistItemsRequest { 214 // Resource name of the Hotlist to add new items to. 215 string parent = 1 [ 216 (google.api.field_behavior) = REQUIRED, 217 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; 218 // Resource names of Issues to associate with new HotlistItems added to `parent`. 219 repeated string issues = 2 [ 220 (google.api.field_behavior) = REQUIRED, 221 (google.api.resource_reference) = {type: "api.crbug.com/Issue"} ]; 222 // Target starting position of the new items. 223 // `target_position` must be between [0 and # of items that currently exist in 224 // `parent`]. The request will fail if a specified `target_position` is outside 225 // of this range. 226 // New HotlistItems added to a non-last position of the hotlist will 227 // cause ranks of existing HotlistItems below `target_position` to be adjusted. 228 // If no `target_position` is given, new items will be added to the end of 229 // `parent`. 230 uint32 target_position = 3; 231 } 232 233 234 // Request message for a RemoveHotlistItems call. 235 // Next available tag: 3 236 message RemoveHotlistItemsRequest { 237 // Resource name of the Hotlist to remove items from. 238 string parent = 1 [ 239 (google.api.field_behavior) = REQUIRED, 240 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; 241 // Resource names of Issues associated with HotlistItems that should be removed. 242 repeated string issues = 2 [ 243 (google.api.field_behavior) = REQUIRED, 244 (google.api.resource_reference) = {type: "api.crbug.com/Issue"} ]; 245 } 246 247 248 // Request message for a RemoveHotlistEditors call. 249 // Next available tag: 3 250 message RemoveHotlistEditorsRequest { 251 // Resource name of the Hotlist to remove editors from. 252 string name = 1 [ 253 (google.api.field_behavior) = REQUIRED, 254 (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; 255 // Resource names of Users associated with the hotlist that should be removed. 256 repeated string editors = 2 [ 257 (google.api.field_behavior) = REQUIRED, 258 (google.api.resource_reference) = {type: "api.crbug.com/User"} ]; 259 } 260 261 262 // Request message for a GatherHotlistsForUser call. 263 // Next available tag: 2 264 message GatherHotlistsForUserRequest { 265 // Resource name of the user whose hotlists we want to fetch. 266 string user = 1 [ (google.api.field_behavior) = REQUIRED, 267 (google.api.resource_reference) = {type: "api.crbug.com/User"} ]; 268 } 269 270 271 // Response message for a GatherHotlistsForUser call. 272 // Next available tag: 2 273 message GatherHotlistsForUserResponse { 274 repeated Hotlist hotlists = 1; 275 }