alibaba/nacos · error · NacosApiException
PARAMETER_MISSING
PARAMETER_MISSING
Error message
Request parameter `skillName` should not be blank.
What it means
SkillPublishForm.validate() requires a non-blank `skillName` to publish a skill draft. Publishing promotes a draft to a published version under a named skill, so the skill must be identified first. This check runs before the version check (error 56). The form also carries a deprecated `updateLatestLabel` flag (ignored since 3.3.0; server manages 'latest').
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillPublishForm.java:51
@Serial
private static final long serialVersionUID = 1L;
private String version;
/**
* Legacy latest label update flag.
*
* @deprecated since 3.3.0, the latest label is managed by the server. This
* parameter is ignored and retained only for compatibility with legacy clients.
*/
@Deprecated(since = "3.3.0")
private Boolean updateLatestLabel;
@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(version)) {
throw new NacosApiException(NacosException.INVALID_PARAM, ErrorCode.PARAMETER_MISSING,
"Request parameter `version` should not be blank.");
}
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
/**
* Get update latest label flag.View on GitHub (pinned to 9b989acdf1)
Solutions
- Include `skillName` matching the skill whose draft you are publishing.
- Resolve skillName from the draft's owning skill before publish.
- Stop relying on updateLatestLabel — it is deprecated and ignored.
Example fix
// before
{"version":"1.0.0"}
// after
{"skillName":"my-skill","version":"1.0.0"} Defensive patterns
Strategy: validation
Validate before calling
// Before calling skill publish
if (skillName == null || skillName.isBlank()) {
throw new IllegalArgumentException("skillName is required to publish");
} 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
- Pre-fill skillName from the draft's owning skill.
- Don't rely on the deprecated updateLatestLabel.
- Block the publish button until skillName is set.
When it happens
Trigger: Calling the skill publish API with skillName missing, empty, or whitespace-only. Common when only `version` is sent.
Common situations: Frontend publish form that collected only version; relying on the deprecated updateLatestLabel; field renamed to `name`.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/2f92726ebd00d49d.
Report an issue: GitHub.