diff --git a/config/clients/java/CHANGELOG.md.mustache b/config/clients/java/CHANGELOG.md.mustache
index df0b5d03..210cf087 100644
--- a/config/clients/java/CHANGELOG.md.mustache
+++ b/config/clients/java/CHANGELOG.md.mustache
@@ -1,5 +1,12 @@
 # Changelog
 
+## v0.2.2
+
+### [0.2.2](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.2.1...v0.2.2) (2023-10-31)
+
+- fix(client): an empty read request will no longer send an empty tuple
+- fix(client): an unused "user" field, and related methods, was removed from ClientExpandRequest
+
 ## v0.2.1
 
 ### [0.2.1](https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/compare/v0.2.0...v0.2.1) (2023-10-13)
diff --git a/config/clients/java/config.overrides.json b/config/clients/java/config.overrides.json
index b3c2b2ec..56b97c2f 100644
--- a/config/clients/java/config.overrides.json
+++ b/config/clients/java/config.overrides.json
@@ -3,7 +3,7 @@
   "gitRepoId": "java-sdk",
   "artifactId": "openfga-sdk",
   "groupId": "dev.openfga",
-  "packageVersion": "0.2.1",
+  "packageVersion": "0.2.2",
   "apiPackage": "dev.openfga.sdk.api",
   "authPackage": "dev.openfga.sdk.api.auth",
   "clientPackage": "dev.openfga.sdk.api.client",
diff --git a/config/clients/java/template/client-ClientExpandRequest.java.mustache b/config/clients/java/template/client-ClientExpandRequest.java.mustache
index 6c4155f6..16929d02 100644
--- a/config/clients/java/template/client-ClientExpandRequest.java.mustache
+++ b/config/clients/java/template/client-ClientExpandRequest.java.mustache
@@ -2,7 +2,6 @@
 package {{invokerPackage}};
 
 public class ClientExpandRequest {
-    private String user;
     private String relation;
     private String _object;
 
@@ -31,17 +30,4 @@ public class ClientExpandRequest {
     public String getRelation() {
         return relation;
     }
-
-    public ClientExpandRequest user(String user) {
-        this.user = user;
-        return this;
-    }
-
-    /**
-     * Get user
-     * @return user
-     **/
-    public String getUser() {
-        return user;
-    }
 }
diff --git a/config/clients/java/template/client-OpenFgaClient.java.mustache b/config/clients/java/template/client-OpenFgaClient.java.mustache
index a375753f..218d52fd 100644
--- a/config/clients/java/template/client-OpenFgaClient.java.mustache
+++ b/config/clients/java/template/client-OpenFgaClient.java.mustache
@@ -227,18 +227,17 @@ public class OpenFgaClient {
         String storeId = configuration.getStoreIdChecked();
 
         ReadRequest body = new ReadRequest();
-        TupleKey tupleKey = new TupleKey();
 
-        if (request != null) {
+        if (request != null && (request.getUser() != null || request.getRelation() != null || request.getObject() != null)) {
+            TupleKey tupleKey = new TupleKey();
             tupleKey.user(request.getUser()).relation(request.getRelation())._object(request.getObject());
+            body.tupleKey(tupleKey);
         }
 
         if (options != null) {
             body.pageSize(options.getPageSize()).continuationToken(options.getContinuationToken());
         }
 
-        body.tupleKey(tupleKey);
-
         return call(() -> api.read(storeId, body)).thenApply(ClientReadResponse::new);
     }
 
@@ -398,7 +397,6 @@ public class OpenFgaClient {
 
         if (request != null) {
             body.tupleKey(new TupleKey()
-                    .user(request.getUser())
                     .relation(request.getRelation())
                     ._object(request.getObject()));
         }
diff --git a/config/clients/java/template/client-OpenFgaClientTest.java.mustache b/config/clients/java/template/client-OpenFgaClientTest.java.mustache
index 6546e0ab..785dd37b 100644
--- a/config/clients/java/template/client-OpenFgaClientTest.java.mustache
+++ b/config/clients/java/template/client-OpenFgaClientTest.java.mustache
@@ -935,6 +935,21 @@ public class OpenFgaClientTest {
         assertEquals(DEFAULT_OBJECT, key.getObject());
     }
 
+    @Test
+    public void read_emptyRequestSendsNoTupleKey() throws Exception {
+        // Given
+        String postUrl = String.format("https://localhost/stores/%s/read", DEFAULT_STORE_ID);
+        String expectedBody = "{\"tuple_key\":null,\"page_size\":null,\"continuation_token\":null}";
+        mockHttpClient.onPost(postUrl).withBody(is(expectedBody)).doReturn(200, EMPTY_RESPONSE_BODY);
+        ClientReadRequest request = new ClientReadRequest();
+
+        // When
+        ClientReadResponse response = fga.read(request).get();
+
+        // Then
+        mockHttpClient.verify().post(postUrl).withBody(is(expectedBody)).called(1);
+    }
+
     @Test
     public void read_storeIdRequired() {
         // Given
@@ -1294,14 +1309,13 @@ public class OpenFgaClientTest {
         // Given
         String postPath = "https://localhost/stores/01YCP46JKYM8FJCQ37NMBYHE5X/expand";
         String expectedBody = String.format(
-                "{\"tuple_key\":{\"object\":\"%s\",\"relation\":\"%s\",\"user\":\"%s\"},\"authorization_model_id\":\"%s\"}",
-                DEFAULT_OBJECT, DEFAULT_RELATION, DEFAULT_USER, DEFAULT_AUTH_MODEL_ID);
+                "{\"tuple_key\":{\"object\":\"%s\",\"relation\":\"%s\",\"user\":null},\"authorization_model_id\":\"%s\"}",
+                DEFAULT_OBJECT, DEFAULT_RELATION, DEFAULT_AUTH_MODEL_ID);
         String responseBody = String.format(
                 "{\"tree\":{\"root\":{\"union\":{\"nodes\":[{\"leaf\":{\"users\":{\"users\":[\"%s\"]}}}]}}}}",
                 DEFAULT_USER);
         mockHttpClient.onPost(postPath).withBody(is(expectedBody)).doReturn(200, responseBody);
         ClientExpandRequest request = new ClientExpandRequest()
-                .user(DEFAULT_USER)
                 .relation(DEFAULT_RELATION)
                 ._object(DEFAULT_OBJECT);
         ClientExpandOptions options = new ClientExpandOptions().authorizationModelId(DEFAULT_AUTH_MODEL_ID);