diff --git a/README.md b/README.md
index db65d39..a0c4c6d 100644
--- a/README.md
+++ b/README.md
@@ -2,12 +2,12 @@


-
+
[](https://travis-ci.com/appwrite/sdk-generator)
[](https://twitter.com/appwrite)
[](https://appwrite.io/discord)
-**This SDK is compatible with Appwrite server version 1.7.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-android/releases).**
+**This SDK is compatible with Appwrite server version 1.8.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-android/releases).**
Appwrite is an open-source backend as a service server that abstract and simplify complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Android SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
@@ -38,7 +38,7 @@ repositories {
Next, add the dependency to your project's `build.gradle(.kts)` file:
```groovy
-implementation("io.appwrite:sdk-for-android:8.2.2")
+implementation("io.appwrite:sdk-for-android:9.0.0")
```
### Maven
@@ -49,7 +49,7 @@ Add this to your project's `pom.xml` file:
io.appwrite
sdk-for-android
- 8.2.2
+ 9.0.0
```
diff --git a/docs/examples/java/account/create-j-w-t.md b/docs/examples/java/account/create-jwt.md
similarity index 100%
rename from docs/examples/java/account/create-j-w-t.md
rename to docs/examples/java/account/create-jwt.md
diff --git a/docs/examples/java/account/create-magic-u-r-l-token.md b/docs/examples/java/account/create-magic-url-token.md
similarity index 100%
rename from docs/examples/java/account/create-magic-u-r-l-token.md
rename to docs/examples/java/account/create-magic-url-token.md
diff --git a/docs/examples/java/account/create-mfa-authenticator.md b/docs/examples/java/account/create-mfa-authenticator.md
index 54781f2..d236f46 100644
--- a/docs/examples/java/account/create-mfa-authenticator.md
+++ b/docs/examples/java/account/create-mfa-authenticator.md
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.createMfaAuthenticator(
+account.createMFAAuthenticator(
AuthenticatorType.TOTP, // type
new CoroutineCallback<>((result, error) -> {
if (error != null) {
diff --git a/docs/examples/java/account/create-mfa-challenge.md b/docs/examples/java/account/create-mfa-challenge.md
index 87a56fe..222c0bd 100644
--- a/docs/examples/java/account/create-mfa-challenge.md
+++ b/docs/examples/java/account/create-mfa-challenge.md
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.createMfaChallenge(
+account.createMFAChallenge(
AuthenticationFactor.EMAIL, // factor
new CoroutineCallback<>((result, error) -> {
if (error != null) {
diff --git a/docs/examples/java/account/create-mfa-recovery-codes.md b/docs/examples/java/account/create-mfa-recovery-codes.md
index ab50734..792e086 100644
--- a/docs/examples/java/account/create-mfa-recovery-codes.md
+++ b/docs/examples/java/account/create-mfa-recovery-codes.md
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.createMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
+account.createMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
diff --git a/docs/examples/java/account/create-o-auth2session.md b/docs/examples/java/account/create-o-auth-2-session.md
similarity index 100%
rename from docs/examples/java/account/create-o-auth2session.md
rename to docs/examples/java/account/create-o-auth-2-session.md
diff --git a/docs/examples/java/account/create-o-auth2token.md b/docs/examples/java/account/create-o-auth-2-token.md
similarity index 100%
rename from docs/examples/java/account/create-o-auth2token.md
rename to docs/examples/java/account/create-o-auth-2-token.md
diff --git a/docs/examples/java/account/delete-mfa-authenticator.md b/docs/examples/java/account/delete-mfa-authenticator.md
index 4a9693b..b5ff26c 100644
--- a/docs/examples/java/account/delete-mfa-authenticator.md
+++ b/docs/examples/java/account/delete-mfa-authenticator.md
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.deleteMfaAuthenticator(
+account.deleteMFAAuthenticator(
AuthenticatorType.TOTP, // type
new CoroutineCallback<>((result, error) -> {
if (error != null) {
diff --git a/docs/examples/java/account/get-mfa-recovery-codes.md b/docs/examples/java/account/get-mfa-recovery-codes.md
index 8274bb3..22bc1c1 100644
--- a/docs/examples/java/account/get-mfa-recovery-codes.md
+++ b/docs/examples/java/account/get-mfa-recovery-codes.md
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.getMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
+account.getMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
diff --git a/docs/examples/java/account/list-mfa-factors.md b/docs/examples/java/account/list-mfa-factors.md
index 9ea8331..06f20e1 100644
--- a/docs/examples/java/account/list-mfa-factors.md
+++ b/docs/examples/java/account/list-mfa-factors.md
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.listMfaFactors(new CoroutineCallback<>((result, error) -> {
+account.listMFAFactors(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
diff --git a/docs/examples/java/account/update-magic-u-r-l-session.md b/docs/examples/java/account/update-magic-url-session.md
similarity index 100%
rename from docs/examples/java/account/update-magic-u-r-l-session.md
rename to docs/examples/java/account/update-magic-url-session.md
diff --git a/docs/examples/java/account/update-mfa-authenticator.md b/docs/examples/java/account/update-mfa-authenticator.md
index b8016e7..00ddd46 100644
--- a/docs/examples/java/account/update-mfa-authenticator.md
+++ b/docs/examples/java/account/update-mfa-authenticator.md
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.updateMfaAuthenticator(
+account.updateMFAAuthenticator(
AuthenticatorType.TOTP, // type
"", // otp
new CoroutineCallback<>((result, error) -> {
diff --git a/docs/examples/java/account/update-mfa-challenge.md b/docs/examples/java/account/update-mfa-challenge.md
index c640150..10b5db4 100644
--- a/docs/examples/java/account/update-mfa-challenge.md
+++ b/docs/examples/java/account/update-mfa-challenge.md
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.updateMfaChallenge(
+account.updateMFAChallenge(
"", // challengeId
"", // otp
new CoroutineCallback<>((result, error) -> {
diff --git a/docs/examples/java/account/update-mfa-recovery-codes.md b/docs/examples/java/account/update-mfa-recovery-codes.md
index 650ae24..c0d6c69 100644
--- a/docs/examples/java/account/update-mfa-recovery-codes.md
+++ b/docs/examples/java/account/update-mfa-recovery-codes.md
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
-account.updateMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
+account.updateMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
diff --git a/docs/examples/java/account/update-m-f-a.md b/docs/examples/java/account/update-mfa.md
similarity index 100%
rename from docs/examples/java/account/update-m-f-a.md
rename to docs/examples/java/account/update-mfa.md
diff --git a/docs/examples/java/avatars/get-q-r.md b/docs/examples/java/avatars/get-qr.md
similarity index 100%
rename from docs/examples/java/avatars/get-q-r.md
rename to docs/examples/java/avatars/get-qr.md
diff --git a/docs/examples/java/locale/list-countries-e-u.md b/docs/examples/java/locale/list-countries-eu.md
similarity index 100%
rename from docs/examples/java/locale/list-countries-e-u.md
rename to docs/examples/java/locale/list-countries-eu.md
diff --git a/docs/examples/java/tablesdb/create-row.md b/docs/examples/java/tablesdb/create-row.md
new file mode 100644
index 0000000..12d1680
--- /dev/null
+++ b/docs/examples/java/tablesdb/create-row.md
@@ -0,0 +1,26 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.createRow(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ mapOf( "a" to "b" ), // data
+ listOf("read("any")"), // permissions (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/decrement-row-column.md b/docs/examples/java/tablesdb/decrement-row-column.md
new file mode 100644
index 0000000..73f2128
--- /dev/null
+++ b/docs/examples/java/tablesdb/decrement-row-column.md
@@ -0,0 +1,27 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.decrementRowColumn(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ "", // column
+ 0, // value (optional)
+ 0, // min (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/delete-row.md b/docs/examples/java/tablesdb/delete-row.md
new file mode 100644
index 0000000..d4c351b
--- /dev/null
+++ b/docs/examples/java/tablesdb/delete-row.md
@@ -0,0 +1,24 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.deleteRow(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/get-row.md b/docs/examples/java/tablesdb/get-row.md
new file mode 100644
index 0000000..191fc89
--- /dev/null
+++ b/docs/examples/java/tablesdb/get-row.md
@@ -0,0 +1,25 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.getRow(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ listOf(), // queries (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/increment-row-column.md b/docs/examples/java/tablesdb/increment-row-column.md
new file mode 100644
index 0000000..dc2120e
--- /dev/null
+++ b/docs/examples/java/tablesdb/increment-row-column.md
@@ -0,0 +1,27 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.incrementRowColumn(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ "", // column
+ 0, // value (optional)
+ 0, // max (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/list-rows.md b/docs/examples/java/tablesdb/list-rows.md
new file mode 100644
index 0000000..dc50574
--- /dev/null
+++ b/docs/examples/java/tablesdb/list-rows.md
@@ -0,0 +1,24 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.listRows(
+ "", // databaseId
+ "", // tableId
+ listOf(), // queries (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/update-row.md b/docs/examples/java/tablesdb/update-row.md
new file mode 100644
index 0000000..0f1fabc
--- /dev/null
+++ b/docs/examples/java/tablesdb/update-row.md
@@ -0,0 +1,26 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.updateRow(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ mapOf( "a" to "b" ), // data (optional)
+ listOf("read("any")"), // permissions (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/upsert-row.md b/docs/examples/java/tablesdb/upsert-row.md
new file mode 100644
index 0000000..22c0e94
--- /dev/null
+++ b/docs/examples/java/tablesdb/upsert-row.md
@@ -0,0 +1,26 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject(""); // Your project ID
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.upsertRow(
+ "", // databaseId
+ "", // tableId
+ "", // rowId
+ mapOf( "a" to "b" ), // data (optional)
+ listOf("read("any")"), // permissions (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ Log.d("Appwrite", result.toString());
+ })
+);
+
diff --git a/docs/examples/kotlin/account/create-j-w-t.md b/docs/examples/kotlin/account/create-jwt.md
similarity index 100%
rename from docs/examples/kotlin/account/create-j-w-t.md
rename to docs/examples/kotlin/account/create-jwt.md
diff --git a/docs/examples/kotlin/account/create-magic-u-r-l-token.md b/docs/examples/kotlin/account/create-magic-url-token.md
similarity index 100%
rename from docs/examples/kotlin/account/create-magic-u-r-l-token.md
rename to docs/examples/kotlin/account/create-magic-url-token.md
diff --git a/docs/examples/kotlin/account/create-mfa-authenticator.md b/docs/examples/kotlin/account/create-mfa-authenticator.md
index ffb2f2f..934de1c 100644
--- a/docs/examples/kotlin/account/create-mfa-authenticator.md
+++ b/docs/examples/kotlin/account/create-mfa-authenticator.md
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
-val result = account.createMfaAuthenticator(
+val result = account.createMFAAuthenticator(
type = AuthenticatorType.TOTP,
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/account/create-mfa-challenge.md b/docs/examples/kotlin/account/create-mfa-challenge.md
index 36b12d3..f79c498 100644
--- a/docs/examples/kotlin/account/create-mfa-challenge.md
+++ b/docs/examples/kotlin/account/create-mfa-challenge.md
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
-val result = account.createMfaChallenge(
+val result = account.createMFAChallenge(
factor = AuthenticationFactor.EMAIL,
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/account/create-mfa-recovery-codes.md b/docs/examples/kotlin/account/create-mfa-recovery-codes.md
index 974c8f2..cc56966 100644
--- a/docs/examples/kotlin/account/create-mfa-recovery-codes.md
+++ b/docs/examples/kotlin/account/create-mfa-recovery-codes.md
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
-val result = account.createMfaRecoveryCodes()
+val result = account.createMFARecoveryCodes()
diff --git a/docs/examples/kotlin/account/create-o-auth2session.md b/docs/examples/kotlin/account/create-o-auth-2-session.md
similarity index 100%
rename from docs/examples/kotlin/account/create-o-auth2session.md
rename to docs/examples/kotlin/account/create-o-auth-2-session.md
diff --git a/docs/examples/kotlin/account/create-o-auth2token.md b/docs/examples/kotlin/account/create-o-auth-2-token.md
similarity index 100%
rename from docs/examples/kotlin/account/create-o-auth2token.md
rename to docs/examples/kotlin/account/create-o-auth-2-token.md
diff --git a/docs/examples/kotlin/account/delete-mfa-authenticator.md b/docs/examples/kotlin/account/delete-mfa-authenticator.md
index 057e021..b140a11 100644
--- a/docs/examples/kotlin/account/delete-mfa-authenticator.md
+++ b/docs/examples/kotlin/account/delete-mfa-authenticator.md
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
-val result = account.deleteMfaAuthenticator(
+val result = account.deleteMFAAuthenticator(
type = AuthenticatorType.TOTP,
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/account/get-mfa-recovery-codes.md b/docs/examples/kotlin/account/get-mfa-recovery-codes.md
index 6201658..f9d3612 100644
--- a/docs/examples/kotlin/account/get-mfa-recovery-codes.md
+++ b/docs/examples/kotlin/account/get-mfa-recovery-codes.md
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
-val result = account.getMfaRecoveryCodes()
+val result = account.getMFARecoveryCodes()
diff --git a/docs/examples/kotlin/account/list-mfa-factors.md b/docs/examples/kotlin/account/list-mfa-factors.md
index 09119ab..56d1c4d 100644
--- a/docs/examples/kotlin/account/list-mfa-factors.md
+++ b/docs/examples/kotlin/account/list-mfa-factors.md
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
-val result = account.listMfaFactors()
+val result = account.listMFAFactors()
diff --git a/docs/examples/kotlin/account/update-magic-u-r-l-session.md b/docs/examples/kotlin/account/update-magic-url-session.md
similarity index 100%
rename from docs/examples/kotlin/account/update-magic-u-r-l-session.md
rename to docs/examples/kotlin/account/update-magic-url-session.md
diff --git a/docs/examples/kotlin/account/update-mfa-authenticator.md b/docs/examples/kotlin/account/update-mfa-authenticator.md
index 987825e..4f6ecd7 100644
--- a/docs/examples/kotlin/account/update-mfa-authenticator.md
+++ b/docs/examples/kotlin/account/update-mfa-authenticator.md
@@ -9,7 +9,7 @@ val client = Client(context)
val account = Account(client)
-val result = account.updateMfaAuthenticator(
+val result = account.updateMFAAuthenticator(
type = AuthenticatorType.TOTP,
otp = "",
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/account/update-mfa-challenge.md b/docs/examples/kotlin/account/update-mfa-challenge.md
index c7f8139..d5cbc1f 100644
--- a/docs/examples/kotlin/account/update-mfa-challenge.md
+++ b/docs/examples/kotlin/account/update-mfa-challenge.md
@@ -8,7 +8,7 @@ val client = Client(context)
val account = Account(client)
-val result = account.updateMfaChallenge(
+val result = account.updateMFAChallenge(
challengeId = "",
otp = "",
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/account/update-mfa-recovery-codes.md b/docs/examples/kotlin/account/update-mfa-recovery-codes.md
index c0ee3c3..0277ca7 100644
--- a/docs/examples/kotlin/account/update-mfa-recovery-codes.md
+++ b/docs/examples/kotlin/account/update-mfa-recovery-codes.md
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
-val result = account.updateMfaRecoveryCodes()
+val result = account.updateMFARecoveryCodes()
diff --git a/docs/examples/kotlin/account/update-m-f-a.md b/docs/examples/kotlin/account/update-mfa.md
similarity index 100%
rename from docs/examples/kotlin/account/update-m-f-a.md
rename to docs/examples/kotlin/account/update-mfa.md
diff --git a/docs/examples/kotlin/avatars/get-q-r.md b/docs/examples/kotlin/avatars/get-qr.md
similarity index 100%
rename from docs/examples/kotlin/avatars/get-q-r.md
rename to docs/examples/kotlin/avatars/get-qr.md
diff --git a/docs/examples/kotlin/locale/list-countries-e-u.md b/docs/examples/kotlin/locale/list-countries-eu.md
similarity index 100%
rename from docs/examples/kotlin/locale/list-countries-e-u.md
rename to docs/examples/kotlin/locale/list-countries-eu.md
diff --git a/docs/examples/kotlin/tablesdb/create-row.md b/docs/examples/kotlin/tablesdb/create-row.md
new file mode 100644
index 0000000..1a9cbdb
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/create-row.md
@@ -0,0 +1,17 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.createRow(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ data = mapOf( "a" to "b" ),
+ permissions = listOf("read("any")"), // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/decrement-row-column.md b/docs/examples/kotlin/tablesdb/decrement-row-column.md
new file mode 100644
index 0000000..645e9f4
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/decrement-row-column.md
@@ -0,0 +1,18 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.decrementRowColumn(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ column = "",
+ value = 0, // (optional)
+ min = 0, // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/delete-row.md b/docs/examples/kotlin/tablesdb/delete-row.md
new file mode 100644
index 0000000..3fcd409
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/delete-row.md
@@ -0,0 +1,15 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.deleteRow(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/get-row.md b/docs/examples/kotlin/tablesdb/get-row.md
new file mode 100644
index 0000000..b754cba
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/get-row.md
@@ -0,0 +1,16 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.getRow(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ queries = listOf(), // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/increment-row-column.md b/docs/examples/kotlin/tablesdb/increment-row-column.md
new file mode 100644
index 0000000..230408a
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/increment-row-column.md
@@ -0,0 +1,18 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.incrementRowColumn(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ column = "",
+ value = 0, // (optional)
+ max = 0, // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/list-rows.md b/docs/examples/kotlin/tablesdb/list-rows.md
new file mode 100644
index 0000000..05d9ca3
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/list-rows.md
@@ -0,0 +1,15 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.listRows(
+ databaseId = "",
+ tableId = "",
+ queries = listOf(), // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/update-row.md b/docs/examples/kotlin/tablesdb/update-row.md
new file mode 100644
index 0000000..f99f8f2
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/update-row.md
@@ -0,0 +1,17 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.updateRow(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ data = mapOf( "a" to "b" ), // (optional)
+ permissions = listOf("read("any")"), // (optional)
+)
\ No newline at end of file
diff --git a/docs/examples/kotlin/tablesdb/upsert-row.md b/docs/examples/kotlin/tablesdb/upsert-row.md
new file mode 100644
index 0000000..d82406a
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/upsert-row.md
@@ -0,0 +1,17 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client(context)
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+
+val tablesDB = TablesDB(client)
+
+val result = tablesDB.upsertRow(
+ databaseId = "",
+ tableId = "",
+ rowId = "",
+ data = mapOf( "a" to "b" ), // (optional)
+ permissions = listOf("read("any")"), // (optional)
+)
\ No newline at end of file
diff --git a/library/src/main/java/io/appwrite/Client.kt b/library/src/main/java/io/appwrite/Client.kt
index 1dbeda8..10f9255 100644
--- a/library/src/main/java/io/appwrite/Client.kt
+++ b/library/src/main/java/io/appwrite/Client.kt
@@ -87,8 +87,8 @@ class Client @JvmOverloads constructor(
"x-sdk-name" to "Android",
"x-sdk-platform" to "client",
"x-sdk-language" to "android",
- "x-sdk-version" to "8.2.2",
- "x-appwrite-response-format" to "1.7.0"
+ "x-sdk-version" to "9.0.0",
+ "x-appwrite-response-format" to "1.8.0"
)
config = mutableMapOf()
diff --git a/library/src/main/java/io/appwrite/Query.kt b/library/src/main/java/io/appwrite/Query.kt
index e326335..39798f3 100644
--- a/library/src/main/java/io/appwrite/Query.kt
+++ b/library/src/main/java/io/appwrite/Query.kt
@@ -192,6 +192,84 @@ class Query(
*/
fun contains(attribute: String, value: Any) = Query("contains", attribute, parseValue(value)).toJson()
+ /**
+ * Filter resources where attribute does not contain the specified value.
+ *
+ * @param attribute The attribute to filter on.
+ * @param value The value to compare against.
+ * @returns The query string.
+ */
+ fun notContains(attribute: String, value: Any) = Query("notContains", attribute, parseValue(value)).toJson()
+
+ /**
+ * Filter resources by searching attribute for value (inverse of search).
+ *
+ * @param attribute The attribute to filter on.
+ * @param value The search value to match against.
+ * @returns The query string.
+ */
+ fun notSearch(attribute: String, value: String) = Query("notSearch", attribute, listOf(value)).toJson()
+
+ /**
+ * Filter resources where attribute is not between start and end (exclusive).
+ *
+ * @param attribute The attribute to filter on.
+ * @param start The start value of the range.
+ * @param end The end value of the range.
+ * @returns The query string.
+ */
+ fun notBetween(attribute: String, start: Any, end: Any) = Query("notBetween", attribute, listOf(start, end)).toJson()
+
+ /**
+ * Filter resources where attribute does not start with value.
+ *
+ * @param attribute The attribute to filter on.
+ * @param value The value to compare against.
+ * @returns The query string.
+ */
+ fun notStartsWith(attribute: String, value: String) = Query("notStartsWith", attribute, listOf(value)).toJson()
+
+ /**
+ * Filter resources where attribute does not end with value.
+ *
+ * @param attribute The attribute to filter on.
+ * @param value The value to compare against.
+ * @returns The query string.
+ */
+ fun notEndsWith(attribute: String, value: String) = Query("notEndsWith", attribute, listOf(value)).toJson()
+
+ /**
+ * Filter resources where document was created before date.
+ *
+ * @param value The date value to compare against.
+ * @returns The query string.
+ */
+ fun createdBefore(value: String) = Query("createdBefore", null, listOf(value)).toJson()
+
+ /**
+ * Filter resources where document was created after date.
+ *
+ * @param value The date value to compare against.
+ * @returns The query string.
+ */
+ fun createdAfter(value: String) = Query("createdAfter", null, listOf(value)).toJson()
+
+ /**
+ * Filter resources where document was updated before date.
+ *
+ * @param value The date value to compare against.
+ * @returns The query string.
+ */
+ fun updatedBefore(value: String) = Query("updatedBefore", null, listOf(value)).toJson()
+
+ /**
+ * Filter resources where document was updated after date.
+ *
+ * @param value The date value to compare against.
+ * @returns The query string.
+ */
+ fun updatedAfter(value: String) = Query("updatedAfter", null, listOf(value)).toJson()
+
/**
* Combine multiple queries using logical OR operator.
*
diff --git a/library/src/main/java/io/appwrite/models/ContinentList.kt b/library/src/main/java/io/appwrite/models/ContinentList.kt
index fdd490a..789acff 100644
--- a/library/src/main/java/io/appwrite/models/ContinentList.kt
+++ b/library/src/main/java/io/appwrite/models/ContinentList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class ContinentList(
/**
- * Total number of continents documents that matched your query.
+ * Total number of continents that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/CountryList.kt b/library/src/main/java/io/appwrite/models/CountryList.kt
index 350a894..47c0e72 100644
--- a/library/src/main/java/io/appwrite/models/CountryList.kt
+++ b/library/src/main/java/io/appwrite/models/CountryList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class CountryList(
/**
- * Total number of countries documents that matched your query.
+ * Total number of countries that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/CurrencyList.kt b/library/src/main/java/io/appwrite/models/CurrencyList.kt
index fe1e001..5a57a02 100644
--- a/library/src/main/java/io/appwrite/models/CurrencyList.kt
+++ b/library/src/main/java/io/appwrite/models/CurrencyList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class CurrencyList(
/**
- * Total number of currencies documents that matched your query.
+ * Total number of currencies that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/DocumentList.kt b/library/src/main/java/io/appwrite/models/DocumentList.kt
index fa3dd20..c26cd26 100644
--- a/library/src/main/java/io/appwrite/models/DocumentList.kt
+++ b/library/src/main/java/io/appwrite/models/DocumentList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class DocumentList(
/**
- * Total number of documents documents that matched your query.
+ * Total number of documents that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/Execution.kt b/library/src/main/java/io/appwrite/models/Execution.kt
index 216e146..8b395c6 100644
--- a/library/src/main/java/io/appwrite/models/Execution.kt
+++ b/library/src/main/java/io/appwrite/models/Execution.kt
@@ -20,7 +20,7 @@ data class Execution(
val createdAt: String,
/**
- * Execution upate date in ISO 8601 format.
+ * Execution update date in ISO 8601 format.
*/
@SerializedName("\$updatedAt")
val updatedAt: String,
@@ -37,6 +37,12 @@ data class Execution(
@SerializedName("functionId")
val functionId: String,
+ /**
+ * Function's deployment ID used to create the execution.
+ */
+ @SerializedName("deploymentId")
+ val deploymentId: String,
+
/**
* The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.
*/
@@ -116,6 +122,7 @@ data class Execution(
"\$updatedAt" to updatedAt as Any,
"\$permissions" to permissions as Any,
"functionId" to functionId as Any,
+ "deploymentId" to deploymentId as Any,
"trigger" to trigger as Any,
"status" to status as Any,
"requestMethod" to requestMethod as Any,
@@ -141,6 +148,7 @@ data class Execution(
updatedAt = map["\$updatedAt"] as String,
permissions = map["\$permissions"] as List,
functionId = map["functionId"] as String,
+ deploymentId = map["deploymentId"] as String,
trigger = map["trigger"] as String,
status = map["status"] as String,
requestMethod = map["requestMethod"] as String,
diff --git a/library/src/main/java/io/appwrite/models/ExecutionList.kt b/library/src/main/java/io/appwrite/models/ExecutionList.kt
index 322aeee..a976e78 100644
--- a/library/src/main/java/io/appwrite/models/ExecutionList.kt
+++ b/library/src/main/java/io/appwrite/models/ExecutionList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class ExecutionList(
/**
- * Total number of executions documents that matched your query.
+ * Total number of executions that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/FileList.kt b/library/src/main/java/io/appwrite/models/FileList.kt
index 5af18f1..dfdd212 100644
--- a/library/src/main/java/io/appwrite/models/FileList.kt
+++ b/library/src/main/java/io/appwrite/models/FileList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class FileList(
/**
- * Total number of files documents that matched your query.
+ * Total number of files that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/IdentityList.kt b/library/src/main/java/io/appwrite/models/IdentityList.kt
index 1cbb07d..49c3346 100644
--- a/library/src/main/java/io/appwrite/models/IdentityList.kt
+++ b/library/src/main/java/io/appwrite/models/IdentityList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class IdentityList(
/**
- * Total number of identities documents that matched your query.
+ * Total number of identities that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/LanguageList.kt b/library/src/main/java/io/appwrite/models/LanguageList.kt
index 07559b9..1aac2f7 100644
--- a/library/src/main/java/io/appwrite/models/LanguageList.kt
+++ b/library/src/main/java/io/appwrite/models/LanguageList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class LanguageList(
/**
- * Total number of languages documents that matched your query.
+ * Total number of languages that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/Locale.kt b/library/src/main/java/io/appwrite/models/Locale.kt
index abe4a0e..93d28d4 100644
--- a/library/src/main/java/io/appwrite/models/Locale.kt
+++ b/library/src/main/java/io/appwrite/models/Locale.kt
@@ -26,7 +26,7 @@ data class Locale(
val country: String,
/**
- * Continent code. A two character continent code "AF" for Africa, "AN" for Antarctica, "AS" for Asia, "EU" for Europe, "NA" for North America, "OC" for Oceania, and "SA" for South America.
+ * Continent code. A two character continent code "AF" for Africa, "AN" for Antarctica, "AS" for Asia, "EU" for Europe, "NA" for North America, "OC" for Oceania, and "SA" for South America.
*/
@SerializedName("continentCode")
val continentCode: String,
diff --git a/library/src/main/java/io/appwrite/models/LocaleCodeList.kt b/library/src/main/java/io/appwrite/models/LocaleCodeList.kt
index 3973a03..7949b57 100644
--- a/library/src/main/java/io/appwrite/models/LocaleCodeList.kt
+++ b/library/src/main/java/io/appwrite/models/LocaleCodeList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class LocaleCodeList(
/**
- * Total number of localeCodes documents that matched your query.
+ * Total number of localeCodes that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/LogList.kt b/library/src/main/java/io/appwrite/models/LogList.kt
index b9f381c..c88451c 100644
--- a/library/src/main/java/io/appwrite/models/LogList.kt
+++ b/library/src/main/java/io/appwrite/models/LogList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class LogList(
/**
- * Total number of logs documents that matched your query.
+ * Total number of logs that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/MembershipList.kt b/library/src/main/java/io/appwrite/models/MembershipList.kt
index 7feaaaa..b2bea4e 100644
--- a/library/src/main/java/io/appwrite/models/MembershipList.kt
+++ b/library/src/main/java/io/appwrite/models/MembershipList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class MembershipList(
/**
- * Total number of memberships documents that matched your query.
+ * Total number of memberships that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/PhoneList.kt b/library/src/main/java/io/appwrite/models/PhoneList.kt
index b17de4f..5f7c22f 100644
--- a/library/src/main/java/io/appwrite/models/PhoneList.kt
+++ b/library/src/main/java/io/appwrite/models/PhoneList.kt
@@ -8,7 +8,7 @@ import io.appwrite.extensions.jsonCast
*/
data class PhoneList(
/**
- * Total number of phones documents that matched your query.
+ * Total number of phones that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/Row.kt b/library/src/main/java/io/appwrite/models/Row.kt
new file mode 100644
index 0000000..bb5c14f
--- /dev/null
+++ b/library/src/main/java/io/appwrite/models/Row.kt
@@ -0,0 +1,105 @@
+package io.appwrite.models
+
+import com.google.gson.annotations.SerializedName
+import io.appwrite.extensions.jsonCast
+
+/**
+ * Row
+ */
+data class Row(
+ /**
+ * Row ID.
+ */
+ @SerializedName("\$id")
+ val id: String,
+
+ /**
+ * Row automatically incrementing ID.
+ */
+ @SerializedName("\$sequence")
+ val sequence: Long,
+
+ /**
+ * Table ID.
+ */
+ @SerializedName("\$tableId")
+ val tableId: String,
+
+ /**
+ * Database ID.
+ */
+ @SerializedName("\$databaseId")
+ val databaseId: String,
+
+ /**
+ * Row creation date in ISO 8601 format.
+ */
+ @SerializedName("\$createdAt")
+ val createdAt: String,
+
+ /**
+ * Row update date in ISO 8601 format.
+ */
+ @SerializedName("\$updatedAt")
+ val updatedAt: String,
+
+ /**
+ * Row permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
+ */
+ @SerializedName("\$permissions")
+ val permissions: List,
+
+ /**
+ * Additional properties
+ */
+ @SerializedName("data")
+ val data: T
+) {
+ fun toMap(): Map = mapOf(
+ "\$id" to id as Any,
+ "\$sequence" to sequence as Any,
+ "\$tableId" to tableId as Any,
+ "\$databaseId" to databaseId as Any,
+ "\$createdAt" to createdAt as Any,
+ "\$updatedAt" to updatedAt as Any,
+ "\$permissions" to permissions as Any,
+ "data" to data!!.jsonCast(to = Map::class.java)
+ )
+
+ companion object {
+ operator fun invoke(
+ id: String,
+ sequence: Long,
+ tableId: String,
+ databaseId: String,
+ createdAt: String,
+ updatedAt: String,
+ permissions: List,
+ data: Map
+ ) = Row