aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-ws/src/main/protobuf/ws-qualitygates.proto
blob: e59873e098f6a49b3fdfc8bb525782fa785c3f04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
// SonarQube, open source software quality management tool.
// Copyright (C) 2008-2016 SonarSource
// mailto:contact AT sonarsource DOT com
//
// SonarQube is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 3 of the License, or (at your option) any later version.
//
// SonarQube is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

syntax = "proto2";

package sonarqube.ws.qualitygate;

import "ws-commons.proto";

option java_package = "org.sonarqube.ws";
option java_outer_classname = "Qualitygates";
option optimize_for = SPEED;

// GET api/qualitygates/project_status
message ProjectStatusResponse {
  optional ProjectStatus projectStatus = 1;

  message ProjectStatus {
    optional Status status = 1;
    repeated Condition conditions = 2;
    repeated Period periods = 3;
    optional bool ignoredConditions = 4;
    optional NewCodePeriod period = 5;
  }

  message Condition {
    optional Status status = 1;
    optional string metricKey = 2;
    optional Comparator comparator = 3;
    optional int32 periodIndex = 4;
    optional string warningThreshold = 5;
    optional string errorThreshold = 6;
    optional string actualValue = 7;
  }

    message NewCodePeriod {
      optional string mode = 1;
      optional string date = 2;
      optional string parameter = 3;
    }

  message Period {
    optional int32 index = 1;
    optional string mode = 2;
    optional string date = 3;
    optional string parameter = 4;
  }

  enum Status {
    OK = 1;
    WARN = 2;
    ERROR = 3;
    NONE = 4;
  }

  enum Comparator {
    GT = 1;
    LT = 2;
    EQ = 3;
    NE = 4;
  }
}

// GET api/qualitygates/get_by_project
message GetByProjectResponse {
  optional QualityGate qualityGate = 1;
}

message QualityGate {
  optional string id = 1;
  optional string name = 2;
  optional bool default = 3;
}

// GET api/qualitygates/app
message AppResponse {
  optional bool edit = 1;
  repeated Metric metrics = 3;

  message Metric {
    optional string key = 1;
    optional string name = 2;
    optional string type = 3;
    optional string domain = 4;
    optional bool hidden = 5;
  }
}

// POST api/qualitygates/create
message CreateResponse {
  optional string id = 1;
  optional string name = 2;
}

// POST api/qualitygates/create_condition
message CreateConditionResponse {
  optional string id = 1;
  optional string metric = 2;
  optional string op = 3;
  optional string error = 5;
}

// POST api/qualitygates/update_condition
message UpdateConditionResponse {
  optional string id = 1;
  optional string metric = 2;
  optional string op = 3;
  optional string error = 5;
}

// GET api/qualitygates/show
message ShowWsResponse {
  optional string id = 1;
  optional string name = 2;
  repeated Condition conditions = 3;
  optional bool isBuiltIn = 4;
  optional Actions actions = 5;

  message Condition {
    optional string id = 1;
    optional string metric = 2;
    optional string op = 4;
    optional string error = 6;
  }
}

// GET api/qualitygates/search
message SearchResponse {
  // Deprecated since 7.9
  optional bool more = 1;
  repeated Result results = 2;
  optional sonarqube.ws.commons.Paging paging = 3;

  message Result {
    optional string name = 2;
    optional bool selected = 3;
    optional string key = 4;
  }
}

// GET api/qualitygates/list
message ListWsResponse {
  repeated QualityGate qualitygates = 1;
  // Deprecated since 7.0
  optional string default = 2;
  optional RootActions actions = 3;

  message QualityGate {
    optional string id = 1;
    optional string name = 2;
    optional bool isDefault = 3;
    optional bool isBuiltIn = 4;
    optional Actions actions = 5;
  }

  message RootActions {
    optional bool create = 1;
  }
}

message Actions {
  optional bool rename = 1;
  optional bool setAsDefault = 2;
  optional bool copy = 3;
  optional bool associateProjects = 4;
  optional bool delete = 5;
  optional bool manageConditions = 6;
  optional bool delegate = 7;
}

// WS api/qualitygates/search_users
message SearchUsersResponse {
  optional sonarqube.ws.commons.Paging paging = 1;
  repeated User users = 2;

  message User {
    optional string login = 1;
    optional string name = 2;
    optional string avatar = 3;
    optional bool selected = 4;
  }
}

// WS api/qualitygates/search_groups
message SearchGroupsResponse {
  optional sonarqube.ws.commons.Paging paging = 1;
  repeated Group groups = 2;

  message Group {
    optional string name = 1;
    optional string description = 2;
    optional bool selected = 3;
  }
}