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
- Include `skillName` matching an existing skill.
- Bind the REST path variable to skillName if using /skills/{skillName}/labels.
- 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
- Bind the path variable {skillName} to the form field.
- Populate skillName from the selected skill row in the UI.
- Block submit until skillName is non-blank.
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.