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 Next »

Introduction

Now it is possible for 3rd party apps to get and edit lookup tables with the newly added REST endpoints

Resources

Table

 Get information for all the tables (GET)

METHOD

URL

Data

Sample Code

GET

/rest/lookuprestresource/1.0/lookup/table

Return an array of table information

Example

[
   {
      "columns":[
         {
            "id":4,
            "name":"Application"
         },
         {
            "id":5,
            "name":"App Owner"
         }
      ],
      "name":"App Mapping",
      "id":2
   }
]

//Get information for all the tables
def data = sendGetRequest("/rest/lookuprestresource/1.0/lookup/table/")
data.each{val -> 
  //TODO
}
 Add a new table (POST)

METHOD

URL

Data

Sample Code

POST

/rest/lookuprestresource/1.0/lookup/table

The data should be a valid JSON string containing the following information:

  • Name of the new table

  • Columns name of the new table

Example

{
   "name":"New_Table",
   "columns": ["Column_1, Column_2"]
}
def bodyData = '{"name":"New_Table","columns":["Column_1","Column_2"]}'
def responseData = sendPostRequest("/rest/lookuprestresource/1.0/lookup/table",bodyData)
//{columns=[{id=22, name=Column_1}, {id=23, name=Column_2}], name=New_Table, id=11}
 Update an existing table (PUT)

METHOD

URL

Data

Sample Code

PUT

/rest/lookuprestresource/1.0/lookup/table/{TABLE_NAME}

 Delete an existing table (DELETE)

METHOD

URL

Data

Sample Code

DELETE

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}

//Delete the data for table id 2
sendDeleteRequest("/rest/lookuprestresource/1.0/lookup/table/2")

Table row

 Get rows information for a table (GET)

METHOD

URL

Data

Sample Code

GET

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}/entries

Return the an array of rows information for a table

Example

[
   {
      "4":"Confuence",
      "5":"Leon",
      "id":7,
      "tableid":2
   },
   {
      "4":"Jira",
      "5":"admin",
      "id":15,
      "tableid":2
   }
]

//Get the rows information for table id 2
def data = sendGetRequest("/rest/lookuprestresource/1.0/lookup/table/2/entries")
data.each{val -> 
  //TODO
}

 Add a new row in a table (POST)

METHOD

URL

Data

Sample Code

POST

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}/entries

The row data should be a valid JSON string containing the following information:

  • KEY: column id

  • VALUE: cell data

Example

{
   "4":"Jira 8",
   "5":"admin"
}
def bodyData = '{"4":"Jira 8","5":"admin"}'
def responseData = sendPostRequest("/rest/lookuprestresource/1.0/lookup/table/2/entries", bodyData)
//Sample responseData: {4=Jira, 5=admin, id=20, tableid=2}
 Update an existing row in a table (PUT)

METHOD

URL

Data

Sample Code

PUT

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}/entries/{ROW_ID}

The data should be a valid JSON string containing the following information:

  • KEY: column id

  • VALUE: cell data

Example

{
   "4":"Jira",
   "5":"admin1"
}
//Update the data for row id 20
def bodyData = '{"4":"Jira","5":"admin1"}'
def responseData = sendPutRequest("/rest/lookuprestresource/1.0/lookup/table/2/entries/20",bodyData)
//Sample responseData: {4=Jira, 5=admin1, id=20, tableid=2}
 Delete an existing row in a table (DELETE)

METHOD

URL

Data

Sample Code

DELETE

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}/entries/{ROW_ID}

//Delete the data for row id 20
sendDeleteRequest("/rest/lookuprestresource/1.0/lookup/table/2/entries/20")

Table Column

 Get columns information for a table (GET)

METHOD

URL

Data

Sample Code

GET

/rest/lookuprestresource/1.0/lookup/table/{TABLE_ID}/columns

Return the columns information for a table

Example

{
   "columns":[
      {
         "id":4,
         "name":"Application"
      },
      {
         "id":5,
         "name":"App Owner"
      }
   ],
   "name":"App Mapping",
   "id":2
}

//Get the columns information for table id 2
def data = sendGetRequest("/rest/lookuprestresource/1.0/lookup/table/2/columns")
data.each{val -> 
  //TODO
}

Useful Methods

 Send GET request
def sendGetRequest(url) {
    def log = Logger.getLogger("LookupManager")
    log.setLevel(Level.DEBUG)

    //Step 1: Set base URL, E.g. http://localhost:2990/jira
    def baseUrl = "http://localhost:2990/jira";

    //Step 2: Set username and password
    def userName = "admin"
    def password = "admin"

    def http = new HTTPBuilder(baseUrl + url)
    http.request(GET) {
        headers.
        'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
        headers.
        'X-Atlassian-Token' = 'no-check';
        requestContentType = URLENC

        response.success = {resp, data ->
            log.debug("SUCCESS: " + resp.status)
            log.debug(data)
        }

        response.failure = { resp,data ->
            log.error("ERROR: " + resp.status)
            log.error(data)
        }
    }
}
 Send POST request with data
def sendPostRequest(url, bodyData) {
    def log = Logger.getLogger("LookupManager")
    log.setLevel(Level.DEBUG)
    
    def json = new groovy.json.JsonBuilder()

    //Step 1: Set base URL, E.g. http://localhost:2990/jira
    def baseUrl = "http://localhost:2990/jira";

    //Step 2: Set username and password
    def userName = "admin"
    def password = "admin"

    def http = new HTTPBuilder(baseUrl + url)
    http.request(POST) {
        headers.
        'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
        headers.
        'X-Atlassian-Token' = 'no-check';
        requestContentType = URLENC
        body = "data=" + bodyData


        response.success = {resp, data ->
            log.debug("SUCCESS: " + resp.status)
            log.debug(data)
            return data
        }

        response.failure = { resp,data ->
            log.error("ERROR: " + resp.status)
            log.error(data)
            return null
        }
    }
}
 Send PUT request with data
def sendPostRequest(url, bodyData) {
    def log = Logger.getLogger("LookupManager")
    log.setLevel(Level.DEBUG)
    
    def json = new groovy.json.JsonBuilder()

    //Step 1: Set base URL, E.g. http://localhost:2990/jira
    def baseUrl = "http://localhost:2990/jira";

    //Step 2: Set username and password
    def userName = "admin"
    def password = "admin"

    def http = new HTTPBuilder(baseUrl + url)
    http.request(PUT) {
        headers.
        'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
        headers.
        'X-Atlassian-Token' = 'no-check';
        requestContentType = URLENC
        body = "data=" + bodyData


        response.success = {resp, data ->
            log.debug("SUCCESS: " + resp.status)
            log.debug(data)
            return data
        }

        response.failure = { resp,data ->
            log.error("ERROR: " + resp.status)
            log.error(data)
            return null
        }
    }
}
 Send DELETE request
def sendDeleteRequest(url) {
    def log = Logger.getLogger("LookupManager")
    log.setLevel(Level.DEBUG)
    
    def json = new groovy.json.JsonBuilder()

    //Step 1: Set base URL, E.g. http://localhost:2990/jira
    def baseUrl = "http://localhost:2990/jira";

    //Step 2: Set username and password
    def userName = "admin"
    def password = "admin"

    def http = new HTTPBuilder(baseUrl + url)
    http.request(DELETE) {
        headers.
        'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
        headers.
        'X-Atlassian-Token' = 'no-check';
        requestContentType = URLENC

        response.success = {resp, data ->
            log.debug("SUCCESS: " + resp.status)
            log.debug(data)
            return data
        }

        response.failure = { resp,data ->
            log.error("ERROR: " + resp.status)
            log.error(data)
            return null
        }
    }
}
 Convert map to json object
def convertMapToJson(data) {
    return JsonOutput.prettyPrint(JsonOutput.toJson(data))
}

  • No labels