The Atlassian Community Forums are currently in read-only mode. We will be relaunching on a new platform on September 22 (read more here). We apologize for the extended downtime. For concerns or questions, please email communitymanagers@atlassian.com. See you on the other side, on the new Atlassian Community Forums! :)

×

Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Updating Behaviour mapping with rest API

David Coudron
September 22, 2020

Hello,

I use the behaviour module of ScriptRunner on my Jira environment with 20 differents configurations.
I have two needs :

  1. I want to automate the association of a new project to a behavior according to the project category. 
    I have no idea how to do now, so if you have suggestion, you're welcome !
  2. I want to use behaviour API to add new mapping between project and configuration without erasing the current mapping


For the second subject, I saw that I can use the base-url/rest/scriptrunner/behaviours/1.0/config rest API, posting a new XML of my mapping but it's erasing the old one...

I found two other rest API but I don't find any documentation on them :

base-url/rest/scriptrunner/behaviours/1.0/admin/mapping
base-url/rest/scriptrunner/behaviours/1.0/admin/behaviour

I Tried to post the following Json, but it doesn't work...

"

{"id" : 1,
"name": "Behavior1",
"description": "test",
"mappings": [
{
"type": "PROJECT",
"project": {
"id": 20000,
"name": "Project 1",
"key": "P1"
},
"issuetype": {
"id": "0",
"name": "All issue types",}
},
{
"type": "PROJECT",
"project": {
"id": 20002,
"name": "Project 2",
"key": "P2"
},
"issuetype": {
"id": 12200,
"name": "Work Item"
}
}
]
}

"

 

Any suggestions ?

Thank in advance.

Best regards,

David

 

1 answer

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

0 votes
Answer accepted
David Coudron
January 12, 2021

I finaly found a solution, this code works : 

 

def http = new HTTPBuilder("yoururl/rest/scriptrunner/behaviours/1.0/admin/mapping")
def authString = "username:password".getBytes().encodeBase64().toString();

http.request(Method.POST, ContentType.JSON) {
headers."Authorization" = "Basic ${authString}"
headers.contentType = "application/json"
body = "{ \"behaviourId\": \"1\", \"type\": \"PROJECT\", \"projectIds\": [\"${projectID}\"], \"issueTypeIds\": [\"10900\"]}"


response.success = { resp, JSON ->
log.warn("Successful = " + JSON)
}

response.failure = { resp, JSON ->
log.warn("Failed = " + JSON)
}
}

break
Brian Keefe
Contributor
March 11, 2022

Thanks for following up your own question and showing it's possible! I'm trying to do this with a python script as part of creating a new project. I'm getting a 200 response, but nothing updates in Behaviors.

def addMapping(p_id, b_id):
print(f"adding {p_id} to behavior {b_id}")
url = f"{BASE_URL}/rest/scriptrunner/behaviours/1.0/admin/mapping"
payload = json.dumps({
"behaviourId": f"{b_id}",
"type": "PROJECT",
"projectId": f"{p_id}",
"issueTypeId": "3"
})
r = requests.request("POST", url, auth=(UNAME, PW), headers=HTTP_HEADERS, data=payload)
rson = r.json()
print("response code = %s" % r.status_code)
print(rson)

addMapping(25701, 6)

 I initially omitted "issuetypeid" and played with different names for the projectid, like "projectIds" "id" "ID" etc. TIA.

Like Joel Batac likes this