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/databases/decrement-document-attribute.md b/docs/examples/java/tablesdb/create-row.md
similarity index 64%
rename from docs/examples/java/databases/decrement-document-attribute.md
rename to docs/examples/java/tablesdb/create-row.md
index de6a4ab..4c7d10d 100644
--- a/docs/examples/java/databases/decrement-document-attribute.md
+++ b/docs/examples/java/tablesdb/create-row.md
@@ -1,20 +1,19 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
-import io.appwrite.services.Databases;
+import io.appwrite.services.TablesDb;
Client client = new Client(context)
.setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
.setProject(""); // Your project ID
-Databases databases = new Databases(client);
+TablesDb tablesDb = new TablesDb(client);
-databases.decrementDocumentAttribute(
+tablesDb.createRow(
"", // databaseId
- "", // collectionId
- "", // documentId
- "", // attribute
- 0, // value (optional)
- 0, // min (optional)
+ "", // tableId
+ "", // rowId
+ mapOf( "a" to "b" ), // data
+ listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/increment-document-attribute.md b/docs/examples/java/tablesdb/delete-row.md
similarity index 64%
rename from docs/examples/java/databases/increment-document-attribute.md
rename to docs/examples/java/tablesdb/delete-row.md
index 94ffa9d..776f6bd 100644
--- a/docs/examples/java/databases/increment-document-attribute.md
+++ b/docs/examples/java/tablesdb/delete-row.md
@@ -1,20 +1,17 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
-import io.appwrite.services.Databases;
+import io.appwrite.services.TablesDb;
Client client = new Client(context)
.setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
.setProject(""); // Your project ID
-Databases databases = new Databases(client);
+TablesDb tablesDb = new TablesDb(client);
-databases.incrementDocumentAttribute(
+tablesDb.deleteRow(
"", // databaseId
- "", // collectionId
- "", // documentId
- "", // attribute
- 0, // value (optional)
- 0, // max (optional)
+ "", // tableId
+ "", // rowId
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/get-row.md b/docs/examples/java/tablesdb/get-row.md
new file mode 100644
index 0000000..a0e20a3
--- /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/list-rows.md b/docs/examples/java/tablesdb/list-rows.md
new file mode 100644
index 0000000..9bd6f6d
--- /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..fdcd8ac
--- /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..6c60b9c
--- /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/databases/decrement-document-attribute.md b/docs/examples/kotlin/tablesdb/create-row.md
similarity index 50%
rename from docs/examples/kotlin/databases/decrement-document-attribute.md
rename to docs/examples/kotlin/tablesdb/create-row.md
index c500fa8..1e84ebd 100644
--- a/docs/examples/kotlin/databases/decrement-document-attribute.md
+++ b/docs/examples/kotlin/tablesdb/create-row.md
@@ -1,18 +1,17 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
-import io.appwrite.services.Databases
+import io.appwrite.services.TablesDb
val client = Client(context)
.setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("") // Your project ID
-val databases = Databases(client)
+val tablesDb = TablesDb(client)
-val result = databases.decrementDocumentAttribute(
+val result = tablesDb.createRow(
databaseId = "",
- collectionId = "",
- documentId = "",
- attribute = "",
- value = 0, // (optional)
- min = 0, // (optional)
+ tableId = "",
+ rowId = "",
+ data = mapOf( "a" to "b" ),
+ permissions = listOf("read("any")"), // (optional)
)
\ No newline at end of file
diff --git a/docs/examples/kotlin/databases/increment-document-attribute.md b/docs/examples/kotlin/tablesdb/delete-row.md
similarity index 50%
rename from docs/examples/kotlin/databases/increment-document-attribute.md
rename to docs/examples/kotlin/tablesdb/delete-row.md
index 0ae6b02..af6f5f5 100644
--- a/docs/examples/kotlin/databases/increment-document-attribute.md
+++ b/docs/examples/kotlin/tablesdb/delete-row.md
@@ -1,18 +1,15 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
-import io.appwrite.services.Databases
+import io.appwrite.services.TablesDb
val client = Client(context)
.setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("") // Your project ID
-val databases = Databases(client)
+val tablesDb = TablesDb(client)
-val result = databases.incrementDocumentAttribute(
+val result = tablesDb.deleteRow(
databaseId = "",
- collectionId = "",
- documentId = "",
- attribute = "",
- value = 0, // (optional)
- max = 0, // (optional)
+ 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..3408f1d
--- /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/list-rows.md b/docs/examples/kotlin/tablesdb/list-rows.md
new file mode 100644
index 0000000..b5bc755
--- /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..cc83763
--- /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..f9f165e
--- /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..a6ec310 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 rows 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..546cf73 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 rows 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..95dec92 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 rows 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..6f40579 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 rows that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/ExecutionList.kt b/library/src/main/java/io/appwrite/models/ExecutionList.kt
index 322aeee..ac11e4f 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 rows 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..ba69ea8 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 rows 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..2e1a33a 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 rows 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..ab78452 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 rows that matched your query.
*/
@SerializedName("total")
val total: Long,
diff --git a/library/src/main/java/io/appwrite/models/LocaleCodeList.kt b/library/src/main/java/io/appwrite/models/LocaleCodeList.kt
index 3973a03..6f47333 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 rows 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..d2e0b00 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 rows 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..efcffc4 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 rows 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..675295f 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 rows 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