400 Bad Request while updating an issue via REST API

Here is the code that I am attempting to use:

global class SalesforceJiraUpdate {
    public string endpoint='https://xxx.atlassian.net/rest/api/2/issue/';             //JIRA URL
    public String username = 'xxx';        // JIRA username
    public String password = 'xxx';       // JIRA password

    @future(callout=true)
    public static void updateIssue(string key,string summary,string description,string Jiraid){
        key = Jiraid;
        new SalesforceJiraUpdate(key,summary,description,Jiraid);
    }


    public String authHeader(){
        Blob headerValue = Blob.valueOf(username+':'+password);
        return 'Basic ' + EncodingUtil.base64Encode(headerValue);
    }

    public SalesforceJiraUpdate(string key,string summary,string description,string Jiraid){
        HttpRequest req = new HttpRequest();
        Http http = new Http();
        req.setMethod('PUT');

        //Set HTTPRequest header properties

        endpoint+=+key;
        req.setHeader('Accept', 'application/json');
        req.setHeader('Content-Type','application/json');
        Blob headerValue = Blob.valueOf(username+':'+password);
        req.setHeader('Authorization','Basic '+ EncodingUtil.base64Encode(headerValue));
        req.setEndpoint(endpoint);
        system.debug('the endpoint is :'+endpoint);


        String UpdateIssueJson= '{"update": {"summary":[{"set":"'+summary+'"}],"description":[{"set":"'+description+'"}], "issuetype":[{"set" :{"name": "Bug"}}]}}';

        String JSONData = JSON.serializePretty(UpdateIssueJson);
        req.setBody(UpdateIssueJson);
        system.debug('after response....'+UpdateIssueJson);

        try{
            //Execute web service call here
            HTTPResponse res = http.send(req);
            String ResponseJsonString = res.getBody();
            System.debug('ResponseJsonString '+res);

        }
        catch(System.CalloutException e){
            System.debug('Callout error: '+ e);
        }
    }
}

4 answers

Hi Robert, there was issue in framing the Json. I have solved it.

String upJson= '{"fields":{"summary":"'+summary+'","description":"'+description+'"}}';

 

Thanks

Abhishek

0 vote

Have you tried to get a locally running JIRA and use the Rest API Browser to make your requests?

Robert, am able to create an Issue in JIRA, while updating it response is Bad request and 400 error.

0 vote

I have tried to duplicate this using Postman on my local machine and have not had an issue:

Screen Shot 2016-02-05 at 9.15.40 am.png

From here I can only think of only two potential issues:

  • does the Issue that you are trying to set the Issue Type of to "Bug" exist inside a project that has the issue type "Bug"?
  • Can you please use a JSON library to build your JSON? If summary or description contain strings that make for invalid JSON then you will get a bad request instead.

Those are the only two issues that I can think of right now that might cause this behaviour. Please tell me if that works / helps. Otherwise, can you please provide screenshots of the Issue that you are trying to update and the contents of the variables that you are setting for your application? Cheers.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Monday in Jira Software

How large do you think Jira Software can grow?

Hi Atlassian Community! My name is Shana, and I’m on the Jira Software team. One of the many reasons this Community exists is to connect you to others on similar product journeys or with comparabl...

694 views 6 13
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you