blob: 59d2f163c70bd6ab35aa56ffb4a1efd27182334f [file] [log] [blame]
Adrià Vilanova Martínezf19ea432024-01-23 20:20:52 +01001// 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.
Copybara854996b2021-09-07 19:36:02 +00004
5syntax = "proto3";
6
7package monorail.v3;
8
Adrià Vilanova Martínezac4a6442022-05-15 19:05:13 +02009option go_package = "infra/monorailv2/api/v3/api_proto";
Copybara854996b2021-09-07 19:36:02 +000010
11import "google/protobuf/empty.proto";
12import "google/api/field_behavior.proto";
13import "google/api/resource.proto";
14import "api/v3/api_proto/project_objects.proto";
15
16// ***ONLY CALL rpcs WITH `status: {ALPHA|STABLE}`***
17// rpcs without `status` are not ready.
18
19// Projects service includes all methods needed for managing Projects.
20service Projects {
21 // status: NOT READY
22 // Creates a new FieldDef (custom field).
23 //
24 // Raises:
25 // NOT_FOUND if some given users do not exist.
26 // ALREADY_EXISTS if a field with the same name owned by the project
27 // already exists.
28 // INVALID_INPUT if there was a problem with the input.
29 // PERMISSION_DENIED if the user cannot edit the project.
30 rpc CreateFieldDef (CreateFieldDefRequest) returns (FieldDef) {}
31
32 // status: ALPHA
Adrià Vilanova Martínezf5e10392021-12-07 22:55:40 +010033 // Gets a ComponentDef given the reference.
34 //
35 // Raises:
36 // INVALID_INPUT if the request is invalid.
37 // NOT_FOUND if the parent project or the component is not found.
38 rpc GetComponentDef (GetComponentDefRequest) returns (ComponentDef) {}
39
40 // status: ALPHA
Copybara854996b2021-09-07 19:36:02 +000041 // Creates a new ComponentDef.
42 //
43 // Raises:
44 // INVALID_INPUT if the request is invalid.
45 // ALREADY_EXISTS if the component already exists.
46 // PERMISSION_DENIED if the user is not allowed to create a/this component.
47 // NOT_FOUND if the parent project or a component cc or admin is not found.
48 rpc CreateComponentDef (CreateComponentDefRequest) returns (ComponentDef) {}
49
50 // status: ALPHA
51 // Deletes a ComponentDef.
52 //
53 // Raises:
54 // INVALID_INPUT if the request is invalid.
55 // PERMISSION_DENIED if the user is not allowed to delete a/this component.
56 // NOT_FOUND if the component or project is not found.
57 rpc DeleteComponentDef (DeleteComponentDefRequest) returns (google.protobuf.Empty) {}
58
59 // status: NOT READY
60 // Returns all templates for specified project.
61 //
62 // Raises:
63 // NOT_FOUND if the requested parent project is not found.
64 // INVALID_ARGUMENT if the given `parent` is not valid.
65 rpc ListIssueTemplates (ListIssueTemplatesRequest) returns (ListIssueTemplatesResponse) {}
66
67 // status: ALPHA
68 // Returns all field defs for specified project.
69 //
70 // Raises:
71 // NOT_FOUND if the request arent project is not found.
72 // INVALID_ARGUMENT if the given `parent` is not valid.
73 rpc ListComponentDefs (ListComponentDefsRequest) returns (ListComponentDefsResponse) {}
74
75 // status: NOT READY
76 // Returns all projects hosted on Monorail.
77 rpc ListProjects (ListProjectsRequest) returns (ListProjectsResponse) {}
78}
79
80// Request message for CreateFieldDef method.
81// Next available tag: 3
82message CreateFieldDefRequest {
83 // The project resource where this field will be created.
84 string parent = 1 [
85 (google.api.field_behavior) = REQUIRED,
86 (google.api.resource_reference) = {type: "api.crbug.com/Project" }];
87 // The field to create.
88 // It must have a display_name and a type with its corresponding settings.
89 FieldDef fielddef = 2 [ (google.api.field_behavior) = REQUIRED ];
90}
91
Adrià Vilanova Martínezf5e10392021-12-07 22:55:40 +010092// Request message for GetComponentDef method.
93// Next available tag: 2
94message GetComponentDefRequest {
95 string name = 1 [
96 (google.api.resource_reference) = { type: "api.crbug.com/ComponentDef" },
97 (google.api.field_behavior) = REQUIRED ];
98}
99
Copybara854996b2021-09-07 19:36:02 +0000100// Request message for CreateComponentDef method.
101// Next available tag: 3
102message CreateComponentDefRequest {
103 // The project resource where this component will be created.
104 string parent = 1 [
105 (google.api.field_behavior) = REQUIRED,
106 (google.api.resource_reference) = {type: "api.crbug.com/Project" }];
107 // The component to create.
108 ComponentDef component_def = 2 [ (google.api.field_behavior) = REQUIRED ];
109}
110
111// Request message for DeleteComponentDef method.
112// Next available tag: 2
113message DeleteComponentDefRequest {
114 // The component to delete.
115 string name = 1 [
116 (google.api.field_behavior) = REQUIRED,
117 (google.api.resource_reference) = {type: "api.crbug.com/ComponentDef"}];
118}
119
120// Request message for ListIssueTemplates
121// Next available tag: 4
122message ListIssueTemplatesRequest {
123 // The name of the project these templates belong to.
124 string parent = 1 [
125 (google.api.resource_reference) = {type: "api.crbug.com/Project"},
126 (google.api.field_behavior) = REQUIRED ];
127 // The maximum number of items to return. The service may return fewer than
128 // this value.
129 int32 page_size = 2;
130 // A page token, received from a previous `ListIssueTemplates` call.
131 // Provide this to retrieve the subsequent page.
132 // When paginating, all other parameters provided to
133 // `ListIssueTemplatesRequest` must match the call that provided the token.
134 string page_token = 3;
135}
136
137// Response message for ListIssueTemplates
138// Next available tag: 3
139message ListIssueTemplatesResponse {
140 // Templates matching the given request.
141 repeated IssueTemplate templates = 1;
142 // A token, which can be sent as `page_token` to retrieve the next page.
143 // If this field is omitted, there are no subsequent pages.
144 string next_page_token = 2;
145}
146
147// Request message for ListComponentDefs
148// Next available tag: 4
149message ListComponentDefsRequest {
150 // The name of the parent project.
151 string parent = 1 [
152 (google.api.resource_reference) = {type: "api.crbug.com/Project"},
153 (google.api.field_behavior) = REQUIRED ];
154 // The maximum number of items to return. The service may return fewer than
155 // this value.
156 int32 page_size = 2;
157 // A page token, received from a previous `ListComponentDefs` call.
158 // Provide this to retrieve the subsequent page.
159 // When paginating, all other parameters provided to
160 // `ListComponentDefsRequest` must match the call that provided the token.
161 string page_token = 3;
162}
163
164// Response message for ListComponentDefs
165// Next available tag: 3
166message ListComponentDefsResponse {
167 // Component defs matching the given request.
168 repeated ComponentDef component_defs = 1;
169 // A token which can be sent as `page_token` to retrieve the next page.
170 // If this field is omitted, there are no subsequent pages.
171 string next_page_token = 2;
172}
173
174// Request message for ListProjects
175// Next available tag: 3
176message ListProjectsRequest {
177 // The maximum number of items to return. The service may return fewer than
178 // this value.
179 int32 page_size = 1;
180 // A page token, received from a previous `ListProjects` call.
181 // Provide this to retrieve the subsequent page.
182 string page_token = 2;
183}
184
185// Response message for ListProjects
186// Next available tag: 3
187message ListProjectsResponse {
188 // Projects matching the given request.
189 repeated Project projects = 1;
190 // A token, which can be sent as `page_token` to retrieve the next page.
191 // If this field is omitted, there are no subsequent pages.
192 string next_page_token = 2;
193}