alibaba/nacos · warning · NacosApiException

PARAMETER_VALIDATE_ERROR

PARAMETER_VALIDATE_ERROR

Error message

Request parameter `search` should be `accurate` or `blur`.

What it means

SkillListForm.validate() guards the skill list query's optional `search` parameter. When non-blank it must case-insensitively equal "accurate" or "blur" (Constants.Skills.SEARCH_ACCURATE/SEARCH_BLUR). Any other value is an undefined search mode and is rejected with PARAMETER_VALIDATE_ERROR before the query runs. skillName is optional for list, so only search is validated here.

Source

Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillListForm.java:50

    
    @Serial
    private static final long serialVersionUID = 1L;
    
    private String search;
    
    /**
     * Sort field. Supported values: "download_count". Defaults to gmt_modified when null or empty.
     */
    private String orderBy;
    
    @Override
    public void validate() throws NacosApiException {
        fillDefaultNamespaceId();
        // For list query, skillName is optional
        if (StringUtils.isNotBlank(search)
            && !Constants.Skills.SEARCH_ACCURATE.equalsIgnoreCase(search)
            && !Constants.Skills.SEARCH_BLUR.equalsIgnoreCase(search)) {
            throw new NacosApiException(NacosApiException.INVALID_PARAM,
                ErrorCode.PARAMETER_VALIDATE_ERROR,
                "Request parameter `search` should be `accurate` or `blur`.");
        }
    }
    
    public String getSearch() {
        return search;
    }
    
    public void setSearch(String search) {
        this.search = search;
    }
    
    public String getOrderBy() {
        return orderBy;
    }
    
    public void setOrderBy(String orderBy) {

View on GitHub (pinned to 9b989acdf1)

Solutions

  1. Set `search=accurate` for exact match or `search=blur` for fuzzy/substring match (case-insensitive).
  2. Omit `search` entirely if no specific mode is needed.
  3. Map "exact"->"accurate" and "fuzzy"->"blur" in your client before sending.

Example fix

// before
GET /v3/admin/ai/skills/list?search=fuzzy
// after
GET /v3/admin/ai/skills/list?search=blur
Defensive patterns

Strategy: validation

Validate before calling

// Before calling skill list
if (search != null && !search.isBlank()
    && !"accurate".equalsIgnoreCase(search)
    && !"blur".equalsIgnoreCase(search)) {
    throw new IllegalArgumentException("search must be 'accurate', 'blur', or null");
}

Type guard

// TypeScript
const isValidSearch = (s?: string | null): boolean =>
  s == null || s === "" || ["accurate","blur"].includes(s.toLowerCase());

Try / catch

try {
    form.validate();
} catch (NacosApiException e) {
    // invalid search mode
}

Prevention

When it happens

Trigger: Calling the skill list API with search set to a value other than accurate/blur — e.g. `search=fuzzy`, `search=contains`, `search=exact`. Omitting search is fine.

Common situations: Using "fuzzy" (the keyword many other search APIs use); UI dropdown emitting "exact"; inconsistent naming across Nacos resource types; typo.

Related errors


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