code: func (s *IssueService) UpdateWithOptions(issue *Issue, opts *UpdateQueryOptions) (*Issue, *Response, error) {
  	apiEndpoint := fmt.Sprintf("rest/api/2/issue/%v", issue.Key)
  	url, err := addOptions(apiEndpoint, opts)
  	if err != nil {
  		return nil, nil, err
  	}
  	req, err := s.client.NewRequest("PUT", url, issue)
  	if err != nil {
  		return nil, nil, err
  	}
  	resp, err := s.client.Do(req, nil)
  	if err != nil {
  		jerr := NewJiraError(resp, err)
  		return nil, resp, jerr
  	}
  
  	// This is just to follow the rest of the API's convention of returning an issue.
  	// Returning the same pointer here is pointless, so we return a copy instead.
  	ret := *issue
  	return &ret, resp, nil
  }
docs: // UpdateWithOptions updates an issue from a JSON representation,
  // while also specifiying query params. The issue is found by key.
  //
  // JIRA API docs: https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-editIssue