Skip to main content
Example scripts
arrow icon
To homepage
Jira
Data centre icon
Data Center

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

Created 2 year(s) ago, Updated 8 month(s) ago
App in script
ScriptRunner For Jira
ScriptRunner For Jira
by Adaptavist
Compatibility
compatibility bullet
Jira (8.0 - 8.19)
compatibility bullet
ScriptRunner For Jira (7.10.0)
Language |
groovy
import com.atlassian.jira.config.IssueTypeManager
import com.atlassian.jira.project.ProjectManager
import com.atlassian.sal.api.ApplicationProperties
import com.atlassian.sal.api.UrlMode
import com.atlassian.sal.api.net.Request
import com.atlassian.sal.api.net.TrustedRequestFactory
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import groovyx.net.http.URIBuilder

@PluginModule
TrustedRequestFactory trustedRequestFactory

@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 request = trustedRequestFactory.createTrustedRequest(Request.MethodType.POST, url)

def host = new URIBuilder(url).host
request.addTrustedTokenAuthentication(host)
request.setRequestBody(JsonOutput.toJson([
    fields: [
        project: [
            id: project.id
        ],
        issuetype: [
            id: issueType.id
        ],
        summary: 'build me a rocket',
    ]
]), 'application/json')

def responseBody = request.execute()

def issueAsMap = new JsonSlurper().parseText(responseBody) 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