blob: 0e869484e73eb61fce863975e5286f736d877705 [file] [log] [blame]
// 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 "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "api/v3/api_proto/user_objects.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
// ***ONLY CALL rpcs WITH `status: {ALPHA|STABLE}`***
// rpcs without `status` are not ready.
// Users service includes all methods needed for managing Users.
service Users {
// status: ALPHA
// Returns the requested User.
//
// Raises:
// NOT_FOUND is the user is not found.
// INVALID_ARGUMENT if the `name` is invalid.
rpc GetUser (GetUserRequest) returns (User) {}
// status: ALPHA
// Returns all of the requested Users.
//
// Raises:
// NOT_FOUND if any users are not found.
// INVALID_ARGUMENT if any `names` are invalid.
rpc BatchGetUsers (BatchGetUsersRequest) returns (BatchGetUsersResponse) {}
// status: NOT READY
// Updates a User.
//
// Raises:
// NOT_FOUND if the user is not found.
// PERMISSION_DENIED if the requester is not allowed to update the user.
// INVALID_ARGUMENT if required fields are missing or fields are invalid.
rpc UpdateUser (UpdateUserRequest) returns (User) {}
// status: NOT READY
// Stars a given project for the requestor.
//
// Raises:
// NOT_FOUND if the requested project is not found.
// INVALID_ARGUMENT if the given `project` is not valid.
rpc StarProject (StarProjectRequest) returns (ProjectStar) {}
// status: NOT READY
// Unstars a given project for the requestor.
//
// Raises:
// NOT_FOUND if the requested project is not found.
// INVALID_ARGUMENT if the given `project` is not valid.
rpc UnStarProject (UnStarProjectRequest) returns (google.protobuf.Empty) {}
// status: NOT READY
// Lists all of a user's starred projects.
//
// Raises:
// NOT_FOUND if the requested user is not found.
// INVALID_ARGUMENT if the given `parent` is not valid.
rpc ListProjectStars (ListProjectStarsRequest) returns (ListProjectStarsResponse) {}
}
// The request message for Users.GetUser.
// Next available tag: 2
message GetUserRequest {
// The name of the user to request.
string name = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/User"},
(google.api.field_behavior) = REQUIRED ];
}
// The request message for Users.BatchGetUsers.
// Next available tag: 2
message BatchGetUsersRequest {
// The name of the users to request. At most 100 may be requested.
repeated string names = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/User"},
(google.api.field_behavior) = REQUIRED ];
}
// The response message for Users.BatchGetUsers.
// Next available tag: 2
message BatchGetUsersResponse {
// The users that were requested.
repeated User users = 1;
}
// The request message for Users.UpdateUser.
// Next available tag: 3
message UpdateUserRequest {
// The user's `name` field is used to identify the user to be updated.
User user = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "api.crbug.com/User"} ];
// The list of fields to be updated.
google.protobuf.FieldMask update_mask = 2 [ (google.api.field_behavior) = REQUIRED ];
}
// The request message for Users.StarProject.
// Next available tag: 2
message StarProjectRequest {
// The resource name for the Project to star.
string project = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/Project"},
(google.api.field_behavior) = REQUIRED ];
}
// The request message for Users.UnStarProject.
// Next available tag: 2
message UnStarProjectRequest {
// The resource name for the Project to unstar.
string project = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/Project"},
(google.api.field_behavior) = REQUIRED ];
}
// The request message for Users.ListProjectStars.
// Next available tag: 4
message ListProjectStarsRequest {
// The resource name for the user having stars listed.
string parent = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/User"},
(google.api.field_behavior) = REQUIRED ];
// The maximum number of items to return. The service may return fewer than
// this value.
// If unspecified, at most 1000 items will be returned.
int32 page_size = 2;
// A page token, received from a previous `ListProjectStars` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListProjectStars` must
// match the call that provided the page token.
string page_token = 3;
}
// The response message for Users.ListProjectStars.
// Next available tag: 3
message ListProjectStarsResponse {
// Data for each starred project.
repeated ProjectStar project_stars = 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;
}