blob: 59d2f163c70bd6ab35aa56ffb4a1efd27182334f [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/protobuf/empty.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "api/v3/api_proto/project_objects.proto";
// ***ONLY CALL rpcs WITH `status: {ALPHA|STABLE}`***
// rpcs without `status` are not ready.
// Projects service includes all methods needed for managing Projects.
service Projects {
// status: NOT READY
// Creates a new FieldDef (custom field).
//
// Raises:
// NOT_FOUND if some given users do not exist.
// ALREADY_EXISTS if a field with the same name owned by the project
// already exists.
// INVALID_INPUT if there was a problem with the input.
// PERMISSION_DENIED if the user cannot edit the project.
rpc CreateFieldDef (CreateFieldDefRequest) returns (FieldDef) {}
// status: ALPHA
// Gets a ComponentDef given the reference.
//
// Raises:
// INVALID_INPUT if the request is invalid.
// NOT_FOUND if the parent project or the component is not found.
rpc GetComponentDef (GetComponentDefRequest) returns (ComponentDef) {}
// status: ALPHA
// Creates a new ComponentDef.
//
// Raises:
// INVALID_INPUT if the request is invalid.
// ALREADY_EXISTS if the component already exists.
// PERMISSION_DENIED if the user is not allowed to create a/this component.
// NOT_FOUND if the parent project or a component cc or admin is not found.
rpc CreateComponentDef (CreateComponentDefRequest) returns (ComponentDef) {}
// status: ALPHA
// Deletes a ComponentDef.
//
// Raises:
// INVALID_INPUT if the request is invalid.
// PERMISSION_DENIED if the user is not allowed to delete a/this component.
// NOT_FOUND if the component or project is not found.
rpc DeleteComponentDef (DeleteComponentDefRequest) returns (google.protobuf.Empty) {}
// status: NOT READY
// Returns all templates for specified project.
//
// Raises:
// NOT_FOUND if the requested parent project is not found.
// INVALID_ARGUMENT if the given `parent` is not valid.
rpc ListIssueTemplates (ListIssueTemplatesRequest) returns (ListIssueTemplatesResponse) {}
// status: ALPHA
// Returns all field defs for specified project.
//
// Raises:
// NOT_FOUND if the request arent project is not found.
// INVALID_ARGUMENT if the given `parent` is not valid.
rpc ListComponentDefs (ListComponentDefsRequest) returns (ListComponentDefsResponse) {}
// status: NOT READY
// Returns all projects hosted on Monorail.
rpc ListProjects (ListProjectsRequest) returns (ListProjectsResponse) {}
}
// Request message for CreateFieldDef method.
// Next available tag: 3
message CreateFieldDefRequest {
// The project resource where this field will be created.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "api.crbug.com/Project" }];
// The field to create.
// It must have a display_name and a type with its corresponding settings.
FieldDef fielddef = 2 [ (google.api.field_behavior) = REQUIRED ];
}
// Request message for GetComponentDef method.
// Next available tag: 2
message GetComponentDefRequest {
string name = 1 [
(google.api.resource_reference) = { type: "api.crbug.com/ComponentDef" },
(google.api.field_behavior) = REQUIRED ];
}
// Request message for CreateComponentDef method.
// Next available tag: 3
message CreateComponentDefRequest {
// The project resource where this component will be created.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "api.crbug.com/Project" }];
// The component to create.
ComponentDef component_def = 2 [ (google.api.field_behavior) = REQUIRED ];
}
// Request message for DeleteComponentDef method.
// Next available tag: 2
message DeleteComponentDefRequest {
// The component to delete.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "api.crbug.com/ComponentDef"}];
}
// Request message for ListIssueTemplates
// Next available tag: 4
message ListIssueTemplatesRequest {
// The name of the project these templates belong to.
string parent = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/Project"},
(google.api.field_behavior) = REQUIRED ];
// The maximum number of items to return. The service may return fewer than
// this value.
int32 page_size = 2;
// A page token, received from a previous `ListIssueTemplates` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided to
// `ListIssueTemplatesRequest` must match the call that provided the token.
string page_token = 3;
}
// Response message for ListIssueTemplates
// Next available tag: 3
message ListIssueTemplatesResponse {
// Templates matching the given request.
repeated IssueTemplate templates = 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;
}
// Request message for ListComponentDefs
// Next available tag: 4
message ListComponentDefsRequest {
// The name of the parent project.
string parent = 1 [
(google.api.resource_reference) = {type: "api.crbug.com/Project"},
(google.api.field_behavior) = REQUIRED ];
// The maximum number of items to return. The service may return fewer than
// this value.
int32 page_size = 2;
// A page token, received from a previous `ListComponentDefs` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided to
// `ListComponentDefsRequest` must match the call that provided the token.
string page_token = 3;
}
// Response message for ListComponentDefs
// Next available tag: 3
message ListComponentDefsResponse {
// Component defs matching the given request.
repeated ComponentDef component_defs = 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;
}
// Request message for ListProjects
// Next available tag: 3
message ListProjectsRequest {
// The maximum number of items to return. The service may return fewer than
// this value.
int32 page_size = 1;
// A page token, received from a previous `ListProjects` call.
// Provide this to retrieve the subsequent page.
string page_token = 2;
}
// Response message for ListProjects
// Next available tag: 3
message ListProjectsResponse {
// Projects matching the given request.
repeated Project projects = 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;
}