code: func (s *IssueService) GetCustomFields(issueID string) (CustomFields, *Response, error) {
  	apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s", issueID)
  	req, err := s.client.NewRequest("GET", apiEndpoint, nil)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	issue := new(map[string]interface{})
  	resp, err := s.client.Do(req, issue)
  	if err != nil {
  		jerr := NewJiraError(resp, err)
  		return nil, resp, jerr
  	}
  
  	m := *issue
  	f := m["fields"]
  	cf := make(CustomFields)
  	if f == nil {
  		return cf, resp, nil
  	}
  
  	if rec, ok := f.(map[string]interface{}); ok {
  		for key, val := range rec {
  			if strings.Contains(key, "customfield") {
  				if valMap, ok := val.(map[string]interface{}); ok {
  					if v, ok := valMap["value"]; ok {
  						val = v
  					}
  				}
  				cf[key] = fmt.Sprint(val)
  			}
  		}
  	}
  	return cf, resp, nil
  }
docs: // GetCustomFields returns a map of customfield_* keys with string values