alibaba/nacos · error · NacosApiException

PARAMETER_MISSING

PARAMETER_MISSING

Error message

Request parameter `skillName` should not be blank.

What it means

SkillLabelsUpdateForm.validate() requires a non-blank `skillName` before updating a skill's labels (JSON like {"stable":"v2"}; the reserved "latest" label is server-managed). Labels are scoped to a specific skill, so the target must be identified. Uses StringUtils.isBlank, so whitespace-only also fails.

Source

Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillLabelsUpdateForm.java:45

 * Skill labels update form.
 *
 * @author nacos
 */
public class SkillLabelsUpdateForm extends SkillForm {
    
    @Serial
    private static final long serialVersionUID = 1L;
    
    /**
     * JSON string: {"stable":"v2"}. The reserved label "latest" is managed by server.
     */
    private String labels;
    
    @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.");
        }
        if (StringUtils.isBlank(labels)) {
            throw new NacosApiException(NacosException.INVALID_PARAM, ErrorCode.PARAMETER_MISSING,
                "Request parameter `labels` should not be blank.");
        }
    }
    
    public String getLabels() {
        return labels;
    }
    
    public void setLabels(String labels) {
        this.labels = labels;
    }
}

View on GitHub (pinned to 9b989acdf1)

Solutions

  1. Include `skillName` matching an existing skill.
  2. Bind the REST path variable to skillName if using /skills/{skillName}/labels.
  3. Verify skill existence via list/detail first.

Example fix

// before
{"labels":"{\"stable\":\"v2\"}"}
// after
{"skillName":"my-skill","labels":"{\"stable\":\"v2\"}"}
Defensive patterns

Strategy: validation

Validate before calling

// Before calling skill labels update
if (skillName == null || skillName.isBlank()) {
    throw new IllegalArgumentException("skillName is required to update labels");
}

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
}

Prevention

When it happens

Trigger: Calling the skill labels update API with skillName missing, empty, or whitespace-only. The labels payload itself is checked separately (error 52).

Common situations: Frontend sending only the labels JSON and assuming skillName comes from context; renaming the field; sending a numeric skillId instead of the name.

Related errors


AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14). Data as JSON: /api/errors/0542c93796d33777. Report an issue: GitHub.