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
- Set `search=accurate` for exact match or `search=blur` for fuzzy/substring match (case-insensitive).
- Omit `search` entirely if no specific mode is needed.
- 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
- Whitelist the search dropdown to ['accurate','blur'] in the UI.
- Omit search rather than send a guessed keyword.
- Share one search-mode helper across prompt/skill/mcp list calls.
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
- PARAMETER_VALIDATE_ERROR
- PARAMETER_VALIDATE_ERROR
- PARAMETER_VALIDATE_ERROR
- PARAMETER_VALIDATE_ERROR
- PARAMETER_MISSING
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/c58aea903e393d08.
Report an issue: GitHub.