| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package monorail.v3; |
| |
| option go_package = "infra/monorailv2/api/v3/api_proto"; |
| |
| import "api/v3/api_proto/feature_objects.proto"; |
| import "google/protobuf/field_mask.proto"; |
| import "google/protobuf/empty.proto"; |
| import "google/api/field_behavior.proto"; |
| import "google/api/resource.proto"; |
| |
| // ***ONLY CALL rpcs WITH `status: {ALPHA|STABLE}`*** |
| // rpcs without `status` are not ready. |
| |
| // Hotlists service includes all methods needed for managing Hotlists. |
| service Hotlists { |
| // status: NOT READY |
| // Creates a new hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if some given hotlist editors do not exist. |
| // ALREADY_EXISTS if a hotlist with the same name owned by the user |
| // already exists. |
| // INVALID_ARGUMENT if a `hotlist.owner` is given. |
| rpc CreateHotlist (CreateHotlistRequest) returns (Hotlist) {} |
| |
| // status: NOT READY |
| // Returns the requested Hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the requested hotlist is not found. |
| // PERMISSION_DENIED if the requester is not allowed to view the hotlist. |
| // INVALID_ARGUMENT if the given resource name is not valid. |
| rpc GetHotlist (GetHotlistRequest) returns (Hotlist) {} |
| |
| // status: NOT READY |
| // Updates a hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the hotlist is not found. |
| // PERMISSION_DENIED if the requester is not allowed to update the hotlist. |
| // INVALID_ARGUMENT if required fields are missing. |
| rpc UpdateHotlist (UpdateHotlistRequest) returns (Hotlist) {} |
| |
| // status: NOT READY |
| // Deletes a hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the hotlist is not found. |
| // PERMISSION_DENIED if the requester is not allowed to delete the hotlist. |
| rpc DeleteHotlist (GetHotlistRequest) returns (google.protobuf.Empty) {} |
| |
| // status: NOT READY |
| // Returns a list of all HotlistItems in the hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the parent hotlist is not found. |
| // PERMISSION_DENIED if the requester is not allowed to view the hotlist. |
| // INVALID_ARGUMENT if the page_token or given hotlist resource name is not |
| // valid. |
| rpc ListHotlistItems (ListHotlistItemsRequest) returns (ListHotlistItemsResponse) {} |
| |
| // status: NOT READY |
| // Reranks a hotlist's items. |
| // |
| // Raises: |
| // NOT_FOUND if the hotlist or issues to rerank are not found. |
| // PERMISSION_DENIED if the requester is not allowed to rerank the hotlist |
| // or view issues they're trying to rerank. |
| // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` |
| // is empty or contains items not in the Hotlist. |
| rpc RerankHotlistItems (RerankHotlistItemsRequest) returns (google.protobuf.Empty) {} |
| |
| // status: NOT READY |
| // Adds new items associated with given issues to a hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the parent hotlist or issues are not found. |
| // PERMISSION_DENIED if the requester is not allowed to edit the hotlist or |
| // view issues they are trying to add. |
| // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` |
| // is empty or contains items not in the Hotlist. |
| rpc AddHotlistItems (AddHotlistItemsRequest) returns (google.protobuf.Empty) {} |
| |
| // status: NOT READY |
| // Removes items associated with given issues from a hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the parent hotlist or issues are not found. |
| // PERMISSION_DENIED if the requester is not allowed to edit the hotlist or |
| // view issues they are trying to remove. |
| // INVALID_ARGUMENT if the `target_position` is invalid or `hotlist_items` |
| // is empty or contains items not in the Hotlist. |
| rpc RemoveHotlistItems (RemoveHotlistItemsRequest) returns (google.protobuf.Empty) {} |
| |
| // status: NOT READY |
| // Removes editors assigned to a hotlist. |
| // |
| // Raises: |
| // NOT_FOUND if the hotlist is not found. |
| // PERMISSION_DENIED if the requester is not allowed to remove all specified |
| // editors from the hotlist. |
| // INVALID_ARGUMENT if any specified editors are not in the hotlist. |
| rpc RemoveHotlistEditors (RemoveHotlistEditorsRequest) returns (google.protobuf.Empty) {} |
| |
| // status: NOT READY |
| // Gathers all viewable hotlists that a user is a member of. |
| // |
| // Raises: |
| // NOT_FOUND if the user is not found. |
| // INVALID_ARGUMENT if the `user` is invalid. |
| rpc GatherHotlistsForUser (GatherHotlistsForUserRequest) returns (GatherHotlistsForUserResponse) {} |
| } |
| |
| |
| // Request message for CreateHotlist method. |
| // Next available tag: 2 |
| message CreateHotlistRequest { |
| // The hotlist to create. |
| // `hotlist.owner` must be empty. The owner of the new hotlist will be |
| // set to the requester. |
| Hotlist hotlist = 1 [ (google.api.field_behavior) = REQUIRED ]; |
| } |
| |
| |
| // Request message for GetHotlist method. |
| // Next available tag: 2 |
| message GetHotlistRequest { |
| // The name of the hotlist to retrieve. |
| string name = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"}]; |
| } |
| |
| |
| // Request message for UpdateHotlist method. |
| // Next available tag: 2 |
| message UpdateHotlistRequest { |
| // The hotlist's `name` field is used to identify the hotlist to be updated. |
| Hotlist hotlist = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; |
| // The list of fields to be updated. |
| google.protobuf.FieldMask update_mask = 2 [ (google.api.field_behavior) = REQUIRED ]; |
| } |
| |
| |
| // Request message for ListHotlistItems method. |
| // Next available tag: 5 |
| message ListHotlistItemsRequest { |
| // The parent hotlist, which owns this collection of items. |
| string parent = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; |
| // The maximum number of items to return. The service may return fewer than |
| // this value. |
| // If unspecified, at most 1000 items will be returned. |
| // The maximum value is 1000; values above 1000 will be coerced to 1000. |
| int32 page_size = 2; |
| // The string of comma separated field names used to order the items. |
| // Adding '-' before a field, reverses the sort order. |
| // E.g. 'stars,-status' sorts the items by number of stars low to high, then |
| // status high to low. |
| // If unspecified, items will be ordered by their rank in the parent. |
| string order_by = 3; |
| // A page token, received from a previous `ListHotlistItems` call. |
| // Provide this to retrieve the subsequent page. |
| // |
| // When paginating, all other parameters provided to `ListHotlistItems` must |
| // match the call that provided the page token. |
| string page_token = 4; |
| } |
| |
| |
| // Response to ListHotlistItems call. |
| // Next available tag: 3 |
| message ListHotlistItemsResponse { |
| // The items from the specified hotlist. |
| repeated HotlistItem items = 1; |
| // A token, which can be sent as `page_token` to retrieve the next page. |
| // If this field is omitted, there are no subsequent pages. |
| string next_page_token = 2; |
| } |
| |
| |
| // The request used to rerank a Hotlist. |
| // Next available tag: 4 |
| message RerankHotlistItemsRequest { |
| // Resource name of the Hotlist to rerank. |
| string name = 1 [ |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"}, |
| (google.api.field_behavior) = REQUIRED ]; |
| // HotlistItems to be moved. The order of `hotlist_items` will |
| // determine the order of these items after they have been moved. |
| // E.g. With items [a, b, c, d, e], moving [d, c] to `target_position` 3, will |
| // result in items [a, b, e, d, c]. |
| repeated string hotlist_items = 2 [ |
| (google.api.resource_reference) = {type: "api.crbug.com/HotlistItem"}, |
| (google.api.field_behavior) = REQUIRED ]; |
| // Target starting position of the moved items. |
| // `target_position` must be between 0 and (# hotlist items - # items being moved). |
| uint32 target_position = 3 [ (google.api.field_behavior) = REQUIRED ]; |
| } |
| |
| |
| // Request message for an AddHotlistItems call. |
| // Next available tag: 4 |
| message AddHotlistItemsRequest { |
| // Resource name of the Hotlist to add new items to. |
| string parent = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; |
| // Resource names of Issues to associate with new HotlistItems added to `parent`. |
| repeated string issues = 2 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Issue"} ]; |
| // Target starting position of the new items. |
| // `target_position` must be between [0 and # of items that currently exist in |
| // `parent`]. The request will fail if a specified `target_position` is outside |
| // of this range. |
| // New HotlistItems added to a non-last position of the hotlist will |
| // cause ranks of existing HotlistItems below `target_position` to be adjusted. |
| // If no `target_position` is given, new items will be added to the end of |
| // `parent`. |
| uint32 target_position = 3; |
| } |
| |
| |
| // Request message for a RemoveHotlistItems call. |
| // Next available tag: 3 |
| message RemoveHotlistItemsRequest { |
| // Resource name of the Hotlist to remove items from. |
| string parent = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; |
| // Resource names of Issues associated with HotlistItems that should be removed. |
| repeated string issues = 2 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Issue"} ]; |
| } |
| |
| |
| // Request message for a RemoveHotlistEditors call. |
| // Next available tag: 3 |
| message RemoveHotlistEditorsRequest { |
| // Resource name of the Hotlist to remove editors from. |
| string name = 1 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/Hotlist"} ]; |
| // Resource names of Users associated with the hotlist that should be removed. |
| repeated string editors = 2 [ |
| (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/User"} ]; |
| } |
| |
| |
| // Request message for a GatherHotlistsForUser call. |
| // Next available tag: 2 |
| message GatherHotlistsForUserRequest { |
| // Resource name of the user whose hotlists we want to fetch. |
| string user = 1 [ (google.api.field_behavior) = REQUIRED, |
| (google.api.resource_reference) = {type: "api.crbug.com/User"} ]; |
| } |
| |
| |
| // Response message for a GatherHotlistsForUser call. |
| // Next available tag: 2 |
| message GatherHotlistsForUserResponse { |
| repeated Hotlist hotlists = 1; |
| } |