Tencent/APIJSON · error · UnsupportedOperationException

{method} 请求,{rk} 不合法!非开放请求不允许传 @combine:value !

Error message

{method} 请求,{rk} 不合法!非开放请求不允许传 @combine:value !

What it means

Thrown when a non-open request carries the @combine key. @combine (combined-table query config) is only allowed on requests whose Request-table row marks them as open; closed requests have their combine logic fixed server-side.

Source

Thrown at APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java:1122

		// 解析不允许的字段>>>>>>>>>>>>>>>>>>>

		Set<String> onKeys = new LinkedHashSet<>();

		// 判断不允许传的key<<<<<<<<<<<<<<<<<<<<<<<<<
		for (String rk : rkset) {
			if (rk == null || KEY_STRING.equals(rk) || KEY_TRIM.equals(rk)) {
				// ConcurrentModificationException  real.remove(rk);
				continue;
			}

			if (refuseSet.contains(rk)) { // 不允许的字段
				throw new IllegalArgumentException(method + "请求," + name
						+ " 里面不允许传 " + rk + " 等" + StringUtil.get(refuseSet) + "内的任何字段!");
			}

			if (KEY_COMBINE.equals(rk)) {
				throw new UnsupportedOperationException(method + " 请求," + rk + " 不合法!" +
						"非开放请求不允许传 " + KEY_COMBINE + ":value !");
			}
			if (KEY_KEY.equals(rk)) {
				throw new UnsupportedOperationException(method + " 请求," + rk + " 不合法!" +
						"非开放请求不允许传 " + KEY_KEY + ":value !");
			}

			Object rv = real.get(rk);
			if (rv != null && stringKeyList != null && stringKeyList.contains(rk)) {
				rv = toJSONString(rv);
			}
			if (rv != null && trimKeyList != null && trimKeyList.contains(rk)) {
				rv = StringUtil.trim(rv);
			}

			// 不允许传远程函数,只能后端配置
			if (rk.endsWith("()") && rv instanceof String) {
				throw new UnsupportedOperationException(method + " 请求," + rk + " 不合法!" +

View on GitHub (pinned to 5284052872)

Solutions

  1. Remove @combine from the request body
  2. Ask the backend to configure the needed combine in the Request-table row, or mark the tag open if cross-table ad-hoc queries are intended
  3. Use the dedicated open/document endpoint for exploratory combined queries

Example fix

// before
{"User":{"name":"a","@combine":"name,id"}}
// after
{"User":{"name":"a"}}
Defensive patterns

Strategy: validation

Validate before calling

function stripLockedKeys(obj) {
  const out = { ...obj };
  delete out['@combine'];
  return out;
}

Prevention

When it happens

Trigger: GET/POST body contains "@combine":"a,b" (at any level scanned by verify) for a request whose Request-table tag is not open/OPEN.

Common situations: Copying a query body from the auto-generated APIJSON docs (which show @combine examples) into a non-open endpoint; frontend experimenting with combined queries against a locked-down tag.

Related errors


AI-assisted analysis of Tencent/APIJSON@5284052872 (2026-08-14). Data as JSON: /api/errors/4b7178771c34a27c. Report an issue: GitHub.