Example scripts
To homepage
Jira

Use TrustedRequestFactory to make an HTTP POST request without the user password
App in script

ScriptRunner For Jira
by Adaptavist
Compatibility

Jira (8.0 - 8.19)

ScriptRunner For Jira (7.10.0)
Language |
groovy
import com.atlassian.jira.config.IssueTypeManager
import com.atlassian.jira.project.ProjectManager
import com.atlassian.oauth.Request
import com.atlassian.sal.api.ApplicationProperties
import com.atlassian.sal.api.UrlMode
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
import java.nio.charset.StandardCharsets
@PluginModule
ApplicationProperties applicationProperties
@PluginModule
ProjectManager projectManager
@PluginModule
IssueTypeManager issueTypeManager
def project = projectManager.getProjectByCurrentKey('JRA')
def issueType = issueTypeManager.issueTypes.find { it.name == 'Bug' }
def url = applicationProperties.getBaseUrl(UrlMode.CANONICAL) + '/rest/api/2/issue'
def requestBody = JsonOutput.toJson([
fields: [
project: [
id: project.id
],
issuetype: [
id: issueType.id
],
summary: 'build me a rocket',
]
])
def request = HttpRequest.newBuilder()
.uri(OAuthRequestSigner.createOAuthUri(url))
.header("Content-Type", "application/json")
.header("Authorization", OAuthRequestSigner.createAuthorizationHeader(url, Request.HttpMethod.POST))
.POST(HttpRequest.BodyPublishers.ofString(requestBody, StandardCharsets.UTF_8))
.build()
def response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString())
if (response.statusCode() >= 400) {
throw new Exception("Status code: ${response.statusCode()}. Response body: ${response.body()}")
}
def issueAsMap = new JsonSlurper().parseText(response.body()) as Map
issueAsMap
/*
responseBody is a JSON string that looks like:
{
"id": "10030",
"key": "JRA-8",
"self": "http://localhost:8080/jira/rest/api/2/issue/10030"
}
*/Having an issue with this script?
Report it here