From 556199670c53248be809cd0e2cc9d624c9e8af2a Mon Sep 17 00:00:00 2001 From: Powerbyte7 <40431794+Powerbyte7@users.noreply.github.com> Date: Sun, 5 Jul 2026 02:26:27 +0200 Subject: [PATCH] Avoid percent-encoding for "(" and ")" characters. The VRChat API does not accept percent-encoded variants of InstanceID, specifically the characters "(" and ")". This causes an error when attempting the following API call: ``` https://api.vrchat.cloud/api/1/instances/wrld_28aab3e4-953f-4c85-9223-ef29a0873a6e:31124%7Egroup%28grp_b2a19685-c53e-4c5a-9503-744a5373bf2c%29%7EgroupAccessType%28plus%29%7Eregion%28use%29/shortName ``` ```json {"error":{"message":"\"malformed url\"","status_code":400,"waf_code":26497}} ``` When using the raw string without encoding, the API yields a `200` response as expected. ``` https://vrchat.com/api/1/instances/wrld_28aab3e4-953f-4c85-9223-ef29a0873a6e:31124~group(grp_b2a19685-c53e-4c5a-9503-744a5373bf2c)~groupAccessType(plus)~region(use)/shortName ``` --- generate.sh | 3 +++ src/main/java/io/github/vrchatapi/ApiClient.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/generate.sh b/generate.sh index f5760643..a98f91d0 100755 --- a/generate.sh +++ b/generate.sh @@ -28,6 +28,9 @@ rm api/ -rf # Update Java 7 to Java 8 sed -i 's/java.version>1.7/java.version>1.8/g' pom.xml +# Avoid percent-encoding for "(" and ")" characters in URI +sed -i 's/URLEncoder.encode(str, "utf8").replaceAll("\\\\+", "%20")/URLEncoder.encode(str, "utf8").replaceAll("%28", "(").replaceAll("%29", ")").replaceAll("\\\\+", "%20")/g' src/main/java/io/github/vrchatapi/ApiClient.java + # Add global cookie storage sed -i '/addNetworkInterceptor/a \ builder.cookieJar(new io.github.vrchatapi.util.SimpleOkHttpCookieJar());' src/main/java/io/github/vrchatapi/ApiClient.java diff --git a/src/main/java/io/github/vrchatapi/ApiClient.java b/src/main/java/io/github/vrchatapi/ApiClient.java index f29684bd..cf562585 100644 --- a/src/main/java/io/github/vrchatapi/ApiClient.java +++ b/src/main/java/io/github/vrchatapi/ApiClient.java @@ -793,7 +793,7 @@ public String selectHeaderContentType(String[] contentTypes) { */ public String escapeString(String str) { try { - return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + return URLEncoder.encode(str, "utf8").replaceAll("%28", "(").replaceAll("%29", ")").replaceAll("\\+", "%20"); } catch (UnsupportedEncodingException e) { return str; }