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

update the time estimation through the JIRA REST API

Igor Cherepanov
Contributor
August 22, 2017

I am struggling to update the time estimation through the API, can anybody help me regarding this issue?

Is it possible to update following attributes through the API? (aggregatetimeoriginalestimate,
timeestimate, timeoriginalestimate, aggregatetimeestimate, aggregateprogress, progress)

Thanks!

2 comments

Comment

Log in or Sign up to comment
Igor Cherepanov
Contributor
August 22, 2017

I have to update this property.toupdate.png

Nic Brough -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.
August 23, 2017

No, because they're not attributes or fields you set, they're calculated from the issue data.

See https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/updating-an-issue-via-the-jira-rest-apis and https://docs.atlassian.com/jira/REST/server/#api/2/issue-editIssue - you're looking for the "timetracking" field.

You can set one or both parts of it - originalestimate and remainingestimate.  The attributes you are looking for are then calculated from those two and the worklogs on the issue.

Igor Cherepanov
Contributor
August 27, 2017

it does not work for me...

JSON which I received is:

{
    errorMessages :
    [],
    errors :
    {
        timetracking : "Field 'timetracking' cannot be set. It is not on the appropriate screen, or unknown."
    }
}

 

 

in the same way I am also able to set a description, that means that my request is right.

What should I do?

Igor Cherepanov
Contributor
August 28, 2017

the issue, in which I want to change the property "Estimated", this property is already set. (Even though updating does not work)

Second question regarding this topic were, what do I do if this property is not set?

Thanks a lot!

Nic Brough -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.
August 28, 2017

You need to put the timetracking field on the edit screen for the issues.

It doesn't matter if it's got a value or not, you just set it

Like Dieter Vekeman likes this
Igor Cherepanov
Contributor
August 28, 2017

>>You need to put the timetracking field on the edit screen for the issues.

I didnt get it

Like Nicolas Desjardins likes this
Igor Cherepanov
Contributor
September 6, 2017

Nic could define it more precisely

thank you!

Prem Chudzinski _extensi_
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
April 12, 2018
import groovyx.net.http.FromServer
import groovyx.net.http.HttpBuilder
import io.extensi.build.rest.jira.Field
import org.slf4j.Logger
import org.slf4j.LoggerFactory

class DetailsUpdate {


static final Logger LOG = LoggerFactory.getLogger(DetailsUpdate.class)

def static updateEstimate(int estimate, String issueId, int rapidViewId, HttpBuilder client, String authString) {
LOG.info("")
LOG.info("----------------------------------------------------------")
LOG.info("updateEstimate")
LOG.info("----------------------------------------------------------\n")

def fields = Field.getFields(client, authString)
def storyPointField = fields.find { it.name == "Story Points" }

client.post() {
request.uri.path = '/secure/DetailsViewAjaxIssueAction.jspa'
request.contentType = 'application/x-www-form-urlencoded'
request.headers = [
'X-Atlassian-Token': "no-check",
'Authorization' : "Basic ${authString}",
'Accept' : "text/html"
]

request.uri.query = ['decorator' : 'none']

request.body = ["${storyPointField.id}" : estimate,
issueId:issueId,
singleFieldEdit:true,
fieldsToForcePresent: storyPointField.id,
skipScreenCheck:true,
rapidViewId:rapidViewId]



response.success { FromServer resp, Object body ->
assert resp.statusCode == 200
}

response.failure { FromServer resp, Object body ->
LOG.error("Call failed with code ${resp.statusCode} ")

throw new RuntimeException(resp.message)
}
}

}

}
TAGS
AUG Leaders

Atlassian Community Events