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 Join to answer
Community showcase
Sarah Schuster
Posted Jan 29, 2018 in Jira

What are common themes you've seen across successful & failed Jira Software implementations?

Hey everyone! My name is Sarah Schuster, and I'm a Customer Success Manager in Atlassian specializing in Jira Software Cloud. Over the next few weeks I will be posting discussion topics (8 total) to ...

3,314 views 14 20
Join discussion

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
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot