OpenAPITools/openapi-generator · error · IllegalArgumentException

Invalid model property naming '{naming}'. Must be 'original'

Error message

Invalid model property naming '{naming}'. Must be 'original', 'camelCase', 'PascalCase' or 'snake_case'

What it means

Setter validating the 'modelPropertyNaming' additional property of the k6 generator. Accepts only original, camelCase, PascalCase and snake_case (case-sensitive string comparisons); any other value throws IllegalArgumentException during option processing and aborts generation.

Source

Thrown at modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/K6ClientCodegen.java:853

        for (int i = 0; i < buf.length(); i++) {
            char c = buf.charAt(i);
            if ((c == '/' || c == '\\') && c != File.separatorChar)
                buf.setCharAt(i, File.separatorChar);
        }
        return buf.toString();
    }

    @Override
    public String apiFileFolder() {
        return createPath(outputFolder, sourceFolder, invokerPackage, apiPackage());
    }

    public void setModelPropertyNaming(String naming) {
        if ("original".equals(naming) || "camelCase".equals(naming) || "PascalCase".equals(naming)
                || "snake_case".equals(naming)) {
            this.modelPropertyNaming = naming;
        } else {
            throw new IllegalArgumentException("Invalid model property naming '" + naming
                    + "'. Must be 'original', 'camelCase', " + "'PascalCase' or 'snake_case'");
        }
    }

    @Override
    public String escapeQuotationMark(String input) {
        // remove ', " to avoid code injection
        return input.replace("\"", "").replace("'", "");
    }

    @Override
    public String escapeUnsafeCharacters(String input) {
        return input.replace("*/", "*_/").replace("/*", "/_*");
    }

    private static String getAccept(OpenAPI openAPI, Operation operation) {
        String accepts = null;
        String defaultContentType = "application/json";

View on GitHub (pinned to fcec517be3)

Solutions

  1. Use exactly `original`, `camelCase`, `PascalCase`, or `snake_case`.
  2. Omit the option if the default convention is acceptable.
  3. Confirm allowed values with `config-help -g k6` for your CLI version.

Example fix

# before
openapi-generator-cli generate -g k6 -i api.yaml -p modelPropertyNaming=camelcase
# after
openapi-generator-cli generate -g k6 -i api.yaml -p modelPropertyNaming=camelCase
Defensive patterns

Strategy: validation

Validate before calling

# shell: exact-case allowlist for k6
mpn="${MODEL_PROPERTY_NAMING:-}"
[ -z "$mpn" ] || case "$mpn" in
  original|camelCase|PascalCase|snake_case) ;;
  *) echo "modelPropertyNaming must be original|camelCase|PascalCase|snake_case, got: $mpn" >&2; exit 2 ;;
esac
openapi-generator-cli generate -g k6 -i api.yaml -p modelPropertyNaming="$mpn"

Type guard

type ModelPropertyNaming = 'original' | 'camelCase' | 'PascalCase' | 'snake_case';
const VALID = new Set(['original', 'camelCase', 'PascalCase', 'snake_case']);
function isModelPropertyNaming(v: string): v is ModelPropertyNaming {
  return VALID.has(v);
}

Try / catch

try {
    new DefaultGenerator().opts(clientOptInput).generate();
} catch (IllegalArgumentException e) {
    throw new IllegalStateException("Invalid modelPropertyNaming for k6: " + e.getMessage(), e);
}

Prevention

When it happens

Trigger: `-g k6 -p modelPropertyNaming=snake` (missing '_case'), `camelcase`, `Pascal_Case`, `kebab-case`, `original-case`; values passed programmatically via setModelPropertyNaming.

Common situations: Sharing one options file across javascript/k6 pipelines and editing casing by hand; copy-paste from TypeScript generators' docs.

Related errors


AI-assisted analysis of OpenAPITools/openapi-generator@fcec517be3 (2026-08-22). Data as JSON: /api/errors/10a38d06f7c66d22. Report an issue: GitHub.