Skip to end of banner
Go to start of banner

callRest

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

callRest

This is a custom Nunjucks filter that makes an http(s) call to an external REST API. It operates on a string representing the REST API endpoint to call, and it returns the response as JSON (unless customized using the noJSON parameter)

To make a call to any Jira Cloud REST API on the current Jira instance then use callJira() filter

On this page:

Applies to

A string representing the REST API endpoint to call. For example "https://reqres.in/api/users". Note it can also be another Jira instance like https://example.atlassian.net/

Parameters

Note the use of named parameters instead of positional parameters because of the number of parameters and their optional nature.

Named parameter

Description

Examples

verb

Indicates the HTTP verb such as GET (to get information), PUT (to update existing information), POST (to post or create a new item), DELETE (to delete an item).

The default is GET.

The verb is not case-sensitive.

  • {{ "https://reqres.in/api/users" | callRest() | dump(2)}} dumps all the users in a pretty JSON format

  • {{ "https://reqres.in/api/users/1" | callRest( verb="PUT",
    body= {
    	"data": [{
    		"first_name": "David"
    	}]
    }) | dump(2)}}

updates the first name of the user whose id is 1

  • {{ "https://reqres.in/api/users" | callRest( verb="post",
    body={
        "name": "morpheus",
        "job": "leader"
    }) }}

creates a new user in the rest API

  • {{ "https://reqres.in/api/users/12" | callRest(verb="delete") | dump(2)}} deletes the user with id 12

params

Indicates the parameters to be passed to replace placeholders in the rest-url. It is a hash of key and values. Any instance of ":key" in the rest-url is replaced with its value found in the hash under "key". The value will be Uri-Encoded.

The default is no param

{{ "https://reqres.in/api/users/:id" | callRest(params={"id":"11"}) | dump(2)}} dumps the information of the user with id 11.

query

Indicates the query parameters to be added to the http call. It is a hash of key and values. The values must be scalar and will be encoded appropriately. This is used to return a subset of fields.

The default is no query param.

{{ "https://reqres.in/api/users" | callRest(verb= "GET",query={"id":"2"}) | dump(2)}} will call https://reqres.in/api/users?id=2 and dump the information of the user with the id 2.

body

Indicates the body to pass to PUT and POST calls. It is an object that will be automatically converted to JSON.

The default is no body.

{{ "https://reqres.in/api/users" | callRest( verb="post",
body={
    "name": "morpheus",
    "job": "leader"
}) }}

creates a new user in the API with the information provided in the body

options

Indicates the options passed to the "request" call. It can be used in particular to pass authentication information (see https://www.npmjs.com/package/request#http-authentication) but many other options are supported (see https://www.npmjs.com/package/request#requestoptions-callback for the entire list).

The default is no option.

{{ "https://example.atlassian.net/rest/api/2/issue/TEST-1" | callRest(
options = { "auth": 
  {"username" : "abc@example.com",
    "password": "sdfuhsdlsle9t739875983" 
  }
})
| dump(2)}}

dumps the information of the issue with key TEST-1 operating with the provided authentication information.

noJSON

Controls the response format. If true, the response body will be returned as is instead of being parsed as JSON. Also, the request body will not be automatically converted to JSON.

The default is false

{{ "https://currency-exchange.p.rapidapi.com/listquotes" | 
callRest( options = {
    headers: {
      "x-rapidapi-host": "currency-exchange.p.rapidapi.com",
      "x-rapidapi-key": "89397d9ee7msh152cdc367c4c66fp16691ejsn9bb6a580e905"
    }
  },noJSON=true) | dump }}

dumps the response as plain text.

dontFail

If true, when the REST call returns an error, instead of throwing an exception, the error will be returned as an object containing an _error and/or a _statusCode field.

  • {{ "https://httpstat.us/404" | callRest(dontFail=true) | dump(2)}} returns:

    {
      "_error": {
        "code": 404,
        "description": "Not Found"
      },
      "_statusCode": 404
    }

fixedIP

If true, the REST call is made from a fixed static IP address, which users can then whitelist for security purposes.

The following IP addresses are used:

  • 34.232.217.139

  • 18.213.181.255

The default is false

{{ "https://currency-exchange.p.rapidapi.com/listquotes" | 
callRest( options = {
    headers: {
      "x-rapidapi-host": "currency-exchange.p.rapidapi.com",
      "x-rapidapi-key": "89397d9ee7msh152cdc367c4c66fp16691ejsn9bb6a580e905"
    }
  },fixedIP=true) | dump }}

Examples

Here are a few examples using the callRest filter

Get the information from an API

{{ "https://reqres.in/api/users" | callRest(query={"id":"2"}) | dump(2)}} 

Gets the information of a user with id 2 and outputs the information in a pretty JSON format with 2 spaces indentation.

Get issue information from another Jira instance

Using this filter you can make calls to another Jira instance. You will need to authenticate using the username (one used to log in to the instance) and password (the API token created for the destination instance).

{{ "https://example.atlassian.net/rest/api/2/issue/TEST-1" | callRest(
options = { "auth": 
  {"username" : "abc@example.com",
    "password": "sdfuhsdlsle9t739875983" 
  }
})
| dump(2)}}

dumps the details of the issue with key TEST-1 using the provided authentication information.

Convert the amount in a custom field to a specific currency

{{ "https://currency-exchange.p.rapidapi.com/exchange" | 
 callRest( query={ "q": "1.0", "from": "USD", "to": "INR"},
  options = ( { headers: { 
   "x-rapidapi-host": "currency-exchange.p.rapidapi.com",
   "x-rapidapi-key": "89397d9ee7msh152cdc367c4c66fp16691ejsn9bb6a580e905" 
   } 
  } )
 ) * issue.fields.customfield_11507 }}

returns the amount in the custom field in INR currency.

Use a callRest response in a template

In scenarios where the response from a REST API needs to be used in a template, use the {% set %} tag. For example:

{% set response = "https://reqres.in/api/users" | callRest(query={"id":"2"}) | dump(2) 
%}
{{ response }}
{# remainder of template #}

  • No labels