How to call a Confluence Custom REST Endpoint from JIRA Custom REST Endpoint

Koen Gillard (CalmWare) July 7, 2016

Hi

I'd like to call a Confluence Custom REST endpoint (built using Scriptrunner for Confluence) from within a JIRA Custom REST Endpoint?

(How) can this be done?

Kind regards

Koen Gillard

 

1 answer

1 vote
Jonny Carter
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 8, 2016

In the body of your Confluence REST endpoint method, you can use any valid Java/Groovy methods to call any external REST API, including those in JIRA.

The Groovy HttpBuilder library is particularly handy for making web requests, and has a RESTClient class that makes rest operations pretty simple.

Note that in most of the examples in the HttpBuilder documentation use  @Grab to pull in HttpBuilder as a dependency, but you won't need to. ScriptRunner already pulls it in, so you can just import it.

Example code:

import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import groovy.transform.BaseScript

import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response
 
import groovyx.net.http.RESTClient

@BaseScript CustomEndpointDelegate delegate 

doSomething( 
    httpMethod: "GET", groups: ["jira-users"] 
) { MultivaluedMap queryParams, String body -> 
    def confluence = new RESTClient( 'https://my.confluence.suf/rest/api/myCustomEndPoint')
    def response = confluence.get([:]) //simple empty get call, could replace with post, etc.
    //You'll probably need to process the data you get back from the endpoint for your return code. Here, I'll just return it "as-is"
    return Response.ok(response.data).build() 
}

Suggest an answer

Log in or Sign up to answer