alibaba/nacos · error · NacosApiException
PARAMETER_MISSING
PARAMETER_MISSING
Error message
Request parameter `skillName` should not be blank.
What it means
SkillBizTagsUpdateForm.validate() requires a non-blank `skillName` before updating a skill's biz tags (comma-separated JSON like ["tag1","tag2"]). Biz tags are scoped to a specific skill, so the server must know which skill to patch; a blank skillName is rejected with PARAMETER_MISSING. Note this form uses the looser skillName validation and does NOT require the version field.
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillBizTagsUpdateForm.java:45
* Skill biz tags update form.
*
* @author nacos
*/
public class SkillBizTagsUpdateForm extends SkillForm {
@Serial
private static final long serialVersionUID = 1L;
/**
* JSON string: ["tag1","tag2"].
*/
private String bizTags;
@Override
public void validate() throws NacosApiException {
fillDefaultNamespaceId();
if (StringUtils.isBlank(getSkillName())) {
throw new NacosApiException(NacosException.INVALID_PARAM, ErrorCode.PARAMETER_MISSING,
"Request parameter `skillName` should not be blank.");
}
}
public String getBizTags() {
return bizTags;
}
public void setBizTags(String bizTags) {
this.bizTags = bizTags;
}
}
View on GitHub (pinned to 9b989acdf1)
Solutions
- Include `skillName` in the request matching an existing skill.
- If using a REST path like /skills/{skillName}/biz-tags, ensure the path variable is also bound to the form's skillName field.
- Verify the skill exists first via the skill list/detail API.
Example fix
// before
{"bizTags":"[\"ai\",\"prompt\"]"}
// after
{"skillName":"my-skill","bizTags":"[\"ai\",\"prompt\"]"} Defensive patterns
Strategy: validation
Validate before calling
// Before calling skill biz-tags update
if (skillName == null || skillName.isBlank()) {
throw new IllegalArgumentException("skillName is required to update biz tags");
} Type guard
// TypeScript const hasSkillName = (s?: string | null): boolean => s != null && s.trim().length > 0;
Try / catch
try {
form.validate();
} catch (NacosApiException e) {
// skillName missing — ensure the URL path variable is bound
} Prevention
- Bind the REST path variable {skillName} to the form field explicitly.
- Fetch the skill list to populate a skillName picker in the UI.
- Add a client-side guard that blocks submission when skillName is empty.
When it happens
Trigger: Calling the skill biz-tags update API (PUT/POST on the admin skill biz-tags endpoint) with skillName missing, empty, or whitespace-only. The check uses StringUtils.isBlank.
Common situations: Frontend sending only the bizTags payload and expecting skillName from a URL path it didn't populate; copy-pasting a skill form that omitted skillName; renaming the field to `name` instead of `skillName`.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/cf848471bd24ddd9.
Report an issue: GitHub.