diff --git a/CHANGELOG.md b/CHANGELOG.md
index 40c3275..422b08c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Change Log
+## 12.2.0
+
+* Add transaction support for Databases and TablesDB
+
## 12.1.0
* Deprecate `createVerification` method in `Account` service
diff --git a/README.md b/README.md
index e7345cf..16b349c 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ repositories {
Next, add the dependency to your project's `build.gradle(.kts)` file:
```groovy
-implementation("io.appwrite:sdk-for-kotlin:12.1.0")
+implementation("io.appwrite:sdk-for-kotlin:12.2.0")
```
### Maven
@@ -50,7 +50,7 @@ Add this to your project's `pom.xml` file:
io.appwrite
sdk-for-kotlin
- 12.1.0
+ 12.2.0
```
diff --git a/docs/examples/java/databases/create-document.md b/docs/examples/java/databases/create-document.md
index d5e777d..9c6357d 100644
--- a/docs/examples/java/databases/create-document.md
+++ b/docs/examples/java/databases/create-document.md
@@ -21,6 +21,7 @@ databases.createDocument(
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/create-documents.md b/docs/examples/java/databases/create-documents.md
index 0de0c27..3a45409 100644
--- a/docs/examples/java/databases/create-documents.md
+++ b/docs/examples/java/databases/create-documents.md
@@ -13,6 +13,7 @@ databases.createDocuments(
"", // databaseId
"", // collectionId
listOf(), // documents
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/create-operations.md b/docs/examples/java/databases/create-operations.md
new file mode 100644
index 0000000..2dad8a1
--- /dev/null
+++ b/docs/examples/java/databases/create-operations.md
@@ -0,0 +1,34 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.createOperations(
+ "", // transactionId
+ listOf(
+ {
+ "action": "create",
+ "databaseId": "",
+ "collectionId": "",
+ "documentId": "",
+ "data": {
+ "name": "Walter O'Brien"
+ }
+ }
+ ), // operations (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/create-transaction.md b/docs/examples/java/databases/create-transaction.md
new file mode 100644
index 0000000..5fb7c59
--- /dev/null
+++ b/docs/examples/java/databases/create-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.createTransaction(
+ 60, // ttl (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/decrement-document-attribute.md b/docs/examples/java/databases/decrement-document-attribute.md
index a44cc51..a852083 100644
--- a/docs/examples/java/databases/decrement-document-attribute.md
+++ b/docs/examples/java/databases/decrement-document-attribute.md
@@ -16,6 +16,7 @@ databases.decrementDocumentAttribute(
"", // attribute
0, // value (optional)
0, // min (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/delete-document.md b/docs/examples/java/databases/delete-document.md
index f6e6209..2f7003b 100644
--- a/docs/examples/java/databases/delete-document.md
+++ b/docs/examples/java/databases/delete-document.md
@@ -13,6 +13,7 @@ databases.deleteDocument(
"", // databaseId
"", // collectionId
"", // documentId
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/delete-documents.md b/docs/examples/java/databases/delete-documents.md
index e8394b1..958c40c 100644
--- a/docs/examples/java/databases/delete-documents.md
+++ b/docs/examples/java/databases/delete-documents.md
@@ -13,6 +13,7 @@ databases.deleteDocuments(
"", // databaseId
"", // collectionId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/delete-transaction.md b/docs/examples/java/databases/delete-transaction.md
new file mode 100644
index 0000000..200bbbd
--- /dev/null
+++ b/docs/examples/java/databases/delete-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.deleteTransaction(
+ "", // transactionId
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/get-document.md b/docs/examples/java/databases/get-document.md
index 2719073..489447f 100644
--- a/docs/examples/java/databases/get-document.md
+++ b/docs/examples/java/databases/get-document.md
@@ -14,6 +14,7 @@ databases.getDocument(
"", // collectionId
"", // documentId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/get-transaction.md b/docs/examples/java/databases/get-transaction.md
new file mode 100644
index 0000000..d896ca0
--- /dev/null
+++ b/docs/examples/java/databases/get-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.getTransaction(
+ "", // transactionId
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/increment-document-attribute.md b/docs/examples/java/databases/increment-document-attribute.md
index b5b5054..be837d0 100644
--- a/docs/examples/java/databases/increment-document-attribute.md
+++ b/docs/examples/java/databases/increment-document-attribute.md
@@ -16,6 +16,7 @@ databases.incrementDocumentAttribute(
"", // attribute
0, // value (optional)
0, // max (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/list-documents.md b/docs/examples/java/databases/list-documents.md
index 36982c0..1e84348 100644
--- a/docs/examples/java/databases/list-documents.md
+++ b/docs/examples/java/databases/list-documents.md
@@ -13,6 +13,7 @@ databases.listDocuments(
"", // databaseId
"", // collectionId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/list-transactions.md b/docs/examples/java/databases/list-transactions.md
new file mode 100644
index 0000000..281fc12
--- /dev/null
+++ b/docs/examples/java/databases/list-transactions.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.listTransactions(
+ listOf(), // queries (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/update-document.md b/docs/examples/java/databases/update-document.md
index f7b05c9..f3019ab 100644
--- a/docs/examples/java/databases/update-document.md
+++ b/docs/examples/java/databases/update-document.md
@@ -15,6 +15,7 @@ databases.updateDocument(
"", // documentId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/update-documents.md b/docs/examples/java/databases/update-documents.md
index b4138b4..a685ac8 100644
--- a/docs/examples/java/databases/update-documents.md
+++ b/docs/examples/java/databases/update-documents.md
@@ -14,6 +14,7 @@ databases.updateDocuments(
"", // collectionId
mapOf( "a" to "b" ), // data (optional)
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/update-transaction.md b/docs/examples/java/databases/update-transaction.md
new file mode 100644
index 0000000..8479ed3
--- /dev/null
+++ b/docs/examples/java/databases/update-transaction.md
@@ -0,0 +1,25 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.Databases;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+Databases databases = new Databases(client);
+
+databases.updateTransaction(
+ "", // transactionId
+ false, // commit (optional)
+ false, // rollback (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/databases/upsert-document.md b/docs/examples/java/databases/upsert-document.md
index daa4414..39864b9 100644
--- a/docs/examples/java/databases/upsert-document.md
+++ b/docs/examples/java/databases/upsert-document.md
@@ -15,6 +15,7 @@ databases.upsertDocument(
"", // documentId
mapOf( "a" to "b" ), // data
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/databases/upsert-documents.md b/docs/examples/java/databases/upsert-documents.md
index 95e9a33..b8fcd87 100644
--- a/docs/examples/java/databases/upsert-documents.md
+++ b/docs/examples/java/databases/upsert-documents.md
@@ -13,6 +13,7 @@ databases.upsertDocuments(
"", // databaseId
"", // collectionId
listOf(), // documents
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/messaging/create-push.md b/docs/examples/java/messaging/create-push.md
index 277ab96..14e8ca2 100644
--- a/docs/examples/java/messaging/create-push.md
+++ b/docs/examples/java/messaging/create-push.md
@@ -18,7 +18,7 @@ messaging.createPush(
listOf(), // targets (optional)
mapOf( "a" to "b" ), // data (optional)
"", // action (optional)
- "[ID1:ID2]", // image (optional)
+ "", // image (optional)
"", // icon (optional)
"", // sound (optional)
"", // color (optional)
diff --git a/docs/examples/java/messaging/update-push.md b/docs/examples/java/messaging/update-push.md
index b7038de..ce56683 100644
--- a/docs/examples/java/messaging/update-push.md
+++ b/docs/examples/java/messaging/update-push.md
@@ -18,7 +18,7 @@ messaging.updatePush(
"", // body (optional)
mapOf( "a" to "b" ), // data (optional)
"", // action (optional)
- "[ID1:ID2]", // image (optional)
+ "", // image (optional)
"", // icon (optional)
"", // sound (optional)
"", // color (optional)
diff --git a/docs/examples/java/tablesdb/create-operations.md b/docs/examples/java/tablesdb/create-operations.md
new file mode 100644
index 0000000..9504f62
--- /dev/null
+++ b/docs/examples/java/tablesdb/create-operations.md
@@ -0,0 +1,34 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.createOperations(
+ "", // transactionId
+ listOf(
+ {
+ "action": "create",
+ "databaseId": "",
+ "tableId": "",
+ "rowId": "",
+ "data": {
+ "name": "Walter O'Brien"
+ }
+ }
+ ), // operations (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/create-row.md b/docs/examples/java/tablesdb/create-row.md
index 6c7d847..d041511 100644
--- a/docs/examples/java/tablesdb/create-row.md
+++ b/docs/examples/java/tablesdb/create-row.md
@@ -21,6 +21,7 @@ tablesDB.createRow(
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/create-rows.md b/docs/examples/java/tablesdb/create-rows.md
index 21bdd21..956d812 100644
--- a/docs/examples/java/tablesdb/create-rows.md
+++ b/docs/examples/java/tablesdb/create-rows.md
@@ -13,6 +13,7 @@ tablesDB.createRows(
"", // databaseId
"", // tableId
listOf(), // rows
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/create-transaction.md b/docs/examples/java/tablesdb/create-transaction.md
new file mode 100644
index 0000000..3529956
--- /dev/null
+++ b/docs/examples/java/tablesdb/create-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.createTransaction(
+ 60, // ttl (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/decrement-row-column.md b/docs/examples/java/tablesdb/decrement-row-column.md
index b9f250f..78a8116 100644
--- a/docs/examples/java/tablesdb/decrement-row-column.md
+++ b/docs/examples/java/tablesdb/decrement-row-column.md
@@ -16,6 +16,7 @@ tablesDB.decrementRowColumn(
"", // column
0, // value (optional)
0, // min (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/delete-row.md b/docs/examples/java/tablesdb/delete-row.md
index fd66525..5da1ba0 100644
--- a/docs/examples/java/tablesdb/delete-row.md
+++ b/docs/examples/java/tablesdb/delete-row.md
@@ -13,6 +13,7 @@ tablesDB.deleteRow(
"", // databaseId
"", // tableId
"", // rowId
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/delete-rows.md b/docs/examples/java/tablesdb/delete-rows.md
index 43b772e..80ca0bb 100644
--- a/docs/examples/java/tablesdb/delete-rows.md
+++ b/docs/examples/java/tablesdb/delete-rows.md
@@ -13,6 +13,7 @@ tablesDB.deleteRows(
"", // databaseId
"", // tableId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/delete-transaction.md b/docs/examples/java/tablesdb/delete-transaction.md
new file mode 100644
index 0000000..816b6e5
--- /dev/null
+++ b/docs/examples/java/tablesdb/delete-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.deleteTransaction(
+ "", // transactionId
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/get-row.md b/docs/examples/java/tablesdb/get-row.md
index 03cf3fb..d642ebc 100644
--- a/docs/examples/java/tablesdb/get-row.md
+++ b/docs/examples/java/tablesdb/get-row.md
@@ -14,6 +14,7 @@ tablesDB.getRow(
"", // tableId
"", // rowId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/get-transaction.md b/docs/examples/java/tablesdb/get-transaction.md
new file mode 100644
index 0000000..dab07dc
--- /dev/null
+++ b/docs/examples/java/tablesdb/get-transaction.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.getTransaction(
+ "", // transactionId
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/increment-row-column.md b/docs/examples/java/tablesdb/increment-row-column.md
index db48d05..3371572 100644
--- a/docs/examples/java/tablesdb/increment-row-column.md
+++ b/docs/examples/java/tablesdb/increment-row-column.md
@@ -16,6 +16,7 @@ tablesDB.incrementRowColumn(
"", // column
0, // value (optional)
0, // max (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/list-rows.md b/docs/examples/java/tablesdb/list-rows.md
index 52cf2a1..96520e2 100644
--- a/docs/examples/java/tablesdb/list-rows.md
+++ b/docs/examples/java/tablesdb/list-rows.md
@@ -13,6 +13,7 @@ tablesDB.listRows(
"", // databaseId
"", // tableId
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/list-transactions.md b/docs/examples/java/tablesdb/list-transactions.md
new file mode 100644
index 0000000..acc4902
--- /dev/null
+++ b/docs/examples/java/tablesdb/list-transactions.md
@@ -0,0 +1,23 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.listTransactions(
+ listOf(), // queries (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/update-row.md b/docs/examples/java/tablesdb/update-row.md
index bedc816..b4f9631 100644
--- a/docs/examples/java/tablesdb/update-row.md
+++ b/docs/examples/java/tablesdb/update-row.md
@@ -15,6 +15,7 @@ tablesDB.updateRow(
"", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/update-rows.md b/docs/examples/java/tablesdb/update-rows.md
index 169b57c..7d39e44 100644
--- a/docs/examples/java/tablesdb/update-rows.md
+++ b/docs/examples/java/tablesdb/update-rows.md
@@ -14,6 +14,7 @@ tablesDB.updateRows(
"", // tableId
mapOf( "a" to "b" ), // data (optional)
listOf(), // queries (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/update-transaction.md b/docs/examples/java/tablesdb/update-transaction.md
new file mode 100644
index 0000000..f043d5d
--- /dev/null
+++ b/docs/examples/java/tablesdb/update-transaction.md
@@ -0,0 +1,25 @@
+import io.appwrite.Client;
+import io.appwrite.coroutines.CoroutineCallback;
+import io.appwrite.services.TablesDB;
+
+Client client = new Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey(""); // Your secret API key
+
+TablesDB tablesDB = new TablesDB(client);
+
+tablesDB.updateTransaction(
+ "", // transactionId
+ false, // commit (optional)
+ false, // rollback (optional)
+ new CoroutineCallback<>((result, error) -> {
+ if (error != null) {
+ error.printStackTrace();
+ return;
+ }
+
+ System.out.println(result);
+ })
+);
+
diff --git a/docs/examples/java/tablesdb/upsert-row.md b/docs/examples/java/tablesdb/upsert-row.md
index d6155fc..b6a986e 100644
--- a/docs/examples/java/tablesdb/upsert-row.md
+++ b/docs/examples/java/tablesdb/upsert-row.md
@@ -15,6 +15,7 @@ tablesDB.upsertRow(
"", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/java/tablesdb/upsert-rows.md b/docs/examples/java/tablesdb/upsert-rows.md
index da15f6a..c4b2bf3 100644
--- a/docs/examples/java/tablesdb/upsert-rows.md
+++ b/docs/examples/java/tablesdb/upsert-rows.md
@@ -13,6 +13,7 @@ tablesDB.upsertRows(
"", // databaseId
"", // tableId
listOf(), // rows
+ "", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
diff --git a/docs/examples/kotlin/databases/create-document.md b/docs/examples/kotlin/databases/create-document.md
index 1c1d628..46cb711 100644
--- a/docs/examples/kotlin/databases/create-document.md
+++ b/docs/examples/kotlin/databases/create-document.md
@@ -20,5 +20,6 @@ val response = databases.createDocument(
"age" to 30,
"isAdmin" to false
),
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/create-documents.md b/docs/examples/kotlin/databases/create-documents.md
index 41a98dc..114d5cc 100644
--- a/docs/examples/kotlin/databases/create-documents.md
+++ b/docs/examples/kotlin/databases/create-documents.md
@@ -12,5 +12,6 @@ val databases = Databases(client)
val response = databases.createDocuments(
databaseId = "",
collectionId = "",
- documents = listOf()
+ documents = listOf(),
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/create-operations.md b/docs/examples/kotlin/databases/create-operations.md
new file mode 100644
index 0000000..1c74181
--- /dev/null
+++ b/docs/examples/kotlin/databases/create-operations.md
@@ -0,0 +1,25 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.createOperations(
+ transactionId = "",
+ operations = listOf(
+ {
+ "action": "create",
+ "databaseId": "",
+ "collectionId": "",
+ "documentId": "",
+ "data": {
+ "name": "Walter O'Brien"
+ }
+ }
+ ) // optional
+)
diff --git a/docs/examples/kotlin/databases/create-transaction.md b/docs/examples/kotlin/databases/create-transaction.md
new file mode 100644
index 0000000..83ff583
--- /dev/null
+++ b/docs/examples/kotlin/databases/create-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.createTransaction(
+ ttl = 60 // optional
+)
diff --git a/docs/examples/kotlin/databases/decrement-document-attribute.md b/docs/examples/kotlin/databases/decrement-document-attribute.md
index d0226c0..3ccd662 100644
--- a/docs/examples/kotlin/databases/decrement-document-attribute.md
+++ b/docs/examples/kotlin/databases/decrement-document-attribute.md
@@ -15,5 +15,6 @@ val response = databases.decrementDocumentAttribute(
documentId = "",
attribute = "",
value = 0, // optional
- min = 0 // optional
+ min = 0, // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/delete-document.md b/docs/examples/kotlin/databases/delete-document.md
index a9eea6b..3be4372 100644
--- a/docs/examples/kotlin/databases/delete-document.md
+++ b/docs/examples/kotlin/databases/delete-document.md
@@ -12,5 +12,6 @@ val databases = Databases(client)
val response = databases.deleteDocument(
databaseId = "",
collectionId = "",
- documentId = ""
+ documentId = "",
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/delete-documents.md b/docs/examples/kotlin/databases/delete-documents.md
index c4caa63..9b9ea26 100644
--- a/docs/examples/kotlin/databases/delete-documents.md
+++ b/docs/examples/kotlin/databases/delete-documents.md
@@ -12,5 +12,6 @@ val databases = Databases(client)
val response = databases.deleteDocuments(
databaseId = "",
collectionId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/delete-transaction.md b/docs/examples/kotlin/databases/delete-transaction.md
new file mode 100644
index 0000000..ef11e9f
--- /dev/null
+++ b/docs/examples/kotlin/databases/delete-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.deleteTransaction(
+ transactionId = ""
+)
diff --git a/docs/examples/kotlin/databases/get-document.md b/docs/examples/kotlin/databases/get-document.md
index d21a198..98855d0 100644
--- a/docs/examples/kotlin/databases/get-document.md
+++ b/docs/examples/kotlin/databases/get-document.md
@@ -13,5 +13,6 @@ val response = databases.getDocument(
databaseId = "",
collectionId = "",
documentId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/get-transaction.md b/docs/examples/kotlin/databases/get-transaction.md
new file mode 100644
index 0000000..1e44376
--- /dev/null
+++ b/docs/examples/kotlin/databases/get-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.getTransaction(
+ transactionId = ""
+)
diff --git a/docs/examples/kotlin/databases/increment-document-attribute.md b/docs/examples/kotlin/databases/increment-document-attribute.md
index b56ed91..fb35886 100644
--- a/docs/examples/kotlin/databases/increment-document-attribute.md
+++ b/docs/examples/kotlin/databases/increment-document-attribute.md
@@ -15,5 +15,6 @@ val response = databases.incrementDocumentAttribute(
documentId = "",
attribute = "",
value = 0, // optional
- max = 0 // optional
+ max = 0, // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/list-documents.md b/docs/examples/kotlin/databases/list-documents.md
index ed9cb31..ab75493 100644
--- a/docs/examples/kotlin/databases/list-documents.md
+++ b/docs/examples/kotlin/databases/list-documents.md
@@ -12,5 +12,6 @@ val databases = Databases(client)
val response = databases.listDocuments(
databaseId = "",
collectionId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/list-transactions.md b/docs/examples/kotlin/databases/list-transactions.md
new file mode 100644
index 0000000..0d122b1
--- /dev/null
+++ b/docs/examples/kotlin/databases/list-transactions.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.listTransactions(
+ queries = listOf() // optional
+)
diff --git a/docs/examples/kotlin/databases/update-document.md b/docs/examples/kotlin/databases/update-document.md
index 4dd0349..c64a705 100644
--- a/docs/examples/kotlin/databases/update-document.md
+++ b/docs/examples/kotlin/databases/update-document.md
@@ -14,5 +14,6 @@ val response = databases.updateDocument(
collectionId = "",
documentId = "",
data = mapOf( "a" to "b" ), // optional
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/update-documents.md b/docs/examples/kotlin/databases/update-documents.md
index 9d6c2b5..b5b76fc 100644
--- a/docs/examples/kotlin/databases/update-documents.md
+++ b/docs/examples/kotlin/databases/update-documents.md
@@ -13,5 +13,6 @@ val response = databases.updateDocuments(
databaseId = "",
collectionId = "",
data = mapOf( "a" to "b" ), // optional
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/update-transaction.md b/docs/examples/kotlin/databases/update-transaction.md
new file mode 100644
index 0000000..834d0dc
--- /dev/null
+++ b/docs/examples/kotlin/databases/update-transaction.md
@@ -0,0 +1,16 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.Databases
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val databases = Databases(client)
+
+val response = databases.updateTransaction(
+ transactionId = "",
+ commit = false, // optional
+ rollback = false // optional
+)
diff --git a/docs/examples/kotlin/databases/upsert-document.md b/docs/examples/kotlin/databases/upsert-document.md
index d8be0e1..d6d6800 100644
--- a/docs/examples/kotlin/databases/upsert-document.md
+++ b/docs/examples/kotlin/databases/upsert-document.md
@@ -14,5 +14,6 @@ val response = databases.upsertDocument(
collectionId = "",
documentId = "",
data = mapOf( "a" to "b" ),
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/databases/upsert-documents.md b/docs/examples/kotlin/databases/upsert-documents.md
index ca861c6..db9e2b3 100644
--- a/docs/examples/kotlin/databases/upsert-documents.md
+++ b/docs/examples/kotlin/databases/upsert-documents.md
@@ -12,5 +12,6 @@ val databases = Databases(client)
val response = databases.upsertDocuments(
databaseId = "",
collectionId = "",
- documents = listOf()
+ documents = listOf(),
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/messaging/create-push.md b/docs/examples/kotlin/messaging/create-push.md
index 5b07f53..d0d765a 100644
--- a/docs/examples/kotlin/messaging/create-push.md
+++ b/docs/examples/kotlin/messaging/create-push.md
@@ -18,7 +18,7 @@ val response = messaging.createPush(
targets = listOf(), // optional
data = mapOf( "a" to "b" ), // optional
action = "", // optional
- image = "[ID1:ID2]", // optional
+ image = "", // optional
icon = "", // optional
sound = "", // optional
color = "", // optional
diff --git a/docs/examples/kotlin/messaging/update-push.md b/docs/examples/kotlin/messaging/update-push.md
index 710a37e..0b9c4c6 100644
--- a/docs/examples/kotlin/messaging/update-push.md
+++ b/docs/examples/kotlin/messaging/update-push.md
@@ -18,7 +18,7 @@ val response = messaging.updatePush(
body = "", // optional
data = mapOf( "a" to "b" ), // optional
action = "", // optional
- image = "[ID1:ID2]", // optional
+ image = "", // optional
icon = "", // optional
sound = "", // optional
color = "", // optional
diff --git a/docs/examples/kotlin/tablesdb/create-operations.md b/docs/examples/kotlin/tablesdb/create-operations.md
new file mode 100644
index 0000000..40c98d1
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/create-operations.md
@@ -0,0 +1,25 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.createOperations(
+ transactionId = "",
+ operations = listOf(
+ {
+ "action": "create",
+ "databaseId": "",
+ "tableId": "",
+ "rowId": "",
+ "data": {
+ "name": "Walter O'Brien"
+ }
+ }
+ ) // optional
+)
diff --git a/docs/examples/kotlin/tablesdb/create-row.md b/docs/examples/kotlin/tablesdb/create-row.md
index 774800d..b060389 100644
--- a/docs/examples/kotlin/tablesdb/create-row.md
+++ b/docs/examples/kotlin/tablesdb/create-row.md
@@ -20,5 +20,6 @@ val response = tablesDB.createRow(
"age" to 30,
"isAdmin" to false
),
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/create-rows.md b/docs/examples/kotlin/tablesdb/create-rows.md
index 1da47b5..8cef602 100644
--- a/docs/examples/kotlin/tablesdb/create-rows.md
+++ b/docs/examples/kotlin/tablesdb/create-rows.md
@@ -12,5 +12,6 @@ val tablesDB = TablesDB(client)
val response = tablesDB.createRows(
databaseId = "",
tableId = "",
- rows = listOf()
+ rows = listOf(),
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/create-transaction.md b/docs/examples/kotlin/tablesdb/create-transaction.md
new file mode 100644
index 0000000..3138570
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/create-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.createTransaction(
+ ttl = 60 // optional
+)
diff --git a/docs/examples/kotlin/tablesdb/decrement-row-column.md b/docs/examples/kotlin/tablesdb/decrement-row-column.md
index e284ec3..30a8d54 100644
--- a/docs/examples/kotlin/tablesdb/decrement-row-column.md
+++ b/docs/examples/kotlin/tablesdb/decrement-row-column.md
@@ -15,5 +15,6 @@ val response = tablesDB.decrementRowColumn(
rowId = "",
column = "",
value = 0, // optional
- min = 0 // optional
+ min = 0, // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/delete-row.md b/docs/examples/kotlin/tablesdb/delete-row.md
index f24b935..6ba7d60 100644
--- a/docs/examples/kotlin/tablesdb/delete-row.md
+++ b/docs/examples/kotlin/tablesdb/delete-row.md
@@ -12,5 +12,6 @@ val tablesDB = TablesDB(client)
val response = tablesDB.deleteRow(
databaseId = "",
tableId = "",
- rowId = ""
+ rowId = "",
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/delete-rows.md b/docs/examples/kotlin/tablesdb/delete-rows.md
index c915a5c..da2b709 100644
--- a/docs/examples/kotlin/tablesdb/delete-rows.md
+++ b/docs/examples/kotlin/tablesdb/delete-rows.md
@@ -12,5 +12,6 @@ val tablesDB = TablesDB(client)
val response = tablesDB.deleteRows(
databaseId = "",
tableId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/delete-transaction.md b/docs/examples/kotlin/tablesdb/delete-transaction.md
new file mode 100644
index 0000000..2ef1f27
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/delete-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.deleteTransaction(
+ transactionId = ""
+)
diff --git a/docs/examples/kotlin/tablesdb/get-row.md b/docs/examples/kotlin/tablesdb/get-row.md
index ec54631..f92a1cc 100644
--- a/docs/examples/kotlin/tablesdb/get-row.md
+++ b/docs/examples/kotlin/tablesdb/get-row.md
@@ -13,5 +13,6 @@ val response = tablesDB.getRow(
databaseId = "",
tableId = "",
rowId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/get-transaction.md b/docs/examples/kotlin/tablesdb/get-transaction.md
new file mode 100644
index 0000000..f4467dc
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/get-transaction.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.getTransaction(
+ transactionId = ""
+)
diff --git a/docs/examples/kotlin/tablesdb/increment-row-column.md b/docs/examples/kotlin/tablesdb/increment-row-column.md
index cac151e..af3676e 100644
--- a/docs/examples/kotlin/tablesdb/increment-row-column.md
+++ b/docs/examples/kotlin/tablesdb/increment-row-column.md
@@ -15,5 +15,6 @@ val response = tablesDB.incrementRowColumn(
rowId = "",
column = "",
value = 0, // optional
- max = 0 // optional
+ max = 0, // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/list-rows.md b/docs/examples/kotlin/tablesdb/list-rows.md
index b0f5df4..711e4e1 100644
--- a/docs/examples/kotlin/tablesdb/list-rows.md
+++ b/docs/examples/kotlin/tablesdb/list-rows.md
@@ -12,5 +12,6 @@ val tablesDB = TablesDB(client)
val response = tablesDB.listRows(
databaseId = "",
tableId = "",
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/list-transactions.md b/docs/examples/kotlin/tablesdb/list-transactions.md
new file mode 100644
index 0000000..a060b9f
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/list-transactions.md
@@ -0,0 +1,14 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.listTransactions(
+ queries = listOf() // optional
+)
diff --git a/docs/examples/kotlin/tablesdb/update-row.md b/docs/examples/kotlin/tablesdb/update-row.md
index 9c5248f..0fefb78 100644
--- a/docs/examples/kotlin/tablesdb/update-row.md
+++ b/docs/examples/kotlin/tablesdb/update-row.md
@@ -14,5 +14,6 @@ val response = tablesDB.updateRow(
tableId = "",
rowId = "",
data = mapOf( "a" to "b" ), // optional
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/update-rows.md b/docs/examples/kotlin/tablesdb/update-rows.md
index c285d5b..61041a7 100644
--- a/docs/examples/kotlin/tablesdb/update-rows.md
+++ b/docs/examples/kotlin/tablesdb/update-rows.md
@@ -13,5 +13,6 @@ val response = tablesDB.updateRows(
databaseId = "",
tableId = "",
data = mapOf( "a" to "b" ), // optional
- queries = listOf() // optional
+ queries = listOf(), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/update-transaction.md b/docs/examples/kotlin/tablesdb/update-transaction.md
new file mode 100644
index 0000000..a3797ca
--- /dev/null
+++ b/docs/examples/kotlin/tablesdb/update-transaction.md
@@ -0,0 +1,16 @@
+import io.appwrite.Client
+import io.appwrite.coroutines.CoroutineCallback
+import io.appwrite.services.TablesDB
+
+val client = Client()
+ .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint
+ .setProject("") // Your project ID
+ .setKey("") // Your secret API key
+
+val tablesDB = TablesDB(client)
+
+val response = tablesDB.updateTransaction(
+ transactionId = "",
+ commit = false, // optional
+ rollback = false // optional
+)
diff --git a/docs/examples/kotlin/tablesdb/upsert-row.md b/docs/examples/kotlin/tablesdb/upsert-row.md
index 3fcbc61..5bcc73b 100644
--- a/docs/examples/kotlin/tablesdb/upsert-row.md
+++ b/docs/examples/kotlin/tablesdb/upsert-row.md
@@ -14,5 +14,6 @@ val response = tablesDB.upsertRow(
tableId = "",
rowId = "",
data = mapOf( "a" to "b" ), // optional
- permissions = listOf("read("any")") // optional
+ permissions = listOf("read("any")"), // optional
+ transactionId = "" // optional
)
diff --git a/docs/examples/kotlin/tablesdb/upsert-rows.md b/docs/examples/kotlin/tablesdb/upsert-rows.md
index 7059c60..2f08375 100644
--- a/docs/examples/kotlin/tablesdb/upsert-rows.md
+++ b/docs/examples/kotlin/tablesdb/upsert-rows.md
@@ -12,5 +12,6 @@ val tablesDB = TablesDB(client)
val response = tablesDB.upsertRows(
databaseId = "",
tableId = "",
- rows = listOf()
+ rows = listOf(),
+ transactionId = "" // optional
)
diff --git a/src/main/kotlin/io/appwrite/Client.kt b/src/main/kotlin/io/appwrite/Client.kt
index 579ff22..4a1836c 100644
--- a/src/main/kotlin/io/appwrite/Client.kt
+++ b/src/main/kotlin/io/appwrite/Client.kt
@@ -58,11 +58,11 @@ class Client @JvmOverloads constructor(
init {
headers = mutableMapOf(
"content-type" to "application/json",
- "user-agent" to "AppwriteKotlinSDK/12.1.0 ${System.getProperty("http.agent")}",
+ "user-agent" to "AppwriteKotlinSDK/12.2.0 ${System.getProperty("http.agent")}",
"x-sdk-name" to "Kotlin",
"x-sdk-platform" to "server",
"x-sdk-language" to "kotlin",
- "x-sdk-version" to "12.1.0",
+ "x-sdk-version" to "12.2.0",
"x-appwrite-response-format" to "1.8.0",
)
diff --git a/src/main/kotlin/io/appwrite/models/Transaction.kt b/src/main/kotlin/io/appwrite/models/Transaction.kt
new file mode 100644
index 0000000..baf32d3
--- /dev/null
+++ b/src/main/kotlin/io/appwrite/models/Transaction.kt
@@ -0,0 +1,70 @@
+package io.appwrite.models
+
+import com.google.gson.annotations.SerializedName
+import io.appwrite.extensions.jsonCast
+
+/**
+ * Transaction
+ */
+data class Transaction(
+ /**
+ * Transaction ID.
+ */
+ @SerializedName("\$id")
+ val id: String,
+
+ /**
+ * Transaction creation time in ISO 8601 format.
+ */
+ @SerializedName("\$createdAt")
+ val createdAt: String,
+
+ /**
+ * Transaction update date in ISO 8601 format.
+ */
+ @SerializedName("\$updatedAt")
+ val updatedAt: String,
+
+ /**
+ * Current status of the transaction. One of: pending, committing, committed, rolled_back, failed.
+ */
+ @SerializedName("status")
+ val status: String,
+
+ /**
+ * Number of operations in the transaction.
+ */
+ @SerializedName("operations")
+ val operations: Long,
+
+ /**
+ * Expiration time in ISO 8601 format.
+ */
+ @SerializedName("expiresAt")
+ val expiresAt: String,
+
+) {
+ fun toMap(): Map = mapOf(
+ "\$id" to id as Any,
+ "\$createdAt" to createdAt as Any,
+ "\$updatedAt" to updatedAt as Any,
+ "status" to status as Any,
+ "operations" to operations as Any,
+ "expiresAt" to expiresAt as Any,
+ )
+
+ companion object {
+
+ @Suppress("UNCHECKED_CAST")
+ fun from(
+ map: Map,
+ ) = Transaction(
+ id = map["\$id"] as String,
+ createdAt = map["\$createdAt"] as String,
+ updatedAt = map["\$updatedAt"] as String,
+ status = map["status"] as String,
+ operations = (map["operations"] as Number).toLong(),
+ expiresAt = map["expiresAt"] as String,
+ )
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/appwrite/models/TransactionList.kt b/src/main/kotlin/io/appwrite/models/TransactionList.kt
new file mode 100644
index 0000000..1233ed4
--- /dev/null
+++ b/src/main/kotlin/io/appwrite/models/TransactionList.kt
@@ -0,0 +1,38 @@
+package io.appwrite.models
+
+import com.google.gson.annotations.SerializedName
+import io.appwrite.extensions.jsonCast
+
+/**
+ * Transaction List
+ */
+data class TransactionList(
+ /**
+ * Total number of transactions that matched your query.
+ */
+ @SerializedName("total")
+ val total: Long,
+
+ /**
+ * List of transactions.
+ */
+ @SerializedName("transactions")
+ val transactions: List,
+
+) {
+ fun toMap(): Map = mapOf(
+ "total" to total as Any,
+ "transactions" to transactions.map { it.toMap() } as Any,
+ )
+
+ companion object {
+
+ @Suppress("UNCHECKED_CAST")
+ fun from(
+ map: Map,
+ ) = TransactionList(
+ total = (map["total"] as Number).toLong(),
+ transactions = (map["transactions"] as List