Jira - 單選自定義字段 通過接口添加選項

Jira - 單選自定義字段 通過接口添加選項

Max.Bai

2019-10

1. 背景

Jira裏面自定義字段的選擇需要在admin頁面配置

Administration panel > Custom fields > configure > Edit options

有沒有可以自動添加的接口什麼的,經過查找,找到如下資源,先行mark,待有空來驗證。

2020-03-13 更新,發現插件可以實現,看第3節

 

2. 信息

原文地址 https://community.atlassian.com/t5/Answers-Developer-Questions/How-do-I-update-Jira-custom-field-via-REST-api/qaq-p/498231

摘抄一下,以免信息丟失。

Followed this tutorial: https://developer.atlassian.com/server/framework/atlassian-sdk/developing-a-rest-service-plugin/
Added following method to the Rest Resource class (MyRestResrouce.java in the tutorial).

/**
 * This method is to be used whenever a new option is to be added to a custom field. It will add it to the top of the list.
 * @param fieldId - custom field id, e.g,. customfield_10000
 * @param optionVal - option value, e.g,. 4.1r1.24.67643_70
 * @return
 */
@GET
@AnonymousAllowed
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("/addOptionsToCustomField")
public Response addOptionToCustomField(@QueryParam("fieldId") String fieldId, @QueryParam("optionVal") String optionVal)
{
	CustomFieldManager customFldMgr = ComponentAccessor.getCustomFieldManager();
	OptionsManager optionsManager = ComponentAccessor.getComponentOfType(OptionsManager.class);
	
	if (fieldId == null || fieldId.trim().equals("")) {
		return Response.ok(new ZRestResourceModel("default","Missing custom field id")).build();
	}
	
	//error checking code snipped
	
	CustomField customField = customFldMgr.getCustomFieldObject(fieldId);
	//error checking code snipped
	
	List<FieldConfigScheme> schemes = customField.getConfigurationSchemes();
	if (schemes != null && !schemes.isEmpty()) {
		FieldConfigScheme sc = schemes.get(0);
		MultiMap configs = sc.getConfigsByConfig();
		if (configs != null && !configs.isEmpty()) {
			FieldConfig config = (FieldConfig) configs.keySet().iterator().next();
			Options ops = optionsManager.getOptions(config);
			if(ops != null && ops.getOptionForValue(optionVal, null) != null)
				return Response.ok(... snipped
			Option op = optionsManager.createOption(config, null,
					new Long(1), 
					optionVal);         
			ops = optionsManager.getOptions(config); 
			ops.moveToStartSequence(op);
		}
	}
	return Response.ok(new ZRestResourceModel("default","SUCCESS")).build();
}

3. 插件可以實現接口

發現了這個插件,可以通過接口實現對單選選項的設置

custom filed plugin
https://codeclou.io/customfield-editor-for-jira/1.3.0/rest-api/
 

請求頭帶賬號密碼:
13500 爲custom field ID
POST http://10.10.11.18:8080/rest/jiracustomfieldeditorplugin/1/user/customfields/13500/contexts/default/options HTTP/1.1
content-type: application/json
Authorization: Basic administrator 1231231232

{ "optionvalue": "BBB品牌" }


失敗信息:
HTTP/1.1 400
{
  "message": "validation errors",
  "statusCode": 400,
  "subCode": 400000,
  "errors": [
    {
      "name": "optionvalue",
      "message": "This option value does already exist. Option values need to be unique."
    }
  ]
}

成功信息:
HTTP/1.1 200
{
  "optionvalue": "BBB品牌",
  "id": 15718,
  "sequence": 264,
  "disabled": false
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章