Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×I am trying to create a rest endpoint using Groovy Scriptrunner , need help.
my groovy code is adding user from a customfield to a group.
how to make it as a REST endpoint so that i can call it externally as a JIRA rest api
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.security.groups.GroupManager import com.atlassian.jira.user.ApplicationUser @BaseScript CustomEndpointDelegate delegate addUserToGroup(httpMethod: "PUT", groups: ["jira-administrators"]) { MultivaluedMap queryParams, String body, HttpServletRequest request -> GroupManager groupManager = ComponentAccessor.getGroupManager(); try { groupManager.addUserToGroup(((ApplicationUser) issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("ABCD"))).getDirectoryUser() , groupManager.getGroup("Group")) } catch (NullPointerException e){ }
Hello Abyakta.
I already answered your request in our service desk, but I think this is a very good example to place here, so I'm going to repost this.
This is a REST GET endpoint that will successfully add a user to the group "jira-administrators"
import com.atlassian.jira.component.ComponentAccessor import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate import groovy.json.JsonBuilder import groovy.transform.BaseScript import javax.servlet.http.HttpServletRequest import javax.ws.rs.core.Response @BaseScript CustomEndpointDelegate delegate addUserToJiraAdmins(httpMethod: "GET") { queryParams, body, HttpServletRequest request -> def userName = request.getParameter("userName") if (userName) { def groupManager = ComponentAccessor.getGroupManager() def jiraUserManager = ComponentAccessor.getUserManager() def user = jiraUserManager.getUserByName(userName) if(!user){ return Response.noContent().build() } def group = groupManager.getGroup("jira-administrators") groupManager.addUserToGroup(user, group) return Response.ok(new JsonBuilder([user: userName, group: "jira-administrators"]).toString()).build() } else return Response.noContent().build() }
You would test that this works by simply typing in your browser:
jiraBaseURL/rest/scriptrunner/latest/custom/addUserToJiraAdmins/?userName=YOURUSER
Please bear in mind that I made this as a REST request only so that you can test that it works right away, the best way of doing this would be following the REST conventions and use a PUT request, instead of a GET.
You should also give our REST endpoint doco a look for further reference.
Regards,
Daniel
Thanks Daniel for the help. But the above Code can be run by any one . can i make it only for Admins .
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.