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

JIRA rest api not working while trying to set customfield values during issue transistions.

sudharsan chandrababu June 3, 2015

Hi,

We are trying to use curl + rest api to change the status of issue from build to validation. And while changing the status we have to update buildid field on validation dialog box. How do we achieve this in rest? I see lot of documentation for transitions but couldnt get the exact json format to fix this problem.

Here is my json data for json update and i am using POST method as said in JIRA transition method.

{

    "update": {

        "customfield_10029": [

            {

                "set": {

                    "name": "sfsfd"

                }

            }

        ]

    },

    "fields": {

        "customfield_10029": {

            "name": "Resolution Notes"

        }

    },

    "transition": {

        "id": "71"

    }

}

 

Kindly advise on this? And let me know if you need more information.

 

Thanks,

Sudharsan

 

1 answer

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

0 votes
Asad Ali October 26, 2015

copy all statuses(workflow/transitions) in xml with id and read it using POJO and find with rest API and update as  mentioned below

<statuses>
    <status type="Defect" transition="71">Submitted</status>
    <status type="Defect" transition="72">Fixed</status>
    <status type="Defect" transition="721">Ready to Test</status>
    <status type="Defect" transition="741">Failed Verification</status>
    <status type="Defect" transition="731">Closed</status>
    <status type="Defect" transition="471">Invalid</status>
    <status type="Defect" transition="191">Review</status>
    <status type="Defect" transition="151">Deferral Requested</status>
    <status type="Defect" transition="161">Deferral Approved</status>
    <status type="Defect" transition="471">Deferred - On Backlog </status>
    <status type="Defect" transition="481">Deferred - Not On Backlog</status>
</statuses>

public class Statuses implements Comparable<String> {
    private String type;
    private int transition;
    private String status;
    public Statuses(String type, int transition, String status) {
        super();
        this.type = type;
        this.transition = transition;
        this.status= status;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public int getTransition() {
        return transition;
    }
    public void setTransition(int transition) {
        this.transition = transition;
    }
    public String getstatus() {
        return status;
    }
    public void setstatus(String status) {
        this.status= status;
    }
    @Override
    public String toString() {
        return "Statuses [type=" + type + ", transition=" + transition + ", status=" + status+ "]";
    }
    @Override
    public int compareTo(String status1) {
        // TODO Auto-generated method stub
        if (this.status.equalsIgnoreCase(status1))
            return 1;
        else
            return 0;
    }
}

public static List<Statuses> getStatuses(File fieldsXml) {

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder;
        Document doc = null;
        List<Statuses> fields = new ArrayList<Statuses>();
        try {
            dBuilder = dbFactory.newDocumentBuilder();
            doc = dBuilder.parse(fieldsXml);
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("status");
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    String type = eElement.getAttribute("type");
                    int transition = Integer.parseInt(eElement.getAttribute("transition"));
                    String versiononeStatus = eElement.getTextContent();
                    fields.add(new Statuses(type, transition, versiononeStatus));
                }
            }

        } catch (ParserConfigurationException | SAXException | IOException e) {
            // TODO Auto-generated catch block
            errorLog.info(Level.SEVERE, e);
        }
        return fields;
    }



String urStatus= "status";
List<Statuses> Statuses=getStatuses(xmlFile);
        for (Statuses status : Statuses) {
            if (1 == status.compareTo(urStatus)) {
                try {
                    int _transition = status.getTransition();
                    Issue issue = issueRestClient.getIssue(
                            issueKey).get();
                    Transition transition = getTransition(issueRestClient,
                            issue, _transition);
                    if (!(isBlankOrNull(transition))) {
                        if (!(issue.getStatus().getName()
                                .equalsIgnoreCase(status)))
                            transition(transition, issue, null,
                                    issueRestClient, status);
                    }
                } catch (Exception e) {

                    errorLog.info(Level.INFO, e);
                }
                break;
            }
        }


public Transition getTransition(IssueRestClient issueRestClient,
            Issue issue, int _transition) {
        // TODO Auto-generated method stub
        Promise<Iterable<Transition>> ptransitions = issueRestClient
                .getTransitions(issue);
        Iterable<Transition> transitions = ptransitions.claim();
        for (Transition transition : transitions) {
            if (transition.getId() == _transition) {
                return transition;
            }
        }
        return null;
    }


private void transition(Transition transition, Issue issue,
            FieldInput fieldInput, IssueRestClient issueRestClient,
            String status) throws Exception {

        if (isBlankOrNull(fieldInput)) {
            TransitionInput transitionInput = new TransitionInput(
                    transition.getId());
            reportLog.info("Status Updated for : " + issue.getKey());
            issueRestClient.transition(issue, transitionInput).claim();
        } else {
            TransitionInput transitionInput = new TransitionInput(
                    transition.getId(), Arrays.asList(fieldInput));
            issueRestClient.transition(issue, transitionInput).claim();
            reportLog.info("Status Updated for : " + issue.getKey());
        }
    }
TAGS
AUG Leaders

Atlassian Community Events