Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

JIRA Cloud-Update Select List Field via Rest API

Keri Hudson October 10, 2017

In JIRA Cloud, I have a Script Listener set up for Issue Updates. I'm trying to update a select list field through the Rest API using ScriptRunner. I'll paste my script below, but basically if a issue has a Label of 'OnHold' then the custom field PMO Sprint Status is set to 'On Hold.' 

def projectKey = 'TRAIN'

if (issue.fields.project.key != projectKey) {
return
}

def pmoSprintStatus = ""

if (issue.fields.labels.contains("OnHold")) {
if (issue.fields.customfield_10747 != "OnHold") {
pmoSprintStatus = "OnHold"
}
} else {
if (issue.fields.customfield_10747 == "OnHold") {
pmoSprintStatus = "Active"
}
}

if (pmoSprintStatus != "") {
put("/rest/api/2/issue/${issue.key}")
.queryString("overrideScreenSecurity", true)
.header('Content-Type', 'application/json')
.body([
fields: [
customfield_10747 : { value: pmoSprintStatus}

]
])
.asString()  
}

The part in bold seems to be where the problem is. No matter how I format that line, I always get the following error.

2017-10-10 06:48:38.926 WARN - PUT request to /rest/api/2/issue/TRAIN-8 returned an error code: status: 400 - Bad Request
body: {"errorMessages":[],"errors":{"customfield_10747":"Could not find valid 'id' or 'value' in the Parent Option object."}}
2017-10-10 06:48:38.929 INFO - PUT /rest/api/2/issue/TRAIN-8 asString Request Duration: 620ms

Any thoughts on what I"m missing/doing wrong? This is JIRA Cloud, updating a select list single choice field via REST API. Thanks!

 

1 answer

1 accepted

Suggest an answer

Log in or Sign up to answer
1 vote
Answer accepted
Jon Bevan [Adaptavist]
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.
October 11, 2017

Hi @Keri Hudson,

I'm pretty sure what you need to change is

customfield_10747 : { value: pmoSprintStatus}

to be:

customfield_10747 : [ value: pmoSprintStatus ]

because in Groovy both maps and lists use square brackets.

Let me know if that doesn't fix things!

Thanks,
Jon

Shrikant Maheshwari September 10, 2018

@[deleted]

Requirement - 

I want to update a drop down field based on certain condition.

 I am writing the escalation service in which i have enabled the condition in JQL, and now i want to update the issues that are the result of the JQL.

 I have a field named -ReviewRecommendation which has 4 drop down values - None,Hold,Accept, Reject.

 This field is getting set to None by JMWE add-on to "None" value.

 I have one more field named "Due date", now i have written the JQL as - 

 project = PRIYAN and "Review Recommendation"=None and "due" <now()

 Now for  all the issues which are result set of the above JQL, the field "ReviewRecommendation "should be updated to "Accept".

Could you provide me the script for my requirement.

Below is my script which is not working, please help me in resolving it.

def issueKey = issue.key

def ReviewRecommendation = ""

if (issue.fields.customfield_26872 =="None")
{
ReviewRecommendation = "Accept"
}

def result = put("/rest/api/2/issue/${issue.key}")
.queryString("overrideScreenSecurity", true)
.header('Content-Type', 'application/json')
.body([
fields: [
customfield_26872 : [ value: ReviewRecommendation]

]
])
.asString()

TAGS
AUG Leaders

Atlassian Community Events