OpenRefine/OpenRefine · error · org.openrefine.wikibase.manifests.ManifestException

unsupported manifest version

Error message

unsupported manifest version: ${version}

What it means

ManifestParser.parse only supports manifest major versions 1 and 2; any other major version throws this ManifestException. It signals that the manifest was authored for a newer (or bogus) manifest specification that this OpenRefine build cannot interpret.

Solutions

  1. Upgrade OpenRefine (and the Wikibase extension) to a release supporting the manifest's major version.
  2. Downgrade the manifest to version 2.x if the target Wikibase exposes one, adapting fields per the v2 spec.
  3. Fix a typo in the manifest version field (e.g. "3.0" meant to be "2.0").
  4. Check OpenRefine's release notes for the maximum supported manifest version.

Example fix

// before (manifest)
"version": "3.0"

// after (supported by this parser)
"version": "2.1"
Defensive patterns

Strategy: validation

Validate before calling

String version = manifestNode.path("version").textValue();
String major = version == null ? null : version.split("\\.")[0];
boolean supported = "1".equals(major) || "2".equals(major);

Try / catch

try {
    Manifest m = ManifestParser.parse(manifestNode);
} catch (ManifestException e) {
    if (e.getMessage().startsWith("unsupported manifest version")) { /* upgrade OpenRefine or downgrade manifest */ }
    else throw e;
}

Prevention

When it happens

Trigger: Parsing a manifest with version "3.0", "0.1", or any major version other than 1 or 2.

Common situations: Downloading a manifest written for a newer OpenRefine/Wikibase extension; using an OpenRefine release that predates the manifest version the target Wikibase publishes; typos in the version field.

Related errors


AI-assisted analysis of OpenRefine/OpenRefine@a946177e04 (2026-09-08). Data as JSON: /api/errors/4ea1f885b4103055. Report an issue: GitHub.

Appendix: source

Thrown at extensions/wikibase/src/org/openrefine/wikibase/manifests/ManifestParser.java:49

        if (StringUtils.isBlank(version)) {
            throw new ManifestException("invalid manifest format, version is missing");
        }
        if (!version.matches("[0-9]+\\.[0-9]+")) {
            throw new ManifestException("invalid version: " + version);
        }

        String majorVersion = version.split("\\.")[0];
        // support only v1.x for now
        if ("1".equals(majorVersion)) {
            return new ManifestV1(manifestJson);
        } else if ("2".equals(majorVersion)) {
            try {
                return new ManifestV2(manifestJson);
            } catch (IOException e) {
                throw new ManifestException("invalid manifest format: " + e.getMessage());
            }
        } else {
            throw new ManifestException("unsupported manifest version: " + version);
        }
    }
}

View on GitHub (pinned to a946177e04)