You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PermissionsService.java 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2021 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonarqube.ws.client.permissions;
  21. import java.util.stream.Collectors;
  22. import javax.annotation.Generated;
  23. import org.sonarqube.ws.MediaTypes;
  24. import org.sonarqube.ws.client.BaseService;
  25. import org.sonarqube.ws.client.GetRequest;
  26. import org.sonarqube.ws.client.PostRequest;
  27. import org.sonarqube.ws.client.WsConnector;
  28. import org.sonarqube.ws.Permissions.CreateTemplateWsResponse;
  29. import org.sonarqube.ws.Permissions.WsGroupsResponse;
  30. import org.sonarqube.ws.Permissions.WsSearchGlobalPermissionsResponse;
  31. import org.sonarqube.ws.Permissions.SearchProjectPermissionsWsResponse;
  32. import org.sonarqube.ws.Permissions.SearchTemplatesWsResponse;
  33. import org.sonarqube.ws.Permissions.WsTemplateGroupsResponse;
  34. import org.sonarqube.ws.Permissions.UpdateTemplateWsResponse;
  35. import org.sonarqube.ws.Permissions.UsersWsResponse;
  36. /**
  37. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions">Further information about this web service online</a>
  38. */
  39. @Generated("sonar-ws-generator")
  40. public class PermissionsService extends BaseService {
  41. public PermissionsService(WsConnector wsConnector) {
  42. super(wsConnector, "api/permissions");
  43. }
  44. /**
  45. *
  46. * This is part of the internal API.
  47. * This is a POST request.
  48. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/add_group">Further information about this action online (including a response example)</a>
  49. * @since 5.2
  50. */
  51. public void addGroup(AddGroupRequest request) {
  52. call(
  53. new PostRequest(path("add_group"))
  54. .setParam("groupId", request.getGroupId())
  55. .setParam("groupName", request.getGroupName())
  56. .setParam("permission", request.getPermission())
  57. .setParam("projectId", request.getProjectId())
  58. .setParam("projectKey", request.getProjectKey())
  59. .setMediaType(MediaTypes.JSON)
  60. ).content();
  61. }
  62. /**
  63. *
  64. * This is part of the internal API.
  65. * This is a POST request.
  66. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/add_group_to_template">Further information about this action online (including a response example)</a>
  67. * @since 5.2
  68. */
  69. public void addGroupToTemplate(AddGroupToTemplateRequest request) {
  70. call(
  71. new PostRequest(path("add_group_to_template"))
  72. .setParam("groupId", request.getGroupId())
  73. .setParam("groupName", request.getGroupName())
  74. .setParam("permission", request.getPermission())
  75. .setParam("templateId", request.getTemplateId())
  76. .setParam("templateName", request.getTemplateName())
  77. .setMediaType(MediaTypes.JSON)
  78. ).content();
  79. }
  80. /**
  81. *
  82. * This is part of the internal API.
  83. * This is a POST request.
  84. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/add_project_creator_to_template">Further information about this action online (including a response example)</a>
  85. * @since 6.0
  86. */
  87. public void addProjectCreatorToTemplate(AddProjectCreatorToTemplateRequest request) {
  88. call(
  89. new PostRequest(path("add_project_creator_to_template"))
  90. .setParam("permission", request.getPermission())
  91. .setParam("templateId", request.getTemplateId())
  92. .setParam("templateName", request.getTemplateName())
  93. .setMediaType(MediaTypes.JSON)
  94. ).content();
  95. }
  96. /**
  97. *
  98. * This is part of the internal API.
  99. * This is a POST request.
  100. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/add_user">Further information about this action online (including a response example)</a>
  101. * @since 5.2
  102. */
  103. public void addUser(AddUserRequest request) {
  104. call(
  105. new PostRequest(path("add_user"))
  106. .setParam("login", request.getLogin())
  107. .setParam("permission", request.getPermission())
  108. .setParam("projectId", request.getProjectId())
  109. .setParam("projectKey", request.getProjectKey())
  110. .setMediaType(MediaTypes.JSON)
  111. ).content();
  112. }
  113. /**
  114. *
  115. * This is part of the internal API.
  116. * This is a POST request.
  117. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/add_user_to_template">Further information about this action online (including a response example)</a>
  118. * @since 5.2
  119. */
  120. public void addUserToTemplate(AddUserToTemplateRequest request) {
  121. call(
  122. new PostRequest(path("add_user_to_template"))
  123. .setParam("login", request.getLogin())
  124. .setParam("permission", request.getPermission())
  125. .setParam("templateId", request.getTemplateId())
  126. .setParam("templateName", request.getTemplateName())
  127. .setMediaType(MediaTypes.JSON)
  128. ).content();
  129. }
  130. /**
  131. *
  132. * This is part of the internal API.
  133. * This is a POST request.
  134. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/apply_template">Further information about this action online (including a response example)</a>
  135. * @since 5.2
  136. */
  137. public void applyTemplate(ApplyTemplateRequest request) {
  138. call(
  139. new PostRequest(path("apply_template"))
  140. .setParam("projectId", request.getProjectId())
  141. .setParam("projectKey", request.getProjectKey())
  142. .setParam("templateId", request.getTemplateId())
  143. .setParam("templateName", request.getTemplateName())
  144. .setMediaType(MediaTypes.JSON)
  145. ).content();
  146. }
  147. /**
  148. *
  149. * This is part of the internal API.
  150. * This is a POST request.
  151. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/bulk_apply_template">Further information about this action online (including a response example)</a>
  152. * @since 5.5
  153. */
  154. public void bulkApplyTemplate(BulkApplyTemplateRequest request) {
  155. call(
  156. new PostRequest(path("bulk_apply_template"))
  157. .setParam("analyzedBefore", request.getAnalyzedBefore())
  158. .setParam("onProvisionedOnly", request.getOnProvisionedOnly())
  159. .setParam("projects", request.getProjects() == null ? null : request.getProjects().stream().collect(Collectors.joining(",")))
  160. .setParam("q", request.getQ())
  161. .setParam("qualifiers", request.getQualifiers() == null ? null : request.getQualifiers().stream().collect(Collectors.joining(",")))
  162. .setParam("templateId", request.getTemplateId())
  163. .setParam("templateName", request.getTemplateName())
  164. .setParam("visibility", request.getVisibility())
  165. .setMediaType(MediaTypes.JSON)
  166. ).content();
  167. }
  168. /**
  169. *
  170. * This is part of the internal API.
  171. * This is a POST request.
  172. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/create_template">Further information about this action online (including a response example)</a>
  173. * @since 5.2
  174. */
  175. public CreateTemplateWsResponse createTemplate(CreateTemplateRequest request) {
  176. return call(
  177. new PostRequest(path("create_template"))
  178. .setParam("description", request.getDescription())
  179. .setParam("name", request.getName())
  180. .setParam("projectKeyPattern", request.getProjectKeyPattern()),
  181. CreateTemplateWsResponse.parser());
  182. }
  183. /**
  184. *
  185. * This is part of the internal API.
  186. * This is a POST request.
  187. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/delete_template">Further information about this action online (including a response example)</a>
  188. * @since 5.2
  189. */
  190. public void deleteTemplate(DeleteTemplateRequest request) {
  191. call(
  192. new PostRequest(path("delete_template"))
  193. .setParam("templateId", request.getTemplateId())
  194. .setParam("templateName", request.getTemplateName())
  195. .setMediaType(MediaTypes.JSON)
  196. ).content();
  197. }
  198. /**
  199. *
  200. * This is part of the internal API.
  201. * This is a GET request.
  202. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/groups">Further information about this action online (including a response example)</a>
  203. * @since 5.2
  204. */
  205. public WsGroupsResponse groups(GroupsRequest request) {
  206. return call(
  207. new GetRequest(path("groups"))
  208. .setParam("p", request.getP())
  209. .setParam("permission", request.getPermission())
  210. .setParam("projectId", request.getProjectId())
  211. .setParam("projectKey", request.getProjectKey())
  212. .setParam("ps", request.getPs())
  213. .setParam("q", request.getQ()),
  214. WsGroupsResponse.parser());
  215. }
  216. /**
  217. *
  218. * This is part of the internal API.
  219. * This is a POST request.
  220. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/remove_group">Further information about this action online (including a response example)</a>
  221. * @since 5.2
  222. */
  223. public void removeGroup(RemoveGroupRequest request) {
  224. call(
  225. new PostRequest(path("remove_group"))
  226. .setParam("groupId", request.getGroupId())
  227. .setParam("groupName", request.getGroupName())
  228. .setParam("permission", request.getPermission())
  229. .setParam("projectId", request.getProjectId())
  230. .setParam("projectKey", request.getProjectKey())
  231. .setMediaType(MediaTypes.JSON)
  232. ).content();
  233. }
  234. /**
  235. *
  236. * This is part of the internal API.
  237. * This is a POST request.
  238. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/remove_group_from_template">Further information about this action online (including a response example)</a>
  239. * @since 5.2
  240. */
  241. public void removeGroupFromTemplate(RemoveGroupFromTemplateRequest request) {
  242. call(
  243. new PostRequest(path("remove_group_from_template"))
  244. .setParam("groupId", request.getGroupId())
  245. .setParam("groupName", request.getGroupName())
  246. .setParam("permission", request.getPermission())
  247. .setParam("templateId", request.getTemplateId())
  248. .setParam("templateName", request.getTemplateName())
  249. .setMediaType(MediaTypes.JSON)
  250. ).content();
  251. }
  252. /**
  253. *
  254. * This is part of the internal API.
  255. * This is a POST request.
  256. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/remove_project_creator_from_template">Further information about this action online (including a response example)</a>
  257. * @since 6.0
  258. */
  259. public void removeProjectCreatorFromTemplate(RemoveProjectCreatorFromTemplateRequest request) {
  260. call(
  261. new PostRequest(path("remove_project_creator_from_template"))
  262. .setParam("permission", request.getPermission())
  263. .setParam("templateId", request.getTemplateId())
  264. .setParam("templateName", request.getTemplateName())
  265. .setMediaType(MediaTypes.JSON)
  266. ).content();
  267. }
  268. /**
  269. *
  270. * This is part of the internal API.
  271. * This is a POST request.
  272. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/remove_user">Further information about this action online (including a response example)</a>
  273. * @since 5.2
  274. */
  275. public void removeUser(RemoveUserRequest request) {
  276. call(
  277. new PostRequest(path("remove_user"))
  278. .setParam("login", request.getLogin())
  279. .setParam("permission", request.getPermission())
  280. .setParam("projectId", request.getProjectId())
  281. .setParam("projectKey", request.getProjectKey())
  282. .setMediaType(MediaTypes.JSON)
  283. ).content();
  284. }
  285. /**
  286. *
  287. * This is part of the internal API.
  288. * This is a POST request.
  289. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/remove_user_from_template">Further information about this action online (including a response example)</a>
  290. * @since 5.2
  291. */
  292. public void removeUserFromTemplate(RemoveUserFromTemplateRequest request) {
  293. call(
  294. new PostRequest(path("remove_user_from_template"))
  295. .setParam("login", request.getLogin())
  296. .setParam("permission", request.getPermission())
  297. .setParam("templateId", request.getTemplateId())
  298. .setParam("templateName", request.getTemplateName())
  299. .setMediaType(MediaTypes.JSON)
  300. ).content();
  301. }
  302. /**
  303. *
  304. * This is part of the internal API.
  305. * This is a GET request.
  306. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/search_global_permissions">Further information about this action online (including a response example)</a>
  307. * @since 5.2
  308. * @deprecated since 6.5
  309. */
  310. @Deprecated
  311. public WsSearchGlobalPermissionsResponse searchGlobalPermissions(SearchGlobalPermissionsRequest request) {
  312. return call(
  313. new GetRequest(path("search_global_permissions")),
  314. WsSearchGlobalPermissionsResponse.parser());
  315. }
  316. /**
  317. *
  318. * This is part of the internal API.
  319. * This is a GET request.
  320. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/search_project_permissions">Further information about this action online (including a response example)</a>
  321. * @since 5.2
  322. * @deprecated since 6.5
  323. */
  324. @Deprecated
  325. public SearchProjectPermissionsWsResponse searchProjectPermissions(SearchProjectPermissionsRequest request) {
  326. return call(
  327. new GetRequest(path("search_project_permissions"))
  328. .setParam("p", request.getP())
  329. .setParam("projectId", request.getProjectId())
  330. .setParam("projectKey", request.getProjectKey())
  331. .setParam("ps", request.getPs())
  332. .setParam("q", request.getQ())
  333. .setParam("qualifier", request.getQualifier()),
  334. SearchProjectPermissionsWsResponse.parser());
  335. }
  336. /**
  337. *
  338. * This is part of the internal API.
  339. * This is a GET request.
  340. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/search_templates">Further information about this action online (including a response example)</a>
  341. * @since 5.2
  342. */
  343. public SearchTemplatesWsResponse searchTemplates(SearchTemplatesRequest request) {
  344. return call(
  345. new GetRequest(path("search_templates"))
  346. .setParam("q", request.getQ()),
  347. SearchTemplatesWsResponse.parser());
  348. }
  349. /**
  350. *
  351. * This is part of the internal API.
  352. * This is a POST request.
  353. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/set_default_template">Further information about this action online (including a response example)</a>
  354. * @since 5.2
  355. */
  356. public void setDefaultTemplate(SetDefaultTemplateRequest request) {
  357. call(
  358. new PostRequest(path("set_default_template"))
  359. .setParam("qualifier", request.getQualifier())
  360. .setParam("templateId", request.getTemplateId())
  361. .setParam("templateName", request.getTemplateName())
  362. .setMediaType(MediaTypes.JSON)
  363. ).content();
  364. }
  365. /**
  366. *
  367. * This is part of the internal API.
  368. * This is a GET request.
  369. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/template_groups">Further information about this action online (including a response example)</a>
  370. * @since 5.2
  371. */
  372. public WsTemplateGroupsResponse templateGroups(TemplateGroupsRequest request) {
  373. return call(
  374. new GetRequest(path("template_groups"))
  375. .setParam("p", request.getP())
  376. .setParam("permission", request.getPermission())
  377. .setParam("ps", request.getPs())
  378. .setParam("q", request.getQ())
  379. .setParam("templateId", request.getTemplateId())
  380. .setParam("templateName", request.getTemplateName()),
  381. WsTemplateGroupsResponse.parser());
  382. }
  383. /**
  384. *
  385. * This is part of the internal API.
  386. * This is a GET request.
  387. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/template_users">Further information about this action online (including a response example)</a>
  388. * @since 5.2
  389. */
  390. public String templateUsers(TemplateUsersRequest request) {
  391. return call(
  392. new GetRequest(path("template_users"))
  393. .setParam("p", request.getP())
  394. .setParam("permission", request.getPermission())
  395. .setParam("ps", request.getPs())
  396. .setParam("q", request.getQ())
  397. .setParam("templateId", request.getTemplateId())
  398. .setParam("templateName", request.getTemplateName())
  399. .setMediaType(MediaTypes.JSON)
  400. ).content();
  401. }
  402. /**
  403. *
  404. * This is part of the internal API.
  405. * This is a POST request.
  406. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/update_template">Further information about this action online (including a response example)</a>
  407. * @since 5.2
  408. */
  409. public UpdateTemplateWsResponse updateTemplate(UpdateTemplateRequest request) {
  410. return call(
  411. new PostRequest(path("update_template"))
  412. .setParam("description", request.getDescription())
  413. .setParam("id", request.getId())
  414. .setParam("name", request.getName())
  415. .setParam("projectKeyPattern", request.getProjectKeyPattern()),
  416. UpdateTemplateWsResponse.parser());
  417. }
  418. /**
  419. *
  420. * This is part of the internal API.
  421. * This is a GET request.
  422. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/permissions/users">Further information about this action online (including a response example)</a>
  423. * @since 5.2
  424. */
  425. public UsersWsResponse users(UsersRequest request) {
  426. return call(
  427. new GetRequest(path("users"))
  428. .setParam("p", request.getP())
  429. .setParam("permission", request.getPermission())
  430. .setParam("projectId", request.getProjectId())
  431. .setParam("projectKey", request.getProjectKey())
  432. .setParam("ps", request.getPs())
  433. .setParam("q", request.getQ()),
  434. UsersWsResponse.parser());
  435. }
  436. }