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

  1. Include `skillName` matching the skill whose draft you are publishing.
  2. Resolve skillName from the draft's owning skill before publish.
  3. 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

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.