diff --git a/examples/1.9.x/client-android/java/storage/create-file.md b/examples/1.9.x/client-android/java/storage/create-file.md index 3b73523bf..b4b0cb7ef 100644 --- a/examples/1.9.x/client-android/java/storage/create-file.md +++ b/examples/1.9.x/client-android/java/storage/create-file.md @@ -17,6 +17,7 @@ storage.createFile( "", // fileId InputFile.fromPath("file.png"), // file List.of(Permission.read(Role.any())), // permissions (optional) + "", // folder (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/client-android/kotlin/storage/create-file.md b/examples/1.9.x/client-android/kotlin/storage/create-file.md index df33a5a27..44d3ac8b5 100644 --- a/examples/1.9.x/client-android/kotlin/storage/create-file.md +++ b/examples/1.9.x/client-android/kotlin/storage/create-file.md @@ -17,5 +17,6 @@ val result = storage.createFile( fileId = "", file = InputFile.fromPath("file.png"), permissions = listOf(Permission.read(Role.any())), // (optional) + folder = "", // (optional) ) ``` diff --git a/examples/1.9.x/client-apple/examples/storage/create-file.md b/examples/1.9.x/client-apple/examples/storage/create-file.md index c4460774c..bffa4e3da 100644 --- a/examples/1.9.x/client-apple/examples/storage/create-file.md +++ b/examples/1.9.x/client-apple/examples/storage/create-file.md @@ -11,7 +11,8 @@ let file = try await storage.createFile( bucketId: "", fileId: "", file: InputFile.fromPath("file.png"), - permissions: [Permission.read(Role.any())] // optional + permissions: [Permission.read(Role.any())], // optional + folder: "" // optional ) ``` diff --git a/examples/1.9.x/client-flutter/examples/storage/create-file.md b/examples/1.9.x/client-flutter/examples/storage/create-file.md index 8f904801b..007abee41 100644 --- a/examples/1.9.x/client-flutter/examples/storage/create-file.md +++ b/examples/1.9.x/client-flutter/examples/storage/create-file.md @@ -15,5 +15,6 @@ File result = await storage.createFile( fileId: '', file: InputFile(path: './path-to-files/image.jpg', filename: 'image.jpg'), permissions: [Permission.read(Role.any())], // optional + folder: '', // optional ); ``` diff --git a/examples/1.9.x/client-graphql/examples/storage/create-file.md b/examples/1.9.x/client-graphql/examples/storage/create-file.md index 58e0a56a2..db9f6e049 100644 --- a/examples/1.9.x/client-graphql/examples/storage/create-file.md +++ b/examples/1.9.x/client-graphql/examples/storage/create-file.md @@ -10,7 +10,7 @@ Content-Length: *Length of your entity body in bytes* --cec8e8123c05ba25 Content-Disposition: form-data; name="operations" -{ "query": "mutation { storageCreateFile(bucketId: $bucketId, fileId: $fileId, file: $file, permissions: $permissions) { id }" }, "variables": { "bucketId": "", "fileId": "", "file": null, "permissions": ["read("any")"] } } +{ "query": "mutation { storageCreateFile(bucketId: $bucketId, fileId: $fileId, file: $file, permissions: $permissions, folder: $folder) { id }" }, "variables": { "bucketId": "", "fileId": "", "file": null, "permissions": ["read("any")"], "folder": "" } } --cec8e8123c05ba25 Content-Disposition: form-data; name="map" @@ -28,7 +28,8 @@ mutation { bucketId: "", fileId: "", file: null, - permissions: ["read("any")"] + permissions: ["read("any")"], + folder: "" ) { _id bucketId @@ -36,6 +37,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/client-graphql/examples/storage/get-file.md b/examples/1.9.x/client-graphql/examples/storage/get-file.md index 2614d069f..3bbbfcb4b 100644 --- a/examples/1.9.x/client-graphql/examples/storage/get-file.md +++ b/examples/1.9.x/client-graphql/examples/storage/get-file.md @@ -10,6 +10,8 @@ query { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/client-graphql/examples/storage/list-files.md b/examples/1.9.x/client-graphql/examples/storage/list-files.md index 54bafc6ff..974b01a7f 100644 --- a/examples/1.9.x/client-graphql/examples/storage/list-files.md +++ b/examples/1.9.x/client-graphql/examples/storage/list-files.md @@ -14,6 +14,8 @@ query { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/client-graphql/examples/storage/update-file.md b/examples/1.9.x/client-graphql/examples/storage/update-file.md index 858be546a..cd6face95 100644 --- a/examples/1.9.x/client-graphql/examples/storage/update-file.md +++ b/examples/1.9.x/client-graphql/examples/storage/update-file.md @@ -12,6 +12,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal @@ -35,6 +37,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/client-react-native/examples/storage/create-file.md b/examples/1.9.x/client-react-native/examples/storage/create-file.md index c1ca26ae3..eaf7cc03c 100644 --- a/examples/1.9.x/client-react-native/examples/storage/create-file.md +++ b/examples/1.9.x/client-react-native/examples/storage/create-file.md @@ -11,7 +11,8 @@ const result = await storage.createFile({ bucketId: '', fileId: '', file: InputFile.fromPath('/path/to/file', 'filename'), - permissions: ["read("any")"] // optional + permissions: ["read("any")"], // optional + folder: '' // optional }); console.log(result); diff --git a/examples/1.9.x/client-rest/examples/storage/create-file.md b/examples/1.9.x/client-rest/examples/storage/create-file.md index a126c6c86..af47bda9a 100644 --- a/examples/1.9.x/client-rest/examples/storage/create-file.md +++ b/examples/1.9.x/client-rest/examples/storage/create-file.md @@ -22,11 +22,17 @@ Content-Disposition: form-data; name="permissions[]" ["read(\"any\")"] +--cec8e8123c05ba25 +Content-Disposition: form-data; name="folder" + +"" + --cec8e8123c05ba25-- { "fileId": "", "file": cf 94 84 24 8d c4 91 10 0f dc 54 26 6c 8e 4b bc e8 ee 55 94 29 e7 94 89 19 26 28 01 26 29 3f 16..., - "permissions": ["read(\"any\")"] + "permissions": ["read(\"any\")"], + "folder": "" } ``` diff --git a/examples/1.9.x/client-web/examples/storage/create-file.md b/examples/1.9.x/client-web/examples/storage/create-file.md index b70885b2c..4c2f3b387 100644 --- a/examples/1.9.x/client-web/examples/storage/create-file.md +++ b/examples/1.9.x/client-web/examples/storage/create-file.md @@ -11,7 +11,8 @@ const result = await storage.createFile({ bucketId: '', fileId: '', file: document.getElementById('uploader').files[0], - permissions: [Permission.read(Role.any())] // optional + permissions: [Permission.read(Role.any())], // optional + folder: '' // optional }); console.log(result); diff --git a/examples/1.9.x/console-cli/examples/activities/list-events.md b/examples/1.9.x/console-cli/examples/activities/list-events.md index 9fa160dc6..48685d8d1 100644 --- a/examples/1.9.x/console-cli/examples/activities/list-events.md +++ b/examples/1.9.x/console-cli/examples/activities/list-events.md @@ -1,3 +1,4 @@ ```bash -appwrite activities list-events +appwrite activities list-events \ + --limit 25 ``` diff --git a/examples/1.9.x/console-cli/examples/apps/create-installation-token.md b/examples/1.9.x/console-cli/examples/apps/create-installation-token.md new file mode 100644 index 000000000..4aa905e6b --- /dev/null +++ b/examples/1.9.x/console-cli/examples/apps/create-installation-token.md @@ -0,0 +1,5 @@ +```bash +appwrite apps create-installation-token \ + --app-id \ + --installation-id +``` diff --git a/examples/1.9.x/console-cli/examples/apps/delete-installation.md b/examples/1.9.x/console-cli/examples/apps/delete-installation.md new file mode 100644 index 000000000..92976ee8b --- /dev/null +++ b/examples/1.9.x/console-cli/examples/apps/delete-installation.md @@ -0,0 +1,5 @@ +```bash +appwrite apps delete-installation \ + --app-id \ + --installation-id +``` diff --git a/examples/1.9.x/console-cli/examples/apps/get-installation.md b/examples/1.9.x/console-cli/examples/apps/get-installation.md new file mode 100644 index 000000000..b945aa14e --- /dev/null +++ b/examples/1.9.x/console-cli/examples/apps/get-installation.md @@ -0,0 +1,5 @@ +```bash +appwrite apps get-installation \ + --app-id \ + --installation-id +``` diff --git a/examples/1.9.x/console-cli/examples/apps/list-installations.md b/examples/1.9.x/console-cli/examples/apps/list-installations.md new file mode 100644 index 000000000..67c359d6a --- /dev/null +++ b/examples/1.9.x/console-cli/examples/apps/list-installations.md @@ -0,0 +1,5 @@ +```bash +appwrite apps list-installations \ + --app-id \ + --limit 25 +``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/authorize-post.md b/examples/1.9.x/console-cli/examples/oauth2/authorize-post.md index ce42b34eb..032a9df37 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/authorize-post.md +++ b/examples/1.9.x/console-cli/examples/oauth2/authorize-post.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 authorize-post +appwrite oauth2 authorize-post ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/authorize.md b/examples/1.9.x/console-cli/examples/oauth2/authorize.md index 45bc9b689..f1a40a099 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/authorize.md +++ b/examples/1.9.x/console-cli/examples/oauth2/authorize.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 authorize +appwrite oauth2 authorize ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/create-device-authorization.md b/examples/1.9.x/console-cli/examples/oauth2/create-device-authorization.md index 81655435f..a9c91f059 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/create-device-authorization.md +++ b/examples/1.9.x/console-cli/examples/oauth2/create-device-authorization.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 create-device-authorization +appwrite oauth2 create-device-authorization ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/create-grant.md b/examples/1.9.x/console-cli/examples/oauth2/create-grant.md index 5d2347084..73d2d65af 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/create-grant.md +++ b/examples/1.9.x/console-cli/examples/oauth2/create-grant.md @@ -1,4 +1,4 @@ ```bash -appwrite oauth-2 create-grant \ +appwrite oauth2 create-grant \ --user-_code ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/create-par.md b/examples/1.9.x/console-cli/examples/oauth2/create-par.md index 05e17f9ee..99cf65227 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/create-par.md +++ b/examples/1.9.x/console-cli/examples/oauth2/create-par.md @@ -1,5 +1,5 @@ ```bash -appwrite oauth-2 create-par \ +appwrite oauth2 create-par \ --client-_id \ --redirect-_uri https://example.com \ --response-_type code diff --git a/examples/1.9.x/console-cli/examples/oauth2/create-token.md b/examples/1.9.x/console-cli/examples/oauth2/create-token.md index a8fcc0a8e..4c67b999b 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/create-token.md +++ b/examples/1.9.x/console-cli/examples/oauth2/create-token.md @@ -1,4 +1,4 @@ ```bash -appwrite oauth-2 create-token \ +appwrite oauth2 create-token \ --grant-_type ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/get-grant.md b/examples/1.9.x/console-cli/examples/oauth2/get-grant.md index 53ce66354..d2931d07b 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/get-grant.md +++ b/examples/1.9.x/console-cli/examples/oauth2/get-grant.md @@ -1,4 +1,4 @@ ```bash -appwrite oauth-2 get-grant \ +appwrite oauth2 get-grant \ --grant-_id ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/list-organizations.md b/examples/1.9.x/console-cli/examples/oauth2/list-organizations.md index 9c201aeca..ea69368a3 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/list-organizations.md +++ b/examples/1.9.x/console-cli/examples/oauth2/list-organizations.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 list-organizations +appwrite oauth2 list-organizations ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/list-projects.md b/examples/1.9.x/console-cli/examples/oauth2/list-projects.md index 031605044..c8630be05 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/list-projects.md +++ b/examples/1.9.x/console-cli/examples/oauth2/list-projects.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 list-projects +appwrite oauth2 list-projects ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/logout-post.md b/examples/1.9.x/console-cli/examples/oauth2/logout-post.md index 0a6b49d1b..d5283fefb 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/logout-post.md +++ b/examples/1.9.x/console-cli/examples/oauth2/logout-post.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 logout-post +appwrite oauth2 logout-post ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/logout.md b/examples/1.9.x/console-cli/examples/oauth2/logout.md index ccb37f268..226f02460 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/logout.md +++ b/examples/1.9.x/console-cli/examples/oauth2/logout.md @@ -1,3 +1,3 @@ ```bash -appwrite oauth-2 logout +appwrite oauth2 logout ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/reject.md b/examples/1.9.x/console-cli/examples/oauth2/reject.md index 941b4815c..516f995d1 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/reject.md +++ b/examples/1.9.x/console-cli/examples/oauth2/reject.md @@ -1,4 +1,4 @@ ```bash -appwrite oauth-2 reject \ +appwrite oauth2 reject \ --grant-_id ``` diff --git a/examples/1.9.x/console-cli/examples/oauth2/revoke.md b/examples/1.9.x/console-cli/examples/oauth2/revoke.md index d83cc9d05..139379f9c 100644 --- a/examples/1.9.x/console-cli/examples/oauth2/revoke.md +++ b/examples/1.9.x/console-cli/examples/oauth2/revoke.md @@ -1,4 +1,4 @@ ```bash -appwrite oauth-2 revoke \ +appwrite oauth2 revoke \ --token ``` diff --git a/examples/1.9.x/console-cli/examples/project/update-session-duration-policy.md b/examples/1.9.x/console-cli/examples/project/update-session-duration-policy.md index dbb80ef18..a454de14c 100644 --- a/examples/1.9.x/console-cli/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/console-cli/examples/project/update-session-duration-policy.md @@ -1,4 +1,4 @@ ```bash appwrite project update-session-duration-policy \ - --duration 5 + --duration 60 ``` diff --git a/examples/1.9.x/console-cli/examples/project/update-user-limit-policy.md b/examples/1.9.x/console-cli/examples/project/update-user-limit-policy.md index 45e0fe90e..fcdecd602 100644 --- a/examples/1.9.x/console-cli/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/console-cli/examples/project/update-user-limit-policy.md @@ -1,4 +1,4 @@ ```bash appwrite project update-user-limit-policy \ - --total 1 + --total 0 ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-big-int-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-big-int-column.md index 491679969..9db00503c 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-big-int-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-big-int-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-big-int-column \ +appwrite tablesdb create-big-int-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-boolean-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-boolean-column.md index 07660633a..b51e564bf 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-boolean-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-boolean-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-boolean-column \ +appwrite tablesdb create-boolean-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-datetime-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-datetime-column.md index 3dac98375..23c4a1644 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-datetime-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-datetime-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-datetime-column \ +appwrite tablesdb create-datetime-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-email-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-email-column.md index 1f7aac87f..c516cdf47 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-email-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-email-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-email-column \ +appwrite tablesdb create-email-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-enum-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-enum-column.md index 1fffdc809..5a1011036 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-enum-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-enum-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-enum-column \ +appwrite tablesdb create-enum-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-failover.md b/examples/1.9.x/console-cli/examples/tablesdb/create-failover.md index dc5836237..ab8991887 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-failover.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-failover.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db create-failover \ +appwrite tablesdb create-failover \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-float-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-float-column.md index f8828d371..0f08402c1 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-float-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-float-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-float-column \ +appwrite tablesdb create-float-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-index.md b/examples/1.9.x/console-cli/examples/tablesdb/create-index.md index 2446ccf66..b246902a4 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-index.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-index.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-index \ +appwrite tablesdb create-index \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-integer-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-integer-column.md index a6634cfa8..59358765b 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-integer-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-integer-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-integer-column \ +appwrite tablesdb create-integer-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-ip-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-ip-column.md index 51e54769b..b304a5d4c 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-ip-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-ip-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-ip-column \ +appwrite tablesdb create-ip-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-line-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-line-column.md index 9b7607b12..86d8d94a9 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-line-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-line-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-line-column \ +appwrite tablesdb create-line-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-longtext-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-longtext-column.md index c24530d25..057760592 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-longtext-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-longtext-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-longtext-column \ +appwrite tablesdb create-longtext-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-mediumtext-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-mediumtext-column.md index db1aca5e2..1c892f616 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-mediumtext-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-mediumtext-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-mediumtext-column \ +appwrite tablesdb create-mediumtext-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-migration.md b/examples/1.9.x/console-cli/examples/tablesdb/create-migration.md index 9319ff271..266c5abf3 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-migration.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-migration.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-migration \ +appwrite tablesdb create-migration \ --database-id \ --specification s-1vcpu-1gb ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-operations.md b/examples/1.9.x/console-cli/examples/tablesdb/create-operations.md index d89fb8dc1..55d09b906 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-operations.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-operations.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db create-operations \ +appwrite tablesdb create-operations \ --transaction-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-point-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-point-column.md index 16260b117..53bada271 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-point-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-point-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-point-column \ +appwrite tablesdb create-point-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-polygon-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-polygon-column.md index 6103ed51b..981832e01 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-polygon-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-polygon-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-polygon-column \ +appwrite tablesdb create-polygon-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-relationship-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-relationship-column.md index 194e9c53c..2ffdbf718 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-relationship-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-relationship-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-relationship-column \ +appwrite tablesdb create-relationship-column \ --database-id \ --table-id \ --related-table-id \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-row.md b/examples/1.9.x/console-cli/examples/tablesdb/create-row.md index 343d3bcc9..58002727f 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-row.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-row.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-row \ +appwrite tablesdb create-row \ --database-id \ --table-id \ --row-id \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-rows.md b/examples/1.9.x/console-cli/examples/tablesdb/create-rows.md index 13e372acd..686b3ec3e 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-rows.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-rows.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-rows \ +appwrite tablesdb create-rows \ --database-id \ --table-id \ --rows one two three diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-string-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-string-column.md index 02da4b221..75cdcab40 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-string-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-string-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-string-column \ +appwrite tablesdb create-string-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-table.md b/examples/1.9.x/console-cli/examples/tablesdb/create-table.md index aaabdfc25..e2671f92e 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-table.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-table.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-table \ +appwrite tablesdb create-table \ --database-id \ --table-id \ --name diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-text-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-text-column.md index 7fa1ea5f7..7c0fff24e 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-text-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-text-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-text-column \ +appwrite tablesdb create-text-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-transaction.md b/examples/1.9.x/console-cli/examples/tablesdb/create-transaction.md index b1013a1f3..149932ed0 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-transaction.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-transaction.md @@ -1,3 +1,3 @@ ```bash -appwrite tables-db create-transaction +appwrite tablesdb create-transaction ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-url-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-url-column.md index fa167f56f..61b04d1ae 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-url-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-url-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-url-column \ +appwrite tablesdb create-url-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create-varchar-column.md b/examples/1.9.x/console-cli/examples/tablesdb/create-varchar-column.md index 760c87041..db6952394 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create-varchar-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create-varchar-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create-varchar-column \ +appwrite tablesdb create-varchar-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/create.md b/examples/1.9.x/console-cli/examples/tablesdb/create.md index ea3ddfcc0..caf852cdc 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/create.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/create.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db create \ +appwrite tablesdb create \ --database-id \ --name ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/decrement-row-column.md b/examples/1.9.x/console-cli/examples/tablesdb/decrement-row-column.md index df9c48608..f910e7fd8 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/decrement-row-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/decrement-row-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db decrement-row-column \ +appwrite tablesdb decrement-row-column \ --database-id \ --table-id \ --row-id \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-column.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-column.md index bee77154a..2e8779491 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-column \ +appwrite tablesdb delete-column \ --database-id \ --table-id \ --key '' diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-index.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-index.md index b84786691..04df6e629 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-index.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-index.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-index \ +appwrite tablesdb delete-index \ --database-id \ --table-id \ --key '' diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-migration.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-migration.md index 9e2421809..66c312965 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-migration.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-migration.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-migration \ +appwrite tablesdb delete-migration \ --database-id \ --migration-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-row.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-row.md index f7a58ca6d..9a9e4359a 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-row.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-row.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-row \ +appwrite tablesdb delete-row \ --database-id \ --table-id \ --row-id diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-rows.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-rows.md index dd8e9a616..26c23e6a4 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-rows.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-rows.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-rows \ +appwrite tablesdb delete-rows \ --database-id \ --table-id \ --limit 25 diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-table.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-table.md index 39429f07b..7ba2e9e0d 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-table.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-table.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db delete-table \ +appwrite tablesdb delete-table \ --database-id \ --table-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete-transaction.md b/examples/1.9.x/console-cli/examples/tablesdb/delete-transaction.md index d807c91e9..670f2143a 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete-transaction.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete-transaction.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db delete-transaction \ +appwrite tablesdb delete-transaction \ --transaction-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/delete.md b/examples/1.9.x/console-cli/examples/tablesdb/delete.md index 009008738..ff360ec7a 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/delete.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/delete.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db delete \ +appwrite tablesdb delete \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-column.md b/examples/1.9.x/console-cli/examples/tablesdb/get-column.md index 29f4689aa..a7b462680 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db get-column \ +appwrite tablesdb get-column \ --database-id \ --table-id \ --key '' diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-index.md b/examples/1.9.x/console-cli/examples/tablesdb/get-index.md index 44073c021..515f6403c 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-index.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-index.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db get-index \ +appwrite tablesdb get-index \ --database-id \ --table-id \ --key '' diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-migration.md b/examples/1.9.x/console-cli/examples/tablesdb/get-migration.md index f669dcc13..ddaeb5986 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-migration.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-migration.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db get-migration \ +appwrite tablesdb get-migration \ --database-id \ --migration-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-replicas.md b/examples/1.9.x/console-cli/examples/tablesdb/get-replicas.md index 19bffa682..acc5488a0 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-replicas.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-replicas.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db get-replicas \ +appwrite tablesdb get-replicas \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-row.md b/examples/1.9.x/console-cli/examples/tablesdb/get-row.md index e8ccf4bd3..b15be4d97 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-row.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-row.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db get-row \ +appwrite tablesdb get-row \ --database-id \ --table-id \ --row-id diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-status.md b/examples/1.9.x/console-cli/examples/tablesdb/get-status.md index c5ed9a77c..c32d69235 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-status.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-status.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db get-status \ +appwrite tablesdb get-status \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-table.md b/examples/1.9.x/console-cli/examples/tablesdb/get-table.md index a9be557c9..5fcc75e66 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-table.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-table.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db get-table \ +appwrite tablesdb get-table \ --database-id \ --table-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get-transaction.md b/examples/1.9.x/console-cli/examples/tablesdb/get-transaction.md index 74f2ffdc5..42fb455a8 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get-transaction.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get-transaction.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db get-transaction \ +appwrite tablesdb get-transaction \ --transaction-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/get.md b/examples/1.9.x/console-cli/examples/tablesdb/get.md index 1451a3bf1..524ddf212 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/get.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/get.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db get \ +appwrite tablesdb get \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/increment-row-column.md b/examples/1.9.x/console-cli/examples/tablesdb/increment-row-column.md index 750a6253c..2f3d0fd41 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/increment-row-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/increment-row-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db increment-row-column \ +appwrite tablesdb increment-row-column \ --database-id \ --table-id \ --row-id \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-columns.md b/examples/1.9.x/console-cli/examples/tablesdb/list-columns.md index 44fc89371..c075e675a 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-columns.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-columns.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db list-columns \ +appwrite tablesdb list-columns \ --database-id \ --table-id \ --limit 25 diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-indexes.md b/examples/1.9.x/console-cli/examples/tablesdb/list-indexes.md index c78ad6f15..4be3e4d75 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-indexes.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-indexes.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db list-indexes \ +appwrite tablesdb list-indexes \ --database-id \ --table-id \ --limit 25 diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-migrations.md b/examples/1.9.x/console-cli/examples/tablesdb/list-migrations.md index 36bf6c179..8659e6ac5 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-migrations.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-migrations.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db list-migrations \ +appwrite tablesdb list-migrations \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-operations.md b/examples/1.9.x/console-cli/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..3f5a00f4f --- /dev/null +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-operations.md @@ -0,0 +1,4 @@ +```bash +appwrite tablesdb list-operations \ + --database-id +``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-rows.md b/examples/1.9.x/console-cli/examples/tablesdb/list-rows.md index 5a47f9fbc..95a0498d2 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-rows.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-rows.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db list-rows \ +appwrite tablesdb list-rows \ --database-id \ --table-id \ --limit 25 diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-specifications.md b/examples/1.9.x/console-cli/examples/tablesdb/list-specifications.md index 029dd35f6..70ed43945 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-specifications.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-specifications.md @@ -1,3 +1,3 @@ ```bash -appwrite tables-db list-specifications +appwrite tablesdb list-specifications ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-tables.md b/examples/1.9.x/console-cli/examples/tablesdb/list-tables.md index b7ff42092..a342713f0 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-tables.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-tables.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db list-tables \ +appwrite tablesdb list-tables \ --database-id \ --limit 25 ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list-transactions.md b/examples/1.9.x/console-cli/examples/tablesdb/list-transactions.md index 9554db6b4..58802bf7b 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list-transactions.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list-transactions.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db list-transactions \ +appwrite tablesdb list-transactions \ --limit 25 ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/list.md b/examples/1.9.x/console-cli/examples/tablesdb/list.md index c3e86e0f4..97db8a14b 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/list.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/list.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db list \ +appwrite tablesdb list \ --limit 25 ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-big-int-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-big-int-column.md index 267ec29d0..62d496c17 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-big-int-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-big-int-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-big-int-column \ +appwrite tablesdb update-big-int-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-boolean-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-boolean-column.md index efcdb41eb..3d21b6616 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-boolean-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-boolean-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-boolean-column \ +appwrite tablesdb update-boolean-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-datetime-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-datetime-column.md index a9926b459..b4483e224 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-datetime-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-datetime-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-datetime-column \ +appwrite tablesdb update-datetime-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-email-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-email-column.md index f4d07a30a..c8a38cee8 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-email-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-email-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-email-column \ +appwrite tablesdb update-email-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-enum-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-enum-column.md index 33571baeb..987b230b3 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-enum-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-enum-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-enum-column \ +appwrite tablesdb update-enum-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-float-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-float-column.md index 805feb097..b9b75138f 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-float-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-float-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-float-column \ +appwrite tablesdb update-float-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-integer-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-integer-column.md index 3cd84bcca..6d169a4d6 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-integer-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-integer-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-integer-column \ +appwrite tablesdb update-integer-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-ip-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-ip-column.md index b045fac26..f23914f6d 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-ip-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-ip-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-ip-column \ +appwrite tablesdb update-ip-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-line-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-line-column.md index 0273d18d3..8a7042ba4 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-line-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-line-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-line-column \ +appwrite tablesdb update-line-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-longtext-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-longtext-column.md index 5c37b21a8..99e02f2d7 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-longtext-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-longtext-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-longtext-column \ +appwrite tablesdb update-longtext-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-mediumtext-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-mediumtext-column.md index ab605d912..2fb547bd7 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-mediumtext-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-mediumtext-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-mediumtext-column \ +appwrite tablesdb update-mediumtext-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-point-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-point-column.md index 01516c2aa..df7201c72 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-point-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-point-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-point-column \ +appwrite tablesdb update-point-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-polygon-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-polygon-column.md index 3758834a0..2f5823975 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-polygon-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-polygon-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-polygon-column \ +appwrite tablesdb update-polygon-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-relationship-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-relationship-column.md index 63dba1dd5..e68bd4baf 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-relationship-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-relationship-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-relationship-column \ +appwrite tablesdb update-relationship-column \ --database-id \ --table-id \ --key '' diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-row.md b/examples/1.9.x/console-cli/examples/tablesdb/update-row.md index 416d495ab..0865548cf 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-row.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-row.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-row \ +appwrite tablesdb update-row \ --database-id \ --table-id \ --row-id diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-rows.md b/examples/1.9.x/console-cli/examples/tablesdb/update-rows.md index 7e46f6182..79ba0e03c 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-rows.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-rows.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-rows \ +appwrite tablesdb update-rows \ --database-id \ --table-id \ --limit 25 diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-string-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-string-column.md index 6fd3cf295..d0e75389b 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-string-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-string-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-string-column \ +appwrite tablesdb update-string-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-table.md b/examples/1.9.x/console-cli/examples/tablesdb/update-table.md index c260e4c8e..df24cbc03 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-table.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-table.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-table \ +appwrite tablesdb update-table \ --database-id \ --table-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-text-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-text-column.md index 608ce2dfd..561a5ec00 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-text-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-text-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-text-column \ +appwrite tablesdb update-text-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-transaction.md b/examples/1.9.x/console-cli/examples/tablesdb/update-transaction.md index 295ec8821..119b2a11d 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-transaction.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-transaction.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db update-transaction \ +appwrite tablesdb update-transaction \ --transaction-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-url-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-url-column.md index 4a4c47b09..827923584 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-url-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-url-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-url-column \ +appwrite tablesdb update-url-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update-varchar-column.md b/examples/1.9.x/console-cli/examples/tablesdb/update-varchar-column.md index fdcfd83b9..8a5e4885a 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update-varchar-column.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update-varchar-column.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db update-varchar-column \ +appwrite tablesdb update-varchar-column \ --database-id \ --table-id \ --key '' \ diff --git a/examples/1.9.x/console-cli/examples/tablesdb/update.md b/examples/1.9.x/console-cli/examples/tablesdb/update.md index 32cbef04f..5ce695ab3 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/update.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/update.md @@ -1,4 +1,4 @@ ```bash -appwrite tables-db update \ +appwrite tablesdb update \ --database-id ``` diff --git a/examples/1.9.x/console-cli/examples/tablesdb/upsert-row.md b/examples/1.9.x/console-cli/examples/tablesdb/upsert-row.md index 298f592a3..39c0ab6ee 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/upsert-row.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/upsert-row.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db upsert-row \ +appwrite tablesdb upsert-row \ --database-id \ --table-id \ --row-id diff --git a/examples/1.9.x/console-cli/examples/tablesdb/upsert-rows.md b/examples/1.9.x/console-cli/examples/tablesdb/upsert-rows.md index e0ff17955..dadb54fd3 100644 --- a/examples/1.9.x/console-cli/examples/tablesdb/upsert-rows.md +++ b/examples/1.9.x/console-cli/examples/tablesdb/upsert-rows.md @@ -1,5 +1,5 @@ ```bash -appwrite tables-db upsert-rows \ +appwrite tablesdb upsert-rows \ --database-id \ --table-id \ --rows one two three diff --git a/examples/1.9.x/console-cli/examples/vcs/list-namespaces.md b/examples/1.9.x/console-cli/examples/vcs/list-namespaces.md new file mode 100644 index 000000000..ff4adaac3 --- /dev/null +++ b/examples/1.9.x/console-cli/examples/vcs/list-namespaces.md @@ -0,0 +1,5 @@ +```bash +appwrite vcs list-namespaces \ + --installation-id \ + --limit 25 +``` diff --git a/examples/1.9.x/console-web/examples/activities/list-events.md b/examples/1.9.x/console-web/examples/activities/list-events.md index 558f5b877..eaca3daee 100644 --- a/examples/1.9.x/console-web/examples/activities/list-events.md +++ b/examples/1.9.x/console-web/examples/activities/list-events.md @@ -8,7 +8,7 @@ const client = new Client() const activities = new Activities(client); const result = await activities.listEvents({ - queries: '' // optional + queries: [] // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/apps/create-installation-token.md b/examples/1.9.x/console-web/examples/apps/create-installation-token.md new file mode 100644 index 000000000..bcaca453f --- /dev/null +++ b/examples/1.9.x/console-web/examples/apps/create-installation-token.md @@ -0,0 +1,16 @@ +```javascript +import { Client, Apps } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const apps = new Apps(client); + +const result = await apps.createInstallationToken({ + appId: '', + installationId: '' +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/apps/delete-installation.md b/examples/1.9.x/console-web/examples/apps/delete-installation.md new file mode 100644 index 000000000..c57931f7a --- /dev/null +++ b/examples/1.9.x/console-web/examples/apps/delete-installation.md @@ -0,0 +1,16 @@ +```javascript +import { Client, Apps } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const apps = new Apps(client); + +const result = await apps.deleteInstallation({ + appId: '', + installationId: '' +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/apps/get-installation.md b/examples/1.9.x/console-web/examples/apps/get-installation.md new file mode 100644 index 000000000..5043676b1 --- /dev/null +++ b/examples/1.9.x/console-web/examples/apps/get-installation.md @@ -0,0 +1,16 @@ +```javascript +import { Client, Apps } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const apps = new Apps(client); + +const result = await apps.getInstallation({ + appId: '', + installationId: '' +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/apps/list-installations.md b/examples/1.9.x/console-web/examples/apps/list-installations.md new file mode 100644 index 000000000..cc0805a86 --- /dev/null +++ b/examples/1.9.x/console-web/examples/apps/list-installations.md @@ -0,0 +1,17 @@ +```javascript +import { Client, Apps } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const apps = new Apps(client); + +const result = await apps.listInstallations({ + appId: '', + queries: [], // optional + total: false // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/documentsdb/create.md b/examples/1.9.x/console-web/examples/documentsdb/create.md index 461af3e9e..a397d8b3d 100644 --- a/examples/1.9.x/console-web/examples/documentsdb/create.md +++ b/examples/1.9.x/console-web/examples/documentsdb/create.md @@ -12,7 +12,8 @@ const result = await documentsDB.create({ name: '', enabled: false, // optional specification: 'serverless', // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/documentsdb/list-operations.md b/examples/1.9.x/console-web/examples/documentsdb/list-operations.md new file mode 100644 index 000000000..c78d2f57e --- /dev/null +++ b/examples/1.9.x/console-web/examples/documentsdb/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, DocumentsDB } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const documentsDB = new DocumentsDB(client); + +const result = await documentsDB.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/documentsdb/update.md b/examples/1.9.x/console-web/examples/documentsdb/update.md index be18da8f5..9ff70bb41 100644 --- a/examples/1.9.x/console-web/examples/documentsdb/update.md +++ b/examples/1.9.x/console-web/examples/documentsdb/update.md @@ -11,7 +11,9 @@ const result = await documentsDB.update({ databaseId: '', name: '', enabled: false, // optional - replicas: 0 // optional + specification: 'serverless', // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/mongo/create.md b/examples/1.9.x/console-web/examples/mongo/create.md index a701bda81..7863da838 100644 --- a/examples/1.9.x/console-web/examples/mongo/create.md +++ b/examples/1.9.x/console-web/examples/mongo/create.md @@ -22,8 +22,7 @@ const result = await mongo.create({ pitrRetentionDays: 1, // optional storageAutoscaling: false, // optional storageAutoscalingThresholdPercent: 50, // optional - storageAutoscalingMaxGb: 0, // optional - api: 'tablesdb' // optional + storageAutoscalingMaxGb: 0 // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/mongo/list-operations.md b/examples/1.9.x/console-web/examples/mongo/list-operations.md new file mode 100644 index 000000000..edd1a7c98 --- /dev/null +++ b/examples/1.9.x/console-web/examples/mongo/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, Mongo } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const mongo = new Mongo(client); + +const result = await mongo.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/mysql/create.md b/examples/1.9.x/console-web/examples/mysql/create.md index 408c78c35..9a7e5afbb 100644 --- a/examples/1.9.x/console-web/examples/mysql/create.md +++ b/examples/1.9.x/console-web/examples/mysql/create.md @@ -22,8 +22,7 @@ const result = await mysql.create({ pitrRetentionDays: 1, // optional storageAutoscaling: false, // optional storageAutoscalingThresholdPercent: 50, // optional - storageAutoscalingMaxGb: 0, // optional - api: 'tablesdb' // optional + storageAutoscalingMaxGb: 0 // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/mysql/list-operations.md b/examples/1.9.x/console-web/examples/mysql/list-operations.md new file mode 100644 index 000000000..bcb3765b0 --- /dev/null +++ b/examples/1.9.x/console-web/examples/mysql/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, Mysql } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const mysql = new Mysql(client); + +const result = await mysql.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/postgresql/create.md b/examples/1.9.x/console-web/examples/postgresql/create.md index ed60c77c8..45e36030c 100644 --- a/examples/1.9.x/console-web/examples/postgresql/create.md +++ b/examples/1.9.x/console-web/examples/postgresql/create.md @@ -22,8 +22,7 @@ const result = await postgresql.create({ pitrRetentionDays: 1, // optional storageAutoscaling: false, // optional storageAutoscalingThresholdPercent: 50, // optional - storageAutoscalingMaxGb: 0, // optional - api: 'tablesdb' // optional + storageAutoscalingMaxGb: 0 // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/postgresql/list-operations.md b/examples/1.9.x/console-web/examples/postgresql/list-operations.md new file mode 100644 index 000000000..e6840e4f4 --- /dev/null +++ b/examples/1.9.x/console-web/examples/postgresql/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, Postgresql } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const postgresql = new Postgresql(client); + +const result = await postgresql.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/project/update-session-duration-policy.md b/examples/1.9.x/console-web/examples/project/update-session-duration-policy.md index b5c9852aa..b6a71ae87 100644 --- a/examples/1.9.x/console-web/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/console-web/examples/project/update-session-duration-policy.md @@ -8,7 +8,7 @@ const client = new Client() const project = new Project(client); const result = await project.updateSessionDurationPolicy({ - duration: 5 + duration: 60 }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/project/update-user-limit-policy.md b/examples/1.9.x/console-web/examples/project/update-user-limit-policy.md index c85620a41..ed8769eb2 100644 --- a/examples/1.9.x/console-web/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/console-web/examples/project/update-user-limit-policy.md @@ -8,7 +8,7 @@ const client = new Client() const project = new Project(client); const result = await project.updateUserLimitPolicy({ - total: 1 + total: 0 }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/storage/create-file.md b/examples/1.9.x/console-web/examples/storage/create-file.md index ddf29a000..ad7814a6e 100644 --- a/examples/1.9.x/console-web/examples/storage/create-file.md +++ b/examples/1.9.x/console-web/examples/storage/create-file.md @@ -11,7 +11,8 @@ const result = await storage.createFile({ bucketId: '', fileId: '', file: document.getElementById('uploader').files[0], - permissions: [Permission.read(Role.any())] // optional + permissions: [Permission.read(Role.any())], // optional + folder: '' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/tablesdb/create.md b/examples/1.9.x/console-web/examples/tablesdb/create.md index 01c2a5a60..e7faf04ad 100644 --- a/examples/1.9.x/console-web/examples/tablesdb/create.md +++ b/examples/1.9.x/console-web/examples/tablesdb/create.md @@ -12,7 +12,8 @@ const result = await tablesDB.create({ name: '', enabled: false, // optional specification: 'serverless', // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/tablesdb/list-operations.md b/examples/1.9.x/console-web/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..20e282d2c --- /dev/null +++ b/examples/1.9.x/console-web/examples/tablesdb/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, TablesDB } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const tablesDB = new TablesDB(client); + +const result = await tablesDB.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/tablesdb/update.md b/examples/1.9.x/console-web/examples/tablesdb/update.md index bf394a7fb..f7467075b 100644 --- a/examples/1.9.x/console-web/examples/tablesdb/update.md +++ b/examples/1.9.x/console-web/examples/tablesdb/update.md @@ -11,7 +11,9 @@ const result = await tablesDB.update({ databaseId: '', name: '', // optional enabled: false, // optional - replicas: 0 // optional + specification: 'serverless', // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/vcs/create-repository.md b/examples/1.9.x/console-web/examples/vcs/create-repository.md index a64eef87f..8a02e5229 100644 --- a/examples/1.9.x/console-web/examples/vcs/create-repository.md +++ b/examples/1.9.x/console-web/examples/vcs/create-repository.md @@ -10,7 +10,8 @@ const vcs = new Vcs(client); const result = await vcs.createRepository({ installationId: '', name: '', - xprivate: false + xprivate: false, + providerNamespace: '' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/vcs/list-namespaces.md b/examples/1.9.x/console-web/examples/vcs/list-namespaces.md new file mode 100644 index 000000000..61a155d8e --- /dev/null +++ b/examples/1.9.x/console-web/examples/vcs/list-namespaces.md @@ -0,0 +1,17 @@ +```javascript +import { Client, Vcs } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const vcs = new Vcs(client); + +const result = await vcs.listNamespaces({ + installationId: '', + search: '', // optional + queries: [] // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/vectorsdb/create.md b/examples/1.9.x/console-web/examples/vectorsdb/create.md index c7198a388..e10365e82 100644 --- a/examples/1.9.x/console-web/examples/vectorsdb/create.md +++ b/examples/1.9.x/console-web/examples/vectorsdb/create.md @@ -12,7 +12,8 @@ const result = await vectorsDB.create({ name: '', enabled: false, // optional specification: 'serverless', // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/vectorsdb/list-operations.md b/examples/1.9.x/console-web/examples/vectorsdb/list-operations.md new file mode 100644 index 000000000..9b1d628d5 --- /dev/null +++ b/examples/1.9.x/console-web/examples/vectorsdb/list-operations.md @@ -0,0 +1,18 @@ +```javascript +import { Client, VectorsDB } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const vectorsDB = new VectorsDB(client); + +const result = await vectorsDB.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/vectorsdb/update.md b/examples/1.9.x/console-web/examples/vectorsdb/update.md index c85b0c5cc..fd375177e 100644 --- a/examples/1.9.x/console-web/examples/vectorsdb/update.md +++ b/examples/1.9.x/console-web/examples/vectorsdb/update.md @@ -11,7 +11,9 @@ const result = await vectorsDB.update({ databaseId: '', name: '', enabled: false, // optional - replicas: 0 // optional + specification: 'serverless', // optional + replicas: 0, // optional + syncMode: 'async' // optional }); console.log(result); diff --git a/examples/1.9.x/console-web/examples/waf/create-challenge-rule.md b/examples/1.9.x/console-web/examples/waf/create-challenge-rule.md new file mode 100644 index 000000000..d183f84f9 --- /dev/null +++ b/examples/1.9.x/console-web/examples/waf/create-challenge-rule.md @@ -0,0 +1,25 @@ +```javascript +import { Client, Waf } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const waf = new Waf(client); + +const result = await waf.createChallengeRule({ + ruleId: '', + resourceType: 'api', + name: '', + resourceId: '', // optional + description: '', // optional + challengeType: 'compute', // optional + priority: -100000, // optional + enabled: false, // optional + conditions: '', // optional + difficulty: 1, // optional + ttl: 900 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/waf/create-rate-limit-rule.md b/examples/1.9.x/console-web/examples/waf/create-rate-limit-rule.md index ede249e1b..53a50fccd 100644 --- a/examples/1.9.x/console-web/examples/waf/create-rate-limit-rule.md +++ b/examples/1.9.x/console-web/examples/waf/create-rate-limit-rule.md @@ -15,6 +15,7 @@ const result = await waf.createRateLimitRule({ interval: 1, resourceId: '', // optional description: '', // optional + key: 'ip', // optional priority: -100000, // optional enabled: false, // optional conditions: '' // optional diff --git a/examples/1.9.x/console-web/examples/waf/update-challenge-rule.md b/examples/1.9.x/console-web/examples/waf/update-challenge-rule.md new file mode 100644 index 000000000..07bb6867e --- /dev/null +++ b/examples/1.9.x/console-web/examples/waf/update-challenge-rule.md @@ -0,0 +1,25 @@ +```javascript +import { Client, Waf } from "@appwrite.io/console"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const waf = new Waf(client); + +const result = await waf.updateChallengeRule({ + ruleId: '', + resourceType: 'api', // optional + resourceId: '', // optional + name: '', // optional + description: '', // optional + challengeType: 'compute', // optional + priority: -100000, // optional + enabled: false, // optional + conditions: '', // optional + difficulty: 1, // optional + ttl: 900 // optional +}); + +console.log(result); +``` diff --git a/examples/1.9.x/console-web/examples/waf/update-rate-limit-rule.md b/examples/1.9.x/console-web/examples/waf/update-rate-limit-rule.md index 3444a022b..e979510a3 100644 --- a/examples/1.9.x/console-web/examples/waf/update-rate-limit-rule.md +++ b/examples/1.9.x/console-web/examples/waf/update-rate-limit-rule.md @@ -15,6 +15,7 @@ const result = await waf.updateRateLimitRule({ description: '', // optional limit: 1, // optional interval: 1, // optional + key: 'ip', // optional priority: -100000, // optional enabled: false, // optional conditions: '' // optional diff --git a/examples/1.9.x/server-dart/examples/activities/list-events.md b/examples/1.9.x/server-dart/examples/activities/list-events.md index 9daf0d584..43a90dbef 100644 --- a/examples/1.9.x/server-dart/examples/activities/list-events.md +++ b/examples/1.9.x/server-dart/examples/activities/list-events.md @@ -9,6 +9,6 @@ Client client = Client() Activities activities = Activities(client); ActivityEventList result = await activities.listEvents( - queries: '', // (optional) + queries: [], // (optional) ); ``` diff --git a/examples/1.9.x/server-dart/examples/apps/create-installation-token.md b/examples/1.9.x/server-dart/examples/apps/create-installation-token.md index 0d41a4f8e..3de5f329c 100644 --- a/examples/1.9.x/server-dart/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-dart/examples/apps/create-installation-token.md @@ -4,7 +4,7 @@ import 'package:dart_appwrite/dart_appwrite.dart'; Client client = Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with Apps apps = Apps(client); diff --git a/examples/1.9.x/server-dart/examples/apps/delete-installation.md b/examples/1.9.x/server-dart/examples/apps/delete-installation.md new file mode 100644 index 000000000..38cc4b6d6 --- /dev/null +++ b/examples/1.9.x/server-dart/examples/apps/delete-installation.md @@ -0,0 +1,15 @@ +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setSession(''); // The user session to authenticate with + +Apps apps = Apps(client); + +await apps.deleteInstallation( + appId: '', + installationId: '', +); +``` diff --git a/examples/1.9.x/server-dart/examples/apps/get-installation.md b/examples/1.9.x/server-dart/examples/apps/get-installation.md index fa31e2591..7f9fbd5c1 100644 --- a/examples/1.9.x/server-dart/examples/apps/get-installation.md +++ b/examples/1.9.x/server-dart/examples/apps/get-installation.md @@ -4,7 +4,7 @@ import 'package:dart_appwrite/dart_appwrite.dart'; Client client = Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with Apps apps = Apps(client); diff --git a/examples/1.9.x/server-dart/examples/apps/list-installations.md b/examples/1.9.x/server-dart/examples/apps/list-installations.md index b76c13d90..fd2cbdaaf 100644 --- a/examples/1.9.x/server-dart/examples/apps/list-installations.md +++ b/examples/1.9.x/server-dart/examples/apps/list-installations.md @@ -4,7 +4,7 @@ import 'package:dart_appwrite/dart_appwrite.dart'; Client client = Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with Apps apps = Apps(client); diff --git a/examples/1.9.x/server-dart/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-dart/examples/project/update-session-duration-policy.md index 5b1022949..b5a0e4cf4 100644 --- a/examples/1.9.x/server-dart/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-dart/examples/project/update-session-duration-policy.md @@ -9,6 +9,6 @@ Client client = Client() Project project = Project(client); Project result = await project.updateSessionDurationPolicy( - duration: 5, + duration: 60, ); ``` diff --git a/examples/1.9.x/server-dart/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-dart/examples/project/update-user-limit-policy.md index b423abbed..cbbdeb42f 100644 --- a/examples/1.9.x/server-dart/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-dart/examples/project/update-user-limit-policy.md @@ -9,6 +9,6 @@ Client client = Client() Project project = Project(client); Project result = await project.updateUserLimitPolicy( - total: 1, + total: 0, ); ``` diff --git a/examples/1.9.x/server-dart/examples/storage/create-file.md b/examples/1.9.x/server-dart/examples/storage/create-file.md index fe16a41f1..3c9429f68 100644 --- a/examples/1.9.x/server-dart/examples/storage/create-file.md +++ b/examples/1.9.x/server-dart/examples/storage/create-file.md @@ -16,5 +16,6 @@ File result = await storage.createFile( fileId: '', file: InputFile(path: './path-to-files/image.jpg', filename: 'image.jpg'), permissions: [Permission.read(Role.any())], // (optional) + folder: '', // (optional) ); ``` diff --git a/examples/1.9.x/server-dart/examples/tablesdb/create.md b/examples/1.9.x/server-dart/examples/tablesdb/create.md index 939a3f99d..86f968fce 100644 --- a/examples/1.9.x/server-dart/examples/tablesdb/create.md +++ b/examples/1.9.x/server-dart/examples/tablesdb/create.md @@ -14,5 +14,6 @@ Database result = await tablesDB.create( enabled: false, // (optional) specification: 'serverless', // (optional) replicas: 0, // (optional) + syncMode: 'async', // (optional) ); ``` diff --git a/examples/1.9.x/server-dart/examples/tablesdb/list-operations.md b/examples/1.9.x/server-dart/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..df03de336 --- /dev/null +++ b/examples/1.9.x/server-dart/examples/tablesdb/list-operations.md @@ -0,0 +1,17 @@ +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +TablesDB tablesDB = TablesDB(client); + +DedicatedDatabaseOperationList result = await tablesDB.listOperations( + databaseId: '', + status: 'running', // (optional) + limit: 1, // (optional) + offset: 0, // (optional) +); +``` diff --git a/examples/1.9.x/server-dart/examples/tablesdb/update.md b/examples/1.9.x/server-dart/examples/tablesdb/update.md index cbe9908d5..6574bde3f 100644 --- a/examples/1.9.x/server-dart/examples/tablesdb/update.md +++ b/examples/1.9.x/server-dart/examples/tablesdb/update.md @@ -12,6 +12,8 @@ Database result = await tablesDB.update( databaseId: '', name: '', // (optional) enabled: false, // (optional) + specification: 'serverless', // (optional) replicas: 0, // (optional) + syncMode: 'async', // (optional) ); ``` diff --git a/examples/1.9.x/server-dotnet/examples/activities/list-events.md b/examples/1.9.x/server-dotnet/examples/activities/list-events.md index 817589b97..dc0ad42d4 100644 --- a/examples/1.9.x/server-dotnet/examples/activities/list-events.md +++ b/examples/1.9.x/server-dotnet/examples/activities/list-events.md @@ -11,5 +11,5 @@ Client client = new Client() Activities activities = new Activities(client); ActivityEventList result = await activities.ListEvents( - queries: "" // optional + queries: new List() // optional );``` diff --git a/examples/1.9.x/server-dotnet/examples/apps/create-installation-token.md b/examples/1.9.x/server-dotnet/examples/apps/create-installation-token.md index 9205d2890..c28cc6388 100644 --- a/examples/1.9.x/server-dotnet/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-dotnet/examples/apps/create-installation-token.md @@ -6,7 +6,7 @@ using Appwrite.Services; Client client = new Client() .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .SetProject("") // Your project ID - .SetKey(""); // Your secret API key + .SetSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-dotnet/examples/apps/delete-installation.md b/examples/1.9.x/server-dotnet/examples/apps/delete-installation.md new file mode 100644 index 000000000..81545045f --- /dev/null +++ b/examples/1.9.x/server-dotnet/examples/apps/delete-installation.md @@ -0,0 +1,16 @@ +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetSession(""); // The user session to authenticate with + +Apps apps = new Apps(client); + +await apps.DeleteInstallation( + appId: "", + installationId: "" +);``` diff --git a/examples/1.9.x/server-dotnet/examples/apps/get-installation.md b/examples/1.9.x/server-dotnet/examples/apps/get-installation.md index 1a353ec11..4102d0940 100644 --- a/examples/1.9.x/server-dotnet/examples/apps/get-installation.md +++ b/examples/1.9.x/server-dotnet/examples/apps/get-installation.md @@ -6,7 +6,7 @@ using Appwrite.Services; Client client = new Client() .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .SetProject("") // Your project ID - .SetKey(""); // Your secret API key + .SetSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-dotnet/examples/apps/list-installations.md b/examples/1.9.x/server-dotnet/examples/apps/list-installations.md index fbb59ab0a..6b800561c 100644 --- a/examples/1.9.x/server-dotnet/examples/apps/list-installations.md +++ b/examples/1.9.x/server-dotnet/examples/apps/list-installations.md @@ -6,7 +6,7 @@ using Appwrite.Services; Client client = new Client() .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .SetProject("") // Your project ID - .SetKey(""); // Your secret API key + .SetSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-dotnet/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-dotnet/examples/project/update-session-duration-policy.md index 347c9c9e3..bfe9a07e1 100644 --- a/examples/1.9.x/server-dotnet/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-dotnet/examples/project/update-session-duration-policy.md @@ -11,5 +11,5 @@ Client client = new Client() Project project = new Project(client); Project result = await project.UpdateSessionDurationPolicy( - duration: 5 + duration: 60 );``` diff --git a/examples/1.9.x/server-dotnet/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-dotnet/examples/project/update-user-limit-policy.md index 99dc74427..aea79aafe 100644 --- a/examples/1.9.x/server-dotnet/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-dotnet/examples/project/update-user-limit-policy.md @@ -11,5 +11,5 @@ Client client = new Client() Project project = new Project(client); Project result = await project.UpdateUserLimitPolicy( - total: 1 + total: 0 );``` diff --git a/examples/1.9.x/server-dotnet/examples/storage/create-file.md b/examples/1.9.x/server-dotnet/examples/storage/create-file.md index 356120e76..c471f2832 100644 --- a/examples/1.9.x/server-dotnet/examples/storage/create-file.md +++ b/examples/1.9.x/server-dotnet/examples/storage/create-file.md @@ -14,5 +14,6 @@ File result = await storage.CreateFile( bucketId: "", fileId: "", file: InputFile.FromPath("./path-to-files/image.jpg"), - permissions: new List { Permission.Read(Role.Any()) } // optional + permissions: new List { Permission.Read(Role.Any()) }, // optional + folder: "" // optional );``` diff --git a/examples/1.9.x/server-dotnet/examples/tablesdb/create.md b/examples/1.9.x/server-dotnet/examples/tablesdb/create.md index a5a42f361..717cca182 100644 --- a/examples/1.9.x/server-dotnet/examples/tablesdb/create.md +++ b/examples/1.9.x/server-dotnet/examples/tablesdb/create.md @@ -15,5 +15,6 @@ Database result = await tablesDB.Create( name: "", enabled: false, // optional specification: "serverless", // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: "async" // optional );``` diff --git a/examples/1.9.x/server-dotnet/examples/tablesdb/list-operations.md b/examples/1.9.x/server-dotnet/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..a4599ac5e --- /dev/null +++ b/examples/1.9.x/server-dotnet/examples/tablesdb/list-operations.md @@ -0,0 +1,18 @@ +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +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); + +DedicatedDatabaseOperationList result = await tablesDB.ListOperations( + databaseId: "", + status: "running", // optional + limit: 1, // optional + offset: 0 // optional +);``` diff --git a/examples/1.9.x/server-dotnet/examples/tablesdb/update.md b/examples/1.9.x/server-dotnet/examples/tablesdb/update.md index ebd66beca..132a16812 100644 --- a/examples/1.9.x/server-dotnet/examples/tablesdb/update.md +++ b/examples/1.9.x/server-dotnet/examples/tablesdb/update.md @@ -14,5 +14,7 @@ Database result = await tablesDB.Update( databaseId: "", name: "", // optional enabled: false, // optional - replicas: 0 // optional + specification: "serverless", // optional + replicas: 0, // optional + syncMode: "async" // optional );``` diff --git a/examples/1.9.x/server-go/examples/activities/list-events.md b/examples/1.9.x/server-go/examples/activities/list-events.md index 5ecb76650..0d21851f5 100644 --- a/examples/1.9.x/server-go/examples/activities/list-events.md +++ b/examples/1.9.x/server-go/examples/activities/list-events.md @@ -16,6 +16,6 @@ client := client.New( service := activities.New(client) response, error := service.ListEvents( - activities.WithListEventsQueries(""), + activities.WithListEventsQueries([]string{}), ) ``` diff --git a/examples/1.9.x/server-go/examples/apps/create-installation-token.md b/examples/1.9.x/server-go/examples/apps/create-installation-token.md index 7e109f38d..05a875610 100644 --- a/examples/1.9.x/server-go/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-go/examples/apps/create-installation-token.md @@ -10,7 +10,7 @@ import ( client := client.New( client.WithEndpoint("https://.cloud.appwrite.io/v1") client.WithProject("") - client.WithKey("") + client.WithSession("") ) service := apps.New(client) diff --git a/examples/1.9.x/server-go/examples/apps/delete-installation.md b/examples/1.9.x/server-go/examples/apps/delete-installation.md new file mode 100644 index 000000000..7488e1f15 --- /dev/null +++ b/examples/1.9.x/server-go/examples/apps/delete-installation.md @@ -0,0 +1,22 @@ +```go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/v6/client" + "github.com/appwrite/sdk-for-go/v6/apps" +) + +client := client.New( + client.WithEndpoint("https://.cloud.appwrite.io/v1") + client.WithProject("") + client.WithSession("") +) + +service := apps.New(client) + +response, error := service.DeleteInstallation( + "", + "", +) +``` diff --git a/examples/1.9.x/server-go/examples/apps/get-installation.md b/examples/1.9.x/server-go/examples/apps/get-installation.md index 42ec153d6..e164a3ac8 100644 --- a/examples/1.9.x/server-go/examples/apps/get-installation.md +++ b/examples/1.9.x/server-go/examples/apps/get-installation.md @@ -10,7 +10,7 @@ import ( client := client.New( client.WithEndpoint("https://.cloud.appwrite.io/v1") client.WithProject("") - client.WithKey("") + client.WithSession("") ) service := apps.New(client) diff --git a/examples/1.9.x/server-go/examples/apps/list-installations.md b/examples/1.9.x/server-go/examples/apps/list-installations.md index f74d585fd..4a84b9da8 100644 --- a/examples/1.9.x/server-go/examples/apps/list-installations.md +++ b/examples/1.9.x/server-go/examples/apps/list-installations.md @@ -10,7 +10,7 @@ import ( client := client.New( client.WithEndpoint("https://.cloud.appwrite.io/v1") client.WithProject("") - client.WithKey("") + client.WithSession("") ) service := apps.New(client) diff --git a/examples/1.9.x/server-go/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-go/examples/project/update-session-duration-policy.md index 775aedcda..29c63934a 100644 --- a/examples/1.9.x/server-go/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-go/examples/project/update-session-duration-policy.md @@ -16,6 +16,6 @@ client := client.New( service := project.New(client) response, error := service.UpdateSessionDurationPolicy( - 5, + 60, ) ``` diff --git a/examples/1.9.x/server-go/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-go/examples/project/update-user-limit-policy.md index 1dbc816b1..fa0b99596 100644 --- a/examples/1.9.x/server-go/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-go/examples/project/update-user-limit-policy.md @@ -16,6 +16,6 @@ client := client.New( service := project.New(client) response, error := service.UpdateUserLimitPolicy( - 1, + 0, ) ``` diff --git a/examples/1.9.x/server-go/examples/storage/create-file.md b/examples/1.9.x/server-go/examples/storage/create-file.md index c85a55710..ff5d35bb1 100644 --- a/examples/1.9.x/server-go/examples/storage/create-file.md +++ b/examples/1.9.x/server-go/examples/storage/create-file.md @@ -20,5 +20,6 @@ response, error := service.CreateFile( "", file.NewInputFile("/path/to/file.png", "file.png"), storage.WithCreateFilePermissions([]string{"read("any")"}), + storage.WithCreateFileFolder(""), ) ``` diff --git a/examples/1.9.x/server-go/examples/tablesdb/create.md b/examples/1.9.x/server-go/examples/tablesdb/create.md index b7ca541e1..bf022f6a1 100644 --- a/examples/1.9.x/server-go/examples/tablesdb/create.md +++ b/examples/1.9.x/server-go/examples/tablesdb/create.md @@ -21,5 +21,6 @@ response, error := service.Create( tablesdb.WithCreateEnabled(false), tablesdb.WithCreateSpecification("serverless"), tablesdb.WithCreateReplicas(0), + tablesdb.WithCreateSyncMode("async"), ) ``` diff --git a/examples/1.9.x/server-go/examples/tablesdb/list-operations.md b/examples/1.9.x/server-go/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..ffa578bb2 --- /dev/null +++ b/examples/1.9.x/server-go/examples/tablesdb/list-operations.md @@ -0,0 +1,24 @@ +```go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/v6/client" + "github.com/appwrite/sdk-for-go/v6/tablesdb" +) + +client := client.New( + client.WithEndpoint("https://.cloud.appwrite.io/v1") + client.WithProject("") + client.WithKey("") +) + +service := tablesdb.New(client) + +response, error := service.ListOperations( + "", + tablesdb.WithListOperationsStatus("running"), + tablesdb.WithListOperationsLimit(1), + tablesdb.WithListOperationsOffset(0), +) +``` diff --git a/examples/1.9.x/server-go/examples/tablesdb/update.md b/examples/1.9.x/server-go/examples/tablesdb/update.md index 249dffbf9..75d60174e 100644 --- a/examples/1.9.x/server-go/examples/tablesdb/update.md +++ b/examples/1.9.x/server-go/examples/tablesdb/update.md @@ -19,6 +19,8 @@ response, error := service.Update( "", tablesdb.WithUpdateName(""), tablesdb.WithUpdateEnabled(false), + tablesdb.WithUpdateSpecification("serverless"), tablesdb.WithUpdateReplicas(0), + tablesdb.WithUpdateSyncMode("async"), ) ``` diff --git a/examples/1.9.x/server-graphql/examples/activities/list-events.md b/examples/1.9.x/server-graphql/examples/activities/list-events.md index 782adc3dc..a36770de9 100644 --- a/examples/1.9.x/server-graphql/examples/activities/list-events.md +++ b/examples/1.9.x/server-graphql/examples/activities/list-events.md @@ -1,7 +1,7 @@ ```graphql query { activitiesListEvents( - queries: "" + queries: [] ) { total events { diff --git a/examples/1.9.x/server-graphql/examples/apps/delete-installation.md b/examples/1.9.x/server-graphql/examples/apps/delete-installation.md new file mode 100644 index 000000000..bd4f0a7e1 --- /dev/null +++ b/examples/1.9.x/server-graphql/examples/apps/delete-installation.md @@ -0,0 +1,18 @@ +```graphql +mutation { + appsDeleteInstallation( + appId: "", + installationId: "" + ) { + status + } +} +mutation { + appsDeleteInstallation( + appId: "", + installationId: "" + ) { + status + } +} +``` diff --git a/examples/1.9.x/server-graphql/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-graphql/examples/project/update-session-duration-policy.md index 21ff4a3f4..64e263d91 100644 --- a/examples/1.9.x/server-graphql/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-graphql/examples/project/update-session-duration-policy.md @@ -1,7 +1,7 @@ ```graphql mutation { projectUpdateSessionDurationPolicy( - duration: 5 + duration: 60 ) { _id _createdAt @@ -91,7 +91,7 @@ mutation { } mutation { projectUpdateSessionDurationPolicy( - duration: 5 + duration: 60 ) { _id _createdAt diff --git a/examples/1.9.x/server-graphql/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-graphql/examples/project/update-user-limit-policy.md index b60737d30..f01f4b3e8 100644 --- a/examples/1.9.x/server-graphql/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-graphql/examples/project/update-user-limit-policy.md @@ -1,7 +1,7 @@ ```graphql mutation { projectUpdateUserLimitPolicy( - total: 1 + total: 0 ) { _id _createdAt @@ -91,7 +91,7 @@ mutation { } mutation { projectUpdateUserLimitPolicy( - total: 1 + total: 0 ) { _id _createdAt diff --git a/examples/1.9.x/server-graphql/examples/storage/create-file.md b/examples/1.9.x/server-graphql/examples/storage/create-file.md index 58e0a56a2..db9f6e049 100644 --- a/examples/1.9.x/server-graphql/examples/storage/create-file.md +++ b/examples/1.9.x/server-graphql/examples/storage/create-file.md @@ -10,7 +10,7 @@ Content-Length: *Length of your entity body in bytes* --cec8e8123c05ba25 Content-Disposition: form-data; name="operations" -{ "query": "mutation { storageCreateFile(bucketId: $bucketId, fileId: $fileId, file: $file, permissions: $permissions) { id }" }, "variables": { "bucketId": "", "fileId": "", "file": null, "permissions": ["read("any")"] } } +{ "query": "mutation { storageCreateFile(bucketId: $bucketId, fileId: $fileId, file: $file, permissions: $permissions, folder: $folder) { id }" }, "variables": { "bucketId": "", "fileId": "", "file": null, "permissions": ["read("any")"], "folder": "" } } --cec8e8123c05ba25 Content-Disposition: form-data; name="map" @@ -28,7 +28,8 @@ mutation { bucketId: "", fileId: "", file: null, - permissions: ["read("any")"] + permissions: ["read("any")"], + folder: "" ) { _id bucketId @@ -36,6 +37,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/server-graphql/examples/storage/get-file.md b/examples/1.9.x/server-graphql/examples/storage/get-file.md index 2614d069f..3bbbfcb4b 100644 --- a/examples/1.9.x/server-graphql/examples/storage/get-file.md +++ b/examples/1.9.x/server-graphql/examples/storage/get-file.md @@ -10,6 +10,8 @@ query { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/server-graphql/examples/storage/list-files.md b/examples/1.9.x/server-graphql/examples/storage/list-files.md index 54bafc6ff..974b01a7f 100644 --- a/examples/1.9.x/server-graphql/examples/storage/list-files.md +++ b/examples/1.9.x/server-graphql/examples/storage/list-files.md @@ -14,6 +14,8 @@ query { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/server-graphql/examples/storage/update-file.md b/examples/1.9.x/server-graphql/examples/storage/update-file.md index 858be546a..cd6face95 100644 --- a/examples/1.9.x/server-graphql/examples/storage/update-file.md +++ b/examples/1.9.x/server-graphql/examples/storage/update-file.md @@ -12,6 +12,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal @@ -35,6 +37,8 @@ mutation { _updatedAt _permissions name + folder + key signature mimeType sizeOriginal diff --git a/examples/1.9.x/server-graphql/examples/tablesdb/create.md b/examples/1.9.x/server-graphql/examples/tablesdb/create.md index edb32e134..a08527d6d 100644 --- a/examples/1.9.x/server-graphql/examples/tablesdb/create.md +++ b/examples/1.9.x/server-graphql/examples/tablesdb/create.md @@ -5,7 +5,8 @@ mutation { name: "", enabled: false, specification: "serverless", - replicas: 0 + replicas: 0, + syncMode: "async" ) { _id name @@ -53,7 +54,8 @@ mutation { name: "", enabled: false, specification: "serverless", - replicas: 0 + replicas: 0, + syncMode: "async" ) { _id name diff --git a/examples/1.9.x/server-graphql/examples/tablesdb/get-replicas.md b/examples/1.9.x/server-graphql/examples/tablesdb/get-replicas.md index 2703da086..16dc8983d 100644 --- a/examples/1.9.x/server-graphql/examples/tablesdb/get-replicas.md +++ b/examples/1.9.x/server-graphql/examples/tablesdb/get-replicas.md @@ -5,6 +5,11 @@ query { ) { replicas syncMode + effectiveSyncMode + syncDegraded + syncAcknowledgements + syncStandbyCount + syncStateConfirmed members { _id role diff --git a/examples/1.9.x/server-graphql/examples/tablesdb/get-status.md b/examples/1.9.x/server-graphql/examples/tablesdb/get-status.md index d5154776d..13cdc82d6 100644 --- a/examples/1.9.x/server-graphql/examples/tablesdb/get-status.md +++ b/examples/1.9.x/server-graphql/examples/tablesdb/get-status.md @@ -12,6 +12,12 @@ query { current max } + syncMode + effectiveSyncMode + syncDegraded + syncAcknowledgements + syncStandbyCount + syncStateConfirmed replicas { index role diff --git a/examples/1.9.x/server-graphql/examples/tablesdb/list-operations.md b/examples/1.9.x/server-graphql/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..a93e030b8 --- /dev/null +++ b/examples/1.9.x/server-graphql/examples/tablesdb/list-operations.md @@ -0,0 +1,25 @@ +```graphql +query { + tablesDBListOperations( + databaseId: "", + status: "running", + limit: 1, + offset: 0 + ) { + total + operations { + _id + _createdAt + databaseId + type + status + attempts + requestedAt + startedAt + completedAt + errorCode + errorMessage + } + } +} +``` diff --git a/examples/1.9.x/server-graphql/examples/tablesdb/update.md b/examples/1.9.x/server-graphql/examples/tablesdb/update.md index b25a56d0b..568f5b153 100644 --- a/examples/1.9.x/server-graphql/examples/tablesdb/update.md +++ b/examples/1.9.x/server-graphql/examples/tablesdb/update.md @@ -4,7 +4,9 @@ mutation { databaseId: "", name: "", enabled: false, - replicas: 0 + specification: "serverless", + replicas: 0, + syncMode: "async" ) { _id name @@ -51,7 +53,9 @@ mutation { databaseId: "", name: "", enabled: false, - replicas: 0 + specification: "serverless", + replicas: 0, + syncMode: "async" ) { _id name diff --git a/examples/1.9.x/server-kotlin/java/activities/list-events.md b/examples/1.9.x/server-kotlin/java/activities/list-events.md index a6c5e3e9a..6d734b414 100644 --- a/examples/1.9.x/server-kotlin/java/activities/list-events.md +++ b/examples/1.9.x/server-kotlin/java/activities/list-events.md @@ -11,7 +11,7 @@ Client client = new Client() Activities activities = new Activities(client); activities.listEvents( - "", // queries (optional) + List.of(), // queries (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/java/apps/create-installation-token.md b/examples/1.9.x/server-kotlin/java/apps/create-installation-token.md index 8f3b8704a..62d9d3698 100644 --- a/examples/1.9.x/server-kotlin/java/apps/create-installation-token.md +++ b/examples/1.9.x/server-kotlin/java/apps/create-installation-token.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps; Client client = new Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey(""); // Your secret API key + .setSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-kotlin/java/apps/delete-installation.md b/examples/1.9.x/server-kotlin/java/apps/delete-installation.md new file mode 100644 index 000000000..7bf3fe1bf --- /dev/null +++ b/examples/1.9.x/server-kotlin/java/apps/delete-installation.md @@ -0,0 +1,26 @@ +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setSession(""); // The user session to authenticate with + +Apps apps = new Apps(client); + +apps.deleteInstallation( + "", // appId + "", // installationId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` diff --git a/examples/1.9.x/server-kotlin/java/apps/get-installation.md b/examples/1.9.x/server-kotlin/java/apps/get-installation.md index 3968844e2..0f50a106a 100644 --- a/examples/1.9.x/server-kotlin/java/apps/get-installation.md +++ b/examples/1.9.x/server-kotlin/java/apps/get-installation.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps; Client client = new Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey(""); // Your secret API key + .setSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-kotlin/java/apps/list-installations.md b/examples/1.9.x/server-kotlin/java/apps/list-installations.md index c0a632ab8..38f0ebda5 100644 --- a/examples/1.9.x/server-kotlin/java/apps/list-installations.md +++ b/examples/1.9.x/server-kotlin/java/apps/list-installations.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps; Client client = new Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey(""); // Your secret API key + .setSession(""); // The user session to authenticate with Apps apps = new Apps(client); diff --git a/examples/1.9.x/server-kotlin/java/project/update-session-duration-policy.md b/examples/1.9.x/server-kotlin/java/project/update-session-duration-policy.md index d181d8550..47c3f3be3 100644 --- a/examples/1.9.x/server-kotlin/java/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-kotlin/java/project/update-session-duration-policy.md @@ -11,7 +11,7 @@ Client client = new Client() Project project = new Project(client); project.updateSessionDurationPolicy( - 5, // duration + 60, // duration new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/java/project/update-user-limit-policy.md b/examples/1.9.x/server-kotlin/java/project/update-user-limit-policy.md index 18e52b807..4e0a99343 100644 --- a/examples/1.9.x/server-kotlin/java/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-kotlin/java/project/update-user-limit-policy.md @@ -11,7 +11,7 @@ Client client = new Client() Project project = new Project(client); project.updateUserLimitPolicy( - 1, // total + 0, // total new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/java/storage/create-file.md b/examples/1.9.x/server-kotlin/java/storage/create-file.md index 80fff49a1..913140907 100644 --- a/examples/1.9.x/server-kotlin/java/storage/create-file.md +++ b/examples/1.9.x/server-kotlin/java/storage/create-file.md @@ -18,6 +18,7 @@ storage.createFile( "", // fileId InputFile.fromPath("file.png"), // file List.of(Permission.read(Role.any())), // permissions (optional) + "", // folder (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/java/tablesdb/create.md b/examples/1.9.x/server-kotlin/java/tablesdb/create.md index 9774f5b46..aa47e87d1 100644 --- a/examples/1.9.x/server-kotlin/java/tablesdb/create.md +++ b/examples/1.9.x/server-kotlin/java/tablesdb/create.md @@ -16,6 +16,7 @@ tablesDB.create( false, // enabled (optional) "serverless", // specification (optional) 0, // replicas (optional) + "async", // syncMode (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/java/tablesdb/list-operations.md b/examples/1.9.x/server-kotlin/java/tablesdb/list-operations.md new file mode 100644 index 000000000..99aae5661 --- /dev/null +++ b/examples/1.9.x/server-kotlin/java/tablesdb/list-operations.md @@ -0,0 +1,28 @@ +```java +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.listOperations( + "", // databaseId + "running", // status (optional) + 1, // limit (optional) + 0, // offset (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` diff --git a/examples/1.9.x/server-kotlin/java/tablesdb/update.md b/examples/1.9.x/server-kotlin/java/tablesdb/update.md index e9033d0e1..f341fee98 100644 --- a/examples/1.9.x/server-kotlin/java/tablesdb/update.md +++ b/examples/1.9.x/server-kotlin/java/tablesdb/update.md @@ -14,7 +14,9 @@ tablesDB.update( "", // databaseId "", // name (optional) false, // enabled (optional) + "serverless", // specification (optional) 0, // replicas (optional) + "async", // syncMode (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); diff --git a/examples/1.9.x/server-kotlin/kotlin/activities/list-events.md b/examples/1.9.x/server-kotlin/kotlin/activities/list-events.md index e781bfb2b..b6d7922df 100644 --- a/examples/1.9.x/server-kotlin/kotlin/activities/list-events.md +++ b/examples/1.9.x/server-kotlin/kotlin/activities/list-events.md @@ -11,6 +11,6 @@ val client = Client() val activities = Activities(client) val response = activities.listEvents( - queries = "" // optional + queries = listOf() // optional ) ``` diff --git a/examples/1.9.x/server-kotlin/kotlin/apps/create-installation-token.md b/examples/1.9.x/server-kotlin/kotlin/apps/create-installation-token.md index 22f8aa988..f4be48061 100644 --- a/examples/1.9.x/server-kotlin/kotlin/apps/create-installation-token.md +++ b/examples/1.9.x/server-kotlin/kotlin/apps/create-installation-token.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps val client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with val apps = Apps(client) diff --git a/examples/1.9.x/server-kotlin/kotlin/apps/delete-installation.md b/examples/1.9.x/server-kotlin/kotlin/apps/delete-installation.md new file mode 100644 index 000000000..55ad9e5e1 --- /dev/null +++ b/examples/1.9.x/server-kotlin/kotlin/apps/delete-installation.md @@ -0,0 +1,17 @@ +```kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setSession("") // The user session to authenticate with + +val apps = Apps(client) + +val response = apps.deleteInstallation( + appId = "", + installationId = "" +) +``` diff --git a/examples/1.9.x/server-kotlin/kotlin/apps/get-installation.md b/examples/1.9.x/server-kotlin/kotlin/apps/get-installation.md index 78d681b06..d6a70e810 100644 --- a/examples/1.9.x/server-kotlin/kotlin/apps/get-installation.md +++ b/examples/1.9.x/server-kotlin/kotlin/apps/get-installation.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps val client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with val apps = Apps(client) diff --git a/examples/1.9.x/server-kotlin/kotlin/apps/list-installations.md b/examples/1.9.x/server-kotlin/kotlin/apps/list-installations.md index 3dcb194d7..07ec43555 100644 --- a/examples/1.9.x/server-kotlin/kotlin/apps/list-installations.md +++ b/examples/1.9.x/server-kotlin/kotlin/apps/list-installations.md @@ -6,7 +6,7 @@ import io.appwrite.services.Apps val client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with val apps = Apps(client) diff --git a/examples/1.9.x/server-kotlin/kotlin/project/update-session-duration-policy.md b/examples/1.9.x/server-kotlin/kotlin/project/update-session-duration-policy.md index ad8c3f762..9b69ee1b1 100644 --- a/examples/1.9.x/server-kotlin/kotlin/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-kotlin/kotlin/project/update-session-duration-policy.md @@ -11,6 +11,6 @@ val client = Client() val project = Project(client) val response = project.updateSessionDurationPolicy( - duration = 5 + duration = 60 ) ``` diff --git a/examples/1.9.x/server-kotlin/kotlin/project/update-user-limit-policy.md b/examples/1.9.x/server-kotlin/kotlin/project/update-user-limit-policy.md index b46fb16a0..67d22ca08 100644 --- a/examples/1.9.x/server-kotlin/kotlin/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-kotlin/kotlin/project/update-user-limit-policy.md @@ -11,6 +11,6 @@ val client = Client() val project = Project(client) val response = project.updateUserLimitPolicy( - total = 1 + total = 0 ) ``` diff --git a/examples/1.9.x/server-kotlin/kotlin/storage/create-file.md b/examples/1.9.x/server-kotlin/kotlin/storage/create-file.md index e17edbd89..25d1f6a94 100644 --- a/examples/1.9.x/server-kotlin/kotlin/storage/create-file.md +++ b/examples/1.9.x/server-kotlin/kotlin/storage/create-file.md @@ -17,6 +17,7 @@ val response = storage.createFile( bucketId = "", fileId = "", file = InputFile.fromPath("file.png"), - permissions = listOf(Permission.read(Role.any())) // optional + permissions = listOf(Permission.read(Role.any())), // optional + folder = "" // optional ) ``` diff --git a/examples/1.9.x/server-kotlin/kotlin/tablesdb/create.md b/examples/1.9.x/server-kotlin/kotlin/tablesdb/create.md index 0ab80063e..9885fc917 100644 --- a/examples/1.9.x/server-kotlin/kotlin/tablesdb/create.md +++ b/examples/1.9.x/server-kotlin/kotlin/tablesdb/create.md @@ -15,6 +15,7 @@ val response = tablesDB.create( name = "", enabled = false, // optional specification = "serverless", // optional - replicas = 0 // optional + replicas = 0, // optional + syncMode = "async" // optional ) ``` diff --git a/examples/1.9.x/server-kotlin/kotlin/tablesdb/list-operations.md b/examples/1.9.x/server-kotlin/kotlin/tablesdb/list-operations.md new file mode 100644 index 000000000..329689d06 --- /dev/null +++ b/examples/1.9.x/server-kotlin/kotlin/tablesdb/list-operations.md @@ -0,0 +1,19 @@ +```kotlin +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.listOperations( + databaseId = "", + status = "running", // optional + limit = 1, // optional + offset = 0 // optional +) +``` diff --git a/examples/1.9.x/server-kotlin/kotlin/tablesdb/update.md b/examples/1.9.x/server-kotlin/kotlin/tablesdb/update.md index c21e26d74..2822cd4a5 100644 --- a/examples/1.9.x/server-kotlin/kotlin/tablesdb/update.md +++ b/examples/1.9.x/server-kotlin/kotlin/tablesdb/update.md @@ -14,6 +14,8 @@ val response = tablesDB.update( databaseId = "", name = "", // optional enabled = false, // optional - replicas = 0 // optional + specification = "serverless", // optional + replicas = 0, // optional + syncMode = "async" // optional ) ``` diff --git a/examples/1.9.x/server-nodejs/examples/activities/list-events.md b/examples/1.9.x/server-nodejs/examples/activities/list-events.md index 11407e89a..992639519 100644 --- a/examples/1.9.x/server-nodejs/examples/activities/list-events.md +++ b/examples/1.9.x/server-nodejs/examples/activities/list-events.md @@ -9,6 +9,6 @@ const client = new sdk.Client() const activities = new sdk.Activities(client); const result = await activities.listEvents({ - queries: '' // optional + queries: [] // optional }); ``` diff --git a/examples/1.9.x/server-nodejs/examples/apps/create-installation-token.md b/examples/1.9.x/server-nodejs/examples/apps/create-installation-token.md index f60d495b1..2b414528d 100644 --- a/examples/1.9.x/server-nodejs/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-nodejs/examples/apps/create-installation-token.md @@ -4,7 +4,7 @@ const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with const apps = new sdk.Apps(client); diff --git a/examples/1.9.x/server-nodejs/examples/apps/delete-installation.md b/examples/1.9.x/server-nodejs/examples/apps/delete-installation.md new file mode 100644 index 000000000..b9933fb9b --- /dev/null +++ b/examples/1.9.x/server-nodejs/examples/apps/delete-installation.md @@ -0,0 +1,15 @@ +```javascript +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setSession(''); // The user session to authenticate with + +const apps = new sdk.Apps(client); + +const result = await apps.deleteInstallation({ + appId: '', + installationId: '' +}); +``` diff --git a/examples/1.9.x/server-nodejs/examples/apps/get-installation.md b/examples/1.9.x/server-nodejs/examples/apps/get-installation.md index eb483b23d..ceddee241 100644 --- a/examples/1.9.x/server-nodejs/examples/apps/get-installation.md +++ b/examples/1.9.x/server-nodejs/examples/apps/get-installation.md @@ -4,7 +4,7 @@ const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with const apps = new sdk.Apps(client); diff --git a/examples/1.9.x/server-nodejs/examples/apps/list-installations.md b/examples/1.9.x/server-nodejs/examples/apps/list-installations.md index e410f6668..4bb719733 100644 --- a/examples/1.9.x/server-nodejs/examples/apps/list-installations.md +++ b/examples/1.9.x/server-nodejs/examples/apps/list-installations.md @@ -4,7 +4,7 @@ const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID - .setKey(''); // Your secret API key + .setSession(''); // The user session to authenticate with const apps = new sdk.Apps(client); diff --git a/examples/1.9.x/server-nodejs/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-nodejs/examples/project/update-session-duration-policy.md index 2a4873be8..35ae13df4 100644 --- a/examples/1.9.x/server-nodejs/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-nodejs/examples/project/update-session-duration-policy.md @@ -9,6 +9,6 @@ const client = new sdk.Client() const project = new sdk.Project(client); const result = await project.updateSessionDurationPolicy({ - duration: 5 + duration: 60 }); ``` diff --git a/examples/1.9.x/server-nodejs/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-nodejs/examples/project/update-user-limit-policy.md index bb3720423..a631e0fa9 100644 --- a/examples/1.9.x/server-nodejs/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-nodejs/examples/project/update-user-limit-policy.md @@ -9,6 +9,6 @@ const client = new sdk.Client() const project = new sdk.Project(client); const result = await project.updateUserLimitPolicy({ - total: 1 + total: 0 }); ``` diff --git a/examples/1.9.x/server-nodejs/examples/storage/create-file.md b/examples/1.9.x/server-nodejs/examples/storage/create-file.md index 055e5ab53..6a09ee7c5 100644 --- a/examples/1.9.x/server-nodejs/examples/storage/create-file.md +++ b/examples/1.9.x/server-nodejs/examples/storage/create-file.md @@ -13,6 +13,7 @@ const result = await storage.createFile({ bucketId: '', fileId: '', file: InputFile.fromPath('/path/to/file', 'filename'), - permissions: [sdk.Permission.read(sdk.Role.any())] // optional + permissions: [sdk.Permission.read(sdk.Role.any())], // optional + folder: '' // optional }); ``` diff --git a/examples/1.9.x/server-nodejs/examples/tablesdb/create.md b/examples/1.9.x/server-nodejs/examples/tablesdb/create.md index 27bf661f2..cd18253c6 100644 --- a/examples/1.9.x/server-nodejs/examples/tablesdb/create.md +++ b/examples/1.9.x/server-nodejs/examples/tablesdb/create.md @@ -13,6 +13,7 @@ const result = await tablesDB.create({ name: '', enabled: false, // optional specification: 'serverless', // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: 'async' // optional }); ``` diff --git a/examples/1.9.x/server-nodejs/examples/tablesdb/list-operations.md b/examples/1.9.x/server-nodejs/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..62fcb0cef --- /dev/null +++ b/examples/1.9.x/server-nodejs/examples/tablesdb/list-operations.md @@ -0,0 +1,17 @@ +```javascript +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const tablesDB = new sdk.TablesDB(client); + +const result = await tablesDB.listOperations({ + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +}); +``` diff --git a/examples/1.9.x/server-nodejs/examples/tablesdb/update.md b/examples/1.9.x/server-nodejs/examples/tablesdb/update.md index 034eb9401..8be0bfda3 100644 --- a/examples/1.9.x/server-nodejs/examples/tablesdb/update.md +++ b/examples/1.9.x/server-nodejs/examples/tablesdb/update.md @@ -12,6 +12,8 @@ const result = await tablesDB.update({ databaseId: '', name: '', // optional enabled: false, // optional - replicas: 0 // optional + specification: 'serverless', // optional + replicas: 0, // optional + syncMode: 'async' // optional }); ``` diff --git a/examples/1.9.x/server-php/examples/activities/list-events.md b/examples/1.9.x/server-php/examples/activities/list-events.md index ef9a9d701..cab59cfca 100644 --- a/examples/1.9.x/server-php/examples/activities/list-events.md +++ b/examples/1.9.x/server-php/examples/activities/list-events.md @@ -12,5 +12,5 @@ $client = (new Client()) $activities = new Activities($client); $result = $activities->listEvents( - queries: '' // optional + queries: [] // optional );``` diff --git a/examples/1.9.x/server-php/examples/apps/create-installation-token.md b/examples/1.9.x/server-php/examples/apps/create-installation-token.md index ef4ca3809..33d117ae7 100644 --- a/examples/1.9.x/server-php/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-php/examples/apps/create-installation-token.md @@ -7,7 +7,7 @@ use Appwrite\Services\Apps; $client = (new Client()) ->setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint ->setProject('') // Your project ID - ->setKey(''); // Your secret API key + ->setSession(''); // The user session to authenticate with $apps = new Apps($client); diff --git a/examples/1.9.x/server-php/examples/apps/delete-installation.md b/examples/1.9.x/server-php/examples/apps/delete-installation.md new file mode 100644 index 000000000..e57a12f47 --- /dev/null +++ b/examples/1.9.x/server-php/examples/apps/delete-installation.md @@ -0,0 +1,17 @@ +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setSession(''); // The user session to authenticate with + +$apps = new Apps($client); + +$result = $apps->deleteInstallation( + appId: '', + installationId: '' +);``` diff --git a/examples/1.9.x/server-php/examples/apps/get-installation.md b/examples/1.9.x/server-php/examples/apps/get-installation.md index 63de2616a..0f7a9bac2 100644 --- a/examples/1.9.x/server-php/examples/apps/get-installation.md +++ b/examples/1.9.x/server-php/examples/apps/get-installation.md @@ -7,7 +7,7 @@ use Appwrite\Services\Apps; $client = (new Client()) ->setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint ->setProject('') // Your project ID - ->setKey(''); // Your secret API key + ->setSession(''); // The user session to authenticate with $apps = new Apps($client); diff --git a/examples/1.9.x/server-php/examples/apps/list-installations.md b/examples/1.9.x/server-php/examples/apps/list-installations.md index fbdff2427..0209cd244 100644 --- a/examples/1.9.x/server-php/examples/apps/list-installations.md +++ b/examples/1.9.x/server-php/examples/apps/list-installations.md @@ -7,7 +7,7 @@ use Appwrite\Services\Apps; $client = (new Client()) ->setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint ->setProject('') // Your project ID - ->setKey(''); // Your secret API key + ->setSession(''); // The user session to authenticate with $apps = new Apps($client); diff --git a/examples/1.9.x/server-php/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-php/examples/project/update-session-duration-policy.md index 89526e79f..882e2b2fa 100644 --- a/examples/1.9.x/server-php/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-php/examples/project/update-session-duration-policy.md @@ -12,5 +12,5 @@ $client = (new Client()) $project = new Project($client); $result = $project->updateSessionDurationPolicy( - duration: 5 + duration: 60 );``` diff --git a/examples/1.9.x/server-php/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-php/examples/project/update-user-limit-policy.md index bb787e9ea..0dc2f1f7d 100644 --- a/examples/1.9.x/server-php/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-php/examples/project/update-user-limit-policy.md @@ -12,5 +12,5 @@ $client = (new Client()) $project = new Project($client); $result = $project->updateUserLimitPolicy( - total: 1 + total: 0 );``` diff --git a/examples/1.9.x/server-php/examples/storage/create-file.md b/examples/1.9.x/server-php/examples/storage/create-file.md index 62301b102..19c387977 100644 --- a/examples/1.9.x/server-php/examples/storage/create-file.md +++ b/examples/1.9.x/server-php/examples/storage/create-file.md @@ -18,5 +18,6 @@ $result = $storage->createFile( bucketId: '', fileId: '', file: InputFile::withPath('file.png'), - permissions: [Permission::read(Role::any())] // optional + permissions: [Permission::read(Role::any())], // optional + folder: '' // optional );``` diff --git a/examples/1.9.x/server-php/examples/tablesdb/create.md b/examples/1.9.x/server-php/examples/tablesdb/create.md index 87c81dd25..7df1d49af 100644 --- a/examples/1.9.x/server-php/examples/tablesdb/create.md +++ b/examples/1.9.x/server-php/examples/tablesdb/create.md @@ -16,5 +16,6 @@ $result = $tablesDB->create( name: '', enabled: false, // optional specification: 'serverless', // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: 'async' // optional );``` diff --git a/examples/1.9.x/server-php/examples/tablesdb/list-operations.md b/examples/1.9.x/server-php/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..311b14642 --- /dev/null +++ b/examples/1.9.x/server-php/examples/tablesdb/list-operations.md @@ -0,0 +1,19 @@ +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$tablesDB = new TablesDB($client); + +$result = $tablesDB->listOperations( + databaseId: '', + status: 'running', // optional + limit: 1, // optional + offset: 0 // optional +);``` diff --git a/examples/1.9.x/server-php/examples/tablesdb/update.md b/examples/1.9.x/server-php/examples/tablesdb/update.md index e6c703afc..c5bafb8d6 100644 --- a/examples/1.9.x/server-php/examples/tablesdb/update.md +++ b/examples/1.9.x/server-php/examples/tablesdb/update.md @@ -15,5 +15,7 @@ $result = $tablesDB->update( databaseId: '', name: '', // optional enabled: false, // optional - replicas: 0 // optional + specification: 'serverless', // optional + replicas: 0, // optional + syncMode: 'async' // optional );``` diff --git a/examples/1.9.x/server-python/examples/activities/list-events.md b/examples/1.9.x/server-python/examples/activities/list-events.md index bbeb644bb..17f3b67d0 100644 --- a/examples/1.9.x/server-python/examples/activities/list-events.md +++ b/examples/1.9.x/server-python/examples/activities/list-events.md @@ -11,7 +11,7 @@ client.set_key('') # Your secret API key activities = Activities(client) result: ActivityEventList = activities.list_events( - queries = '' # optional + queries = [] # optional ) print(result.model_dump()) diff --git a/examples/1.9.x/server-python/examples/apps/create-installation-token.md b/examples/1.9.x/server-python/examples/apps/create-installation-token.md index 62a62ca6f..acbe6cc73 100644 --- a/examples/1.9.x/server-python/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-python/examples/apps/create-installation-token.md @@ -6,7 +6,7 @@ from appwrite.models import Oauth2Token client = Client() client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint client.set_project('') # Your project ID -client.set_key('') # Your secret API key +client.set_session('') # The user session to authenticate with apps = Apps(client) diff --git a/examples/1.9.x/server-python/examples/apps/delete-installation.md b/examples/1.9.x/server-python/examples/apps/delete-installation.md new file mode 100644 index 000000000..2a941e8ef --- /dev/null +++ b/examples/1.9.x/server-python/examples/apps/delete-installation.md @@ -0,0 +1,16 @@ +```python +from appwrite.client import Client +from appwrite.services.apps import Apps + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_session('') # The user session to authenticate with + +apps = Apps(client) + +result = apps.delete_installation( + app_id = '', + installation_id = '' +) +``` diff --git a/examples/1.9.x/server-python/examples/apps/get-installation.md b/examples/1.9.x/server-python/examples/apps/get-installation.md index f6a52721e..d71858c96 100644 --- a/examples/1.9.x/server-python/examples/apps/get-installation.md +++ b/examples/1.9.x/server-python/examples/apps/get-installation.md @@ -6,7 +6,7 @@ from appwrite.models import AppInstallation client = Client() client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint client.set_project('') # Your project ID -client.set_key('') # Your secret API key +client.set_session('') # The user session to authenticate with apps = Apps(client) diff --git a/examples/1.9.x/server-python/examples/apps/list-installations.md b/examples/1.9.x/server-python/examples/apps/list-installations.md index f5e292b28..e21575cbb 100644 --- a/examples/1.9.x/server-python/examples/apps/list-installations.md +++ b/examples/1.9.x/server-python/examples/apps/list-installations.md @@ -6,7 +6,7 @@ from appwrite.models import AppInstallationList client = Client() client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint client.set_project('') # Your project ID -client.set_key('') # Your secret API key +client.set_session('') # The user session to authenticate with apps = Apps(client) diff --git a/examples/1.9.x/server-python/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-python/examples/project/update-session-duration-policy.md index 768bd4ffa..817947e45 100644 --- a/examples/1.9.x/server-python/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-python/examples/project/update-session-duration-policy.md @@ -11,7 +11,7 @@ client.set_key('') # Your secret API key project = Project(client) result: ProjectModel = project.update_session_duration_policy( - duration = 5 + duration = 60 ) print(result.model_dump()) diff --git a/examples/1.9.x/server-python/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-python/examples/project/update-user-limit-policy.md index e841acaea..42d66de30 100644 --- a/examples/1.9.x/server-python/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-python/examples/project/update-user-limit-policy.md @@ -11,7 +11,7 @@ client.set_key('') # Your secret API key project = Project(client) result: ProjectModel = project.update_user_limit_policy( - total = 1 + total = 0 ) print(result.model_dump()) diff --git a/examples/1.9.x/server-python/examples/storage/create-file.md b/examples/1.9.x/server-python/examples/storage/create-file.md index 2103a1d60..cfec75c1b 100644 --- a/examples/1.9.x/server-python/examples/storage/create-file.md +++ b/examples/1.9.x/server-python/examples/storage/create-file.md @@ -17,7 +17,8 @@ result: File = storage.create_file( bucket_id = '', file_id = '', file = InputFile.from_path('file.png'), - permissions = [Permission.read(Role.any())] # optional + permissions = [Permission.read(Role.any())], # optional + folder = '' # optional ) print(result.model_dump()) diff --git a/examples/1.9.x/server-python/examples/tablesdb/create.md b/examples/1.9.x/server-python/examples/tablesdb/create.md index 0c5260cf2..ca6688758 100644 --- a/examples/1.9.x/server-python/examples/tablesdb/create.md +++ b/examples/1.9.x/server-python/examples/tablesdb/create.md @@ -15,7 +15,8 @@ result: Database = tables_db.create( name = '', enabled = False, # optional specification = 'serverless', # optional - replicas = 0 # optional + replicas = 0, # optional + sync_mode = 'async' # optional ) print(result.model_dump()) diff --git a/examples/1.9.x/server-python/examples/tablesdb/list-operations.md b/examples/1.9.x/server-python/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..afe143386 --- /dev/null +++ b/examples/1.9.x/server-python/examples/tablesdb/list-operations.md @@ -0,0 +1,21 @@ +```python +from appwrite.client import Client +from appwrite.services.tables_db import TablesDB +from appwrite.models import DedicatedDatabaseOperationList + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +tables_db = TablesDB(client) + +result: DedicatedDatabaseOperationList = tables_db.list_operations( + database_id = '', + status = 'running', # optional + limit = 1, # optional + offset = 0 # optional +) + +print(result.model_dump()) +``` diff --git a/examples/1.9.x/server-python/examples/tablesdb/update.md b/examples/1.9.x/server-python/examples/tablesdb/update.md index 8609072ea..7fc0c9306 100644 --- a/examples/1.9.x/server-python/examples/tablesdb/update.md +++ b/examples/1.9.x/server-python/examples/tablesdb/update.md @@ -14,7 +14,9 @@ result: Database = tables_db.update( database_id = '', name = '', # optional enabled = False, # optional - replicas = 0 # optional + specification = 'serverless', # optional + replicas = 0, # optional + sync_mode = 'async' # optional ) print(result.model_dump()) diff --git a/examples/1.9.x/server-rest/examples/apps/delete-installation.md b/examples/1.9.x/server-rest/examples/apps/delete-installation.md new file mode 100644 index 000000000..01004824e --- /dev/null +++ b/examples/1.9.x/server-rest/examples/apps/delete-installation.md @@ -0,0 +1,10 @@ +```http +DELETE /v1/apps/{appId}/installations/{installationId} HTTP/1.1 +Host: cloud.appwrite.io +Content-Type: application/json +Accept: application/json +X-Appwrite-Response-Format: 1.9.5 +X-Appwrite-Project: + + +``` diff --git a/examples/1.9.x/server-rest/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-rest/examples/project/update-session-duration-policy.md index d1c2547b7..c2f6c1898 100644 --- a/examples/1.9.x/server-rest/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-rest/examples/project/update-session-duration-policy.md @@ -7,10 +7,10 @@ X-Appwrite-Response-Format: 1.9.5 X-Appwrite-Project: { - "duration": 5 + "duration": 60 } { - "duration": 5 + "duration": 60 } ``` diff --git a/examples/1.9.x/server-rest/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-rest/examples/project/update-user-limit-policy.md index 3b2ec476f..42515e0c3 100644 --- a/examples/1.9.x/server-rest/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-rest/examples/project/update-user-limit-policy.md @@ -7,10 +7,10 @@ X-Appwrite-Response-Format: 1.9.5 X-Appwrite-Project: { - "total": 1 + "total": 0 } { - "total": 1 + "total": 0 } ``` diff --git a/examples/1.9.x/server-rest/examples/storage/create-file.md b/examples/1.9.x/server-rest/examples/storage/create-file.md index a126c6c86..af47bda9a 100644 --- a/examples/1.9.x/server-rest/examples/storage/create-file.md +++ b/examples/1.9.x/server-rest/examples/storage/create-file.md @@ -22,11 +22,17 @@ Content-Disposition: form-data; name="permissions[]" ["read(\"any\")"] +--cec8e8123c05ba25 +Content-Disposition: form-data; name="folder" + +"" + --cec8e8123c05ba25-- { "fileId": "", "file": cf 94 84 24 8d c4 91 10 0f dc 54 26 6c 8e 4b bc e8 ee 55 94 29 e7 94 89 19 26 28 01 26 29 3f 16..., - "permissions": ["read(\"any\")"] + "permissions": ["read(\"any\")"], + "folder": "" } ``` diff --git a/examples/1.9.x/server-rest/examples/tablesdb/create.md b/examples/1.9.x/server-rest/examples/tablesdb/create.md index 2bf81ba87..44c8a4c1b 100644 --- a/examples/1.9.x/server-rest/examples/tablesdb/create.md +++ b/examples/1.9.x/server-rest/examples/tablesdb/create.md @@ -11,7 +11,8 @@ X-Appwrite-Project: "name": "", "enabled": false, "specification": "serverless", - "replicas": 0 + "replicas": 0, + "syncMode": "async" } { @@ -19,6 +20,7 @@ X-Appwrite-Project: "name": "", "enabled": false, "specification": "serverless", - "replicas": 0 + "replicas": 0, + "syncMode": "async" } ``` diff --git a/examples/1.9.x/server-rest/examples/tablesdb/list-operations.md b/examples/1.9.x/server-rest/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..eeff3beee --- /dev/null +++ b/examples/1.9.x/server-rest/examples/tablesdb/list-operations.md @@ -0,0 +1,8 @@ +```http +GET /v1/tablesdb/{databaseId}/operations HTTP/1.1 +Host: cloud.appwrite.io +Accept: application/json +X-Appwrite-Response-Format: 1.9.5 +X-Appwrite-Project: + +``` diff --git a/examples/1.9.x/server-rest/examples/tablesdb/update.md b/examples/1.9.x/server-rest/examples/tablesdb/update.md index 5de8ac7ad..0962bc971 100644 --- a/examples/1.9.x/server-rest/examples/tablesdb/update.md +++ b/examples/1.9.x/server-rest/examples/tablesdb/update.md @@ -9,12 +9,16 @@ X-Appwrite-Project: { "name": "", "enabled": false, - "replicas": 0 + "specification": "serverless", + "replicas": 0, + "syncMode": "async" } { "name": "", "enabled": false, - "replicas": 0 + "specification": "serverless", + "replicas": 0, + "syncMode": "async" } ``` diff --git a/examples/1.9.x/server-ruby/examples/activities/list-events.md b/examples/1.9.x/server-ruby/examples/activities/list-events.md index 1d7fddd62..dd1ea3542 100644 --- a/examples/1.9.x/server-ruby/examples/activities/list-events.md +++ b/examples/1.9.x/server-ruby/examples/activities/list-events.md @@ -11,6 +11,6 @@ client = Client.new activities = Activities.new(client) result = activities.list_events( - queries: '' # optional + queries: [] # optional ) ``` diff --git a/examples/1.9.x/server-ruby/examples/apps/create-installation-token.md b/examples/1.9.x/server-ruby/examples/apps/create-installation-token.md index 7c71cecc8..4a4ea2535 100644 --- a/examples/1.9.x/server-ruby/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-ruby/examples/apps/create-installation-token.md @@ -6,7 +6,7 @@ include Appwrite client = Client.new .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint .set_project('') # Your project ID - .set_key('') # Your secret API key + .set_session('') # The user session to authenticate with apps = Apps.new(client) diff --git a/examples/1.9.x/server-ruby/examples/apps/delete-installation.md b/examples/1.9.x/server-ruby/examples/apps/delete-installation.md new file mode 100644 index 000000000..d975728dd --- /dev/null +++ b/examples/1.9.x/server-ruby/examples/apps/delete-installation.md @@ -0,0 +1,17 @@ +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_session('') # The user session to authenticate with + +apps = Apps.new(client) + +result = apps.delete_installation( + app_id: '', + installation_id: '' +) +``` diff --git a/examples/1.9.x/server-ruby/examples/apps/get-installation.md b/examples/1.9.x/server-ruby/examples/apps/get-installation.md index 5db2961b4..08a949cfd 100644 --- a/examples/1.9.x/server-ruby/examples/apps/get-installation.md +++ b/examples/1.9.x/server-ruby/examples/apps/get-installation.md @@ -6,7 +6,7 @@ include Appwrite client = Client.new .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint .set_project('') # Your project ID - .set_key('') # Your secret API key + .set_session('') # The user session to authenticate with apps = Apps.new(client) diff --git a/examples/1.9.x/server-ruby/examples/apps/list-installations.md b/examples/1.9.x/server-ruby/examples/apps/list-installations.md index da01dc8ee..81becbcf7 100644 --- a/examples/1.9.x/server-ruby/examples/apps/list-installations.md +++ b/examples/1.9.x/server-ruby/examples/apps/list-installations.md @@ -6,7 +6,7 @@ include Appwrite client = Client.new .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint .set_project('') # Your project ID - .set_key('') # Your secret API key + .set_session('') # The user session to authenticate with apps = Apps.new(client) diff --git a/examples/1.9.x/server-ruby/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-ruby/examples/project/update-session-duration-policy.md index 5a27a77ca..ba8f1cb39 100644 --- a/examples/1.9.x/server-ruby/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-ruby/examples/project/update-session-duration-policy.md @@ -11,6 +11,6 @@ client = Client.new project = Project.new(client) result = project.update_session_duration_policy( - duration: 5 + duration: 60 ) ``` diff --git a/examples/1.9.x/server-ruby/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-ruby/examples/project/update-user-limit-policy.md index 1116435e5..145906a3e 100644 --- a/examples/1.9.x/server-ruby/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-ruby/examples/project/update-user-limit-policy.md @@ -11,6 +11,6 @@ client = Client.new project = Project.new(client) result = project.update_user_limit_policy( - total: 1 + total: 0 ) ``` diff --git a/examples/1.9.x/server-ruby/examples/storage/create-file.md b/examples/1.9.x/server-ruby/examples/storage/create-file.md index 0e03b082e..cef346406 100644 --- a/examples/1.9.x/server-ruby/examples/storage/create-file.md +++ b/examples/1.9.x/server-ruby/examples/storage/create-file.md @@ -16,6 +16,7 @@ result = storage.create_file( bucket_id: '', file_id: '', file: InputFile.from_path('dir/file.png'), - permissions: [Permission.read(Role.any())] # optional + permissions: [Permission.read(Role.any())], # optional + folder: '' # optional ) ``` diff --git a/examples/1.9.x/server-ruby/examples/tablesdb/create.md b/examples/1.9.x/server-ruby/examples/tablesdb/create.md index 433b5b72a..e68bb0a38 100644 --- a/examples/1.9.x/server-ruby/examples/tablesdb/create.md +++ b/examples/1.9.x/server-ruby/examples/tablesdb/create.md @@ -15,6 +15,7 @@ result = tables_db.create( name: '', enabled: false, # optional specification: 'serverless', # optional - replicas: 0 # optional + replicas: 0, # optional + sync_mode: 'async' # optional ) ``` diff --git a/examples/1.9.x/server-ruby/examples/tablesdb/list-operations.md b/examples/1.9.x/server-ruby/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..ac41c1764 --- /dev/null +++ b/examples/1.9.x/server-ruby/examples/tablesdb/list-operations.md @@ -0,0 +1,19 @@ +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +tables_db = TablesDB.new(client) + +result = tables_db.list_operations( + database_id: '', + status: 'running', # optional + limit: 1, # optional + offset: 0 # optional +) +``` diff --git a/examples/1.9.x/server-ruby/examples/tablesdb/update.md b/examples/1.9.x/server-ruby/examples/tablesdb/update.md index 4257090ac..d13b8caf9 100644 --- a/examples/1.9.x/server-ruby/examples/tablesdb/update.md +++ b/examples/1.9.x/server-ruby/examples/tablesdb/update.md @@ -14,6 +14,8 @@ result = tables_db.update( database_id: '', name: '', # optional enabled: false, # optional - replicas: 0 # optional + specification: 'serverless', # optional + replicas: 0, # optional + sync_mode: 'async' # optional ) ``` diff --git a/examples/1.9.x/server-rust/examples/activities/list-events.md b/examples/1.9.x/server-rust/examples/activities/list-events.md index 6d12f87d6..ea776ddf4 100644 --- a/examples/1.9.x/server-rust/examples/activities/list-events.md +++ b/examples/1.9.x/server-rust/examples/activities/list-events.md @@ -12,7 +12,7 @@ async fn main() -> Result<(), Box> { let activities = Activities::new(&client); let result = activities.list_events( - Some("") // optional + Some(vec![]) // optional ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/apps/create-installation-token.md b/examples/1.9.x/server-rust/examples/apps/create-installation-token.md index fcc3c08f7..9ba40020c 100644 --- a/examples/1.9.x/server-rust/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-rust/examples/apps/create-installation-token.md @@ -7,7 +7,7 @@ async fn main() -> Result<(), Box> { let client = Client::new(); client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint client.set_project(""); // Your project ID - client.set_key(""); // Your secret API key + client.set_session(""); // The user session to authenticate with let apps = Apps::new(&client); diff --git a/examples/1.9.x/server-rust/examples/apps/delete-installation.md b/examples/1.9.x/server-rust/examples/apps/delete-installation.md new file mode 100644 index 000000000..320dac452 --- /dev/null +++ b/examples/1.9.x/server-rust/examples/apps/delete-installation.md @@ -0,0 +1,23 @@ +```rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_session(""); // The user session to authenticate with + + let apps = Apps::new(&client); + + let result = apps.delete_installation( + "", + "" + ).await?; + + let _ = result; + + Ok(()) +} +``` diff --git a/examples/1.9.x/server-rust/examples/apps/get-installation.md b/examples/1.9.x/server-rust/examples/apps/get-installation.md index dfc9209e0..c3a8d1df8 100644 --- a/examples/1.9.x/server-rust/examples/apps/get-installation.md +++ b/examples/1.9.x/server-rust/examples/apps/get-installation.md @@ -7,7 +7,7 @@ async fn main() -> Result<(), Box> { let client = Client::new(); client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint client.set_project(""); // Your project ID - client.set_key(""); // Your secret API key + client.set_session(""); // The user session to authenticate with let apps = Apps::new(&client); diff --git a/examples/1.9.x/server-rust/examples/apps/list-installations.md b/examples/1.9.x/server-rust/examples/apps/list-installations.md index 935e6a5ef..8698cced6 100644 --- a/examples/1.9.x/server-rust/examples/apps/list-installations.md +++ b/examples/1.9.x/server-rust/examples/apps/list-installations.md @@ -7,7 +7,7 @@ async fn main() -> Result<(), Box> { let client = Client::new(); client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint client.set_project(""); // Your project ID - client.set_key(""); // Your secret API key + client.set_session(""); // The user session to authenticate with let apps = Apps::new(&client); diff --git a/examples/1.9.x/server-rust/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-rust/examples/project/update-session-duration-policy.md index d6d7306e3..6a92c036c 100644 --- a/examples/1.9.x/server-rust/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-rust/examples/project/update-session-duration-policy.md @@ -12,7 +12,7 @@ async fn main() -> Result<(), Box> { let project = Project::new(&client); let result = project.update_session_duration_policy( - 5 + 60 ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/project/update-session-limit-policy.md b/examples/1.9.x/server-rust/examples/project/update-session-limit-policy.md index c4e9aa988..fd958cf0a 100644 --- a/examples/1.9.x/server-rust/examples/project/update-session-limit-policy.md +++ b/examples/1.9.x/server-rust/examples/project/update-session-limit-policy.md @@ -12,7 +12,7 @@ async fn main() -> Result<(), Box> { let project = Project::new(&client); let result = project.update_session_limit_policy( - Some(1) + 1 ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-rust/examples/project/update-user-limit-policy.md index 2b2d999b2..b2b0419c7 100644 --- a/examples/1.9.x/server-rust/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-rust/examples/project/update-user-limit-policy.md @@ -12,7 +12,7 @@ async fn main() -> Result<(), Box> { let project = Project::new(&client); let result = project.update_user_limit_policy( - Some(1) + Some(0) ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/storage/create-file.md b/examples/1.9.x/server-rust/examples/storage/create-file.md index ccf43557a..e470922b1 100644 --- a/examples/1.9.x/server-rust/examples/storage/create-file.md +++ b/examples/1.9.x/server-rust/examples/storage/create-file.md @@ -20,7 +20,8 @@ async fn main() -> Result<(), Box> { "", "", file, - Some(vec![Permission::read(Role::any()).to_string()]) // optional + Some(vec![Permission::read(Role::any()).to_string()]), // optional + Some("") // optional ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/tablesdb/create.md b/examples/1.9.x/server-rust/examples/tablesdb/create.md index 3af960919..544d54b2e 100644 --- a/examples/1.9.x/server-rust/examples/tablesdb/create.md +++ b/examples/1.9.x/server-rust/examples/tablesdb/create.md @@ -16,7 +16,8 @@ async fn main() -> Result<(), Box> { "", Some(false), // optional Some("serverless"), // optional - Some(0) // optional + Some(0), // optional + Some("async") // optional ).await?; let _ = result; diff --git a/examples/1.9.x/server-rust/examples/tablesdb/list-operations.md b/examples/1.9.x/server-rust/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..3454f249e --- /dev/null +++ b/examples/1.9.x/server-rust/examples/tablesdb/list-operations.md @@ -0,0 +1,25 @@ +```rust +use appwrite::Client; +use appwrite::services::TablesDB; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let tables_db = TablesDB::new(&client); + + let result = tables_db.list_operations( + "", + Some("running"), // optional + Some(1), // optional + Some(0) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` diff --git a/examples/1.9.x/server-rust/examples/tablesdb/update.md b/examples/1.9.x/server-rust/examples/tablesdb/update.md index be80e0855..33a35a279 100644 --- a/examples/1.9.x/server-rust/examples/tablesdb/update.md +++ b/examples/1.9.x/server-rust/examples/tablesdb/update.md @@ -15,7 +15,9 @@ async fn main() -> Result<(), Box> { "", Some(""), // optional Some(false), // optional - Some(0) // optional + Some("serverless"), // optional + Some(0), // optional + Some("async") // optional ).await?; let _ = result; diff --git a/examples/1.9.x/server-swift/examples/activities/list-events.md b/examples/1.9.x/server-swift/examples/activities/list-events.md index d36a9879e..54ca82727 100644 --- a/examples/1.9.x/server-swift/examples/activities/list-events.md +++ b/examples/1.9.x/server-swift/examples/activities/list-events.md @@ -9,7 +9,7 @@ let client = Client() let activities = Activities(client) let activityEventList = try await activities.listEvents( - queries: "" // optional + queries: [] // optional ) ``` diff --git a/examples/1.9.x/server-swift/examples/apps/create-installation-token.md b/examples/1.9.x/server-swift/examples/apps/create-installation-token.md index a81b0923c..c2104ab66 100644 --- a/examples/1.9.x/server-swift/examples/apps/create-installation-token.md +++ b/examples/1.9.x/server-swift/examples/apps/create-installation-token.md @@ -4,7 +4,7 @@ import Appwrite let client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with let apps = Apps(client) diff --git a/examples/1.9.x/server-swift/examples/apps/delete-installation.md b/examples/1.9.x/server-swift/examples/apps/delete-installation.md new file mode 100644 index 000000000..36d1bd1ee --- /dev/null +++ b/examples/1.9.x/server-swift/examples/apps/delete-installation.md @@ -0,0 +1,16 @@ +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setSession("") // The user session to authenticate with + +let apps = Apps(client) + +let result = try await apps.deleteInstallation( + appId: "", + installationId: "" +) + +``` diff --git a/examples/1.9.x/server-swift/examples/apps/get-installation.md b/examples/1.9.x/server-swift/examples/apps/get-installation.md index a9a366f81..bdd4e4767 100644 --- a/examples/1.9.x/server-swift/examples/apps/get-installation.md +++ b/examples/1.9.x/server-swift/examples/apps/get-installation.md @@ -4,7 +4,7 @@ import Appwrite let client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with let apps = Apps(client) diff --git a/examples/1.9.x/server-swift/examples/apps/list-installations.md b/examples/1.9.x/server-swift/examples/apps/list-installations.md index 83e98bc7b..4a8012d2a 100644 --- a/examples/1.9.x/server-swift/examples/apps/list-installations.md +++ b/examples/1.9.x/server-swift/examples/apps/list-installations.md @@ -4,7 +4,7 @@ import Appwrite let client = Client() .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint .setProject("") // Your project ID - .setKey("") // Your secret API key + .setSession("") // The user session to authenticate with let apps = Apps(client) diff --git a/examples/1.9.x/server-swift/examples/project/update-session-duration-policy.md b/examples/1.9.x/server-swift/examples/project/update-session-duration-policy.md index c7b80f89f..1463c84a1 100644 --- a/examples/1.9.x/server-swift/examples/project/update-session-duration-policy.md +++ b/examples/1.9.x/server-swift/examples/project/update-session-duration-policy.md @@ -9,7 +9,7 @@ let client = Client() let project = Project(client) let project = try await project.updateSessionDurationPolicy( - duration: 5 + duration: 60 ) ``` diff --git a/examples/1.9.x/server-swift/examples/project/update-user-limit-policy.md b/examples/1.9.x/server-swift/examples/project/update-user-limit-policy.md index b3f0ffec6..e8080b6a8 100644 --- a/examples/1.9.x/server-swift/examples/project/update-user-limit-policy.md +++ b/examples/1.9.x/server-swift/examples/project/update-user-limit-policy.md @@ -9,7 +9,7 @@ let client = Client() let project = Project(client) let project = try await project.updateUserLimitPolicy( - total: 1 + total: 0 ) ``` diff --git a/examples/1.9.x/server-swift/examples/storage/create-file.md b/examples/1.9.x/server-swift/examples/storage/create-file.md index 6ab324e4b..4a7b80677 100644 --- a/examples/1.9.x/server-swift/examples/storage/create-file.md +++ b/examples/1.9.x/server-swift/examples/storage/create-file.md @@ -12,7 +12,8 @@ let file = try await storage.createFile( bucketId: "", fileId: "", file: InputFile.fromPath("file.png"), - permissions: [Permission.read(Role.any())] // optional + permissions: [Permission.read(Role.any())], // optional + folder: "" // optional ) ``` diff --git a/examples/1.9.x/server-swift/examples/tablesdb/create.md b/examples/1.9.x/server-swift/examples/tablesdb/create.md index e17e2d36c..bfbf1380e 100644 --- a/examples/1.9.x/server-swift/examples/tablesdb/create.md +++ b/examples/1.9.x/server-swift/examples/tablesdb/create.md @@ -13,7 +13,8 @@ let database = try await tablesDB.create( name: "", enabled: false, // optional specification: "serverless", // optional - replicas: 0 // optional + replicas: 0, // optional + syncMode: "async" // optional ) ``` diff --git a/examples/1.9.x/server-swift/examples/tablesdb/list-operations.md b/examples/1.9.x/server-swift/examples/tablesdb/list-operations.md new file mode 100644 index 000000000..a6ff8cddc --- /dev/null +++ b/examples/1.9.x/server-swift/examples/tablesdb/list-operations.md @@ -0,0 +1,18 @@ +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let tablesDB = TablesDB(client) + +let dedicatedDatabaseOperationList = try await tablesDB.listOperations( + databaseId: "", + status: "running", // optional + limit: 1, // optional + offset: 0 // optional +) + +``` diff --git a/examples/1.9.x/server-swift/examples/tablesdb/update.md b/examples/1.9.x/server-swift/examples/tablesdb/update.md index ed73c57a6..772b2421e 100644 --- a/examples/1.9.x/server-swift/examples/tablesdb/update.md +++ b/examples/1.9.x/server-swift/examples/tablesdb/update.md @@ -12,7 +12,9 @@ let database = try await tablesDB.update( databaseId: "", name: "", // optional enabled: false, // optional - replicas: 0 // optional + specification: "serverless", // optional + replicas: 0, // optional + syncMode: "async" // optional ) ``` diff --git a/specs/1.9.x/open-api3-1.9.x-client.json b/specs/1.9.x/open-api3-1.9.x-client.json index 874d4abb5..f6be858b1 100644 --- a/specs/1.9.x/open-api3-1.9.x-client.json +++ b/specs/1.9.x/open-api3-1.9.x-client.json @@ -5293,6 +5293,315 @@ ] } }, + "\/apps\/{appId}\/installations": { + "get": { + "summary": "List Installations", + "operationId": "appsListInstallations", + "tags": [ + "apps" + ], + "description": "List installations of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", + "responses": { + "200": { + "description": "App installations list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appInstallationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listInstallations", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/list-installations.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip}", + "scope": [ + "apps.read", + "apps.installations.read" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + } + }, + "\/apps\/{appId}\/installations\/{installationId}": { + "get": { + "summary": "Get Installation", + "operationId": "appsGetInstallation", + "tags": [ + "apps" + ], + "description": "Get an installation of an application by its unique ID. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", + "responses": { + "200": { + "description": "AppInstallation", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appInstallation" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getInstallation", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/get-installation.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip}", + "scope": [ + "apps.read", + "apps.installations.read" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete Installation", + "operationId": "appsDeleteInstallation", + "tags": [ + "apps" + ], + "description": "Delete an installation of an application by its unique ID. Requires a caller with update access to the app. Previously issued installation access tokens are revoked.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteInstallation", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/delete-installation.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.write", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/apps\/{appId}\/installations\/{installationId}\/tokens": { + "post": { + "summary": "Create Installation Token", + "operationId": "appsCreateInstallationToken", + "tags": [ + "apps" + ], + "description": "Create a token for an installation of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app. The returned token carries the scopes and authorization details granted to the installation, and can be used as an `Authorization: Bearer` header everywhere OAuth2 access tokens are accepted. Multiple tokens can be active for the same installation at once; each token stays valid until it expires or the installation is updated or deleted.", + "responses": { + "201": { + "description": "OAuth2 Token", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2Token" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createInstallationToken", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/create-installation-token.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip}", + "scope": [ + "apps.write", + "apps.tokens.write" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, "\/apps\/{appId}\/keys": { "get": { "summary": "List App Keys", @@ -14823,7 +15132,7 @@ }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, folder, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", "required": false, "schema": { "type": "array", @@ -14948,6 +15257,12 @@ "type": "string" }, "x-nullable": true + }, + "folder": { + "type": "string", + "description": "Virtual folder to place the file in, for example \"photos\/2026\". Nest folders with `\/`. Defaults to the bucket root.", + "default": "", + "x-example": null } }, "required": [ @@ -19856,7 +20171,7 @@ }, { "name": "apps", - "description": "" + "description": "The Apps service allows you to manage OAuth2 applications, their keys, secrets, scopes, and installations." }, { "name": "oauth2", @@ -21808,6 +22123,16 @@ "description": "File name.", "x-example": "Pink.png" }, + "folder": { + "type": "string", + "description": "Virtual folder containing the file, with a trailing slash. Empty for the bucket root.", + "x-example": "photos\/2026\/" + }, + "key": { + "type": "string", + "description": "Full virtual path of the file: the folder followed by the file name.", + "x-example": "photos\/2026\/Pink.png" + }, "signature": { "type": "string", "description": "File MD5 signature.", @@ -21860,6 +22185,8 @@ "$updatedAt", "$permissions", "name", + "folder", + "key", "signature", "mimeType", "sizeOriginal", @@ -21878,6 +22205,8 @@ "read(\"any\")" ], "name": "Pink.png", + "folder": "photos\/2026\/", + "key": "photos\/2026\/Pink.png", "signature": "5d529fd02b544198ae075bd57c1762bb", "mimeType": "image\/png", "sizeOriginal": 17890, diff --git a/specs/1.9.x/open-api3-1.9.x-console.json b/specs/1.9.x/open-api3-1.9.x-console.json index a3ee707de..0d099d8c6 100644 --- a/specs/1.9.x/open-api3-1.9.x-console.json +++ b/specs/1.9.x/open-api3-1.9.x-console.json @@ -6006,7 +6006,10 @@ "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on attributes such as userId, teamId, etc.", "required": false, "schema": { - "type": "string", + "type": "array", + "items": { + "type": "string" + }, "default": [] }, "in": "query" @@ -6795,21 +6798,21 @@ ] } }, - "\/apps\/{appId}\/keys": { + "\/apps\/{appId}\/installations": { "get": { - "summary": "List App Keys", - "operationId": "appsListKeys", + "summary": "List Installations", + "operationId": "appsListInstallations", "tags": [ "apps" ], - "description": "List app keys for an application.", + "description": "List installations of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", "responses": { "200": { - "description": "App keys list", + "description": "App installations list", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/appKeyList" + "$ref": "#\/components\/schemas\/appInstallationList" } } } @@ -6817,15 +6820,18 @@ }, "deprecated": false, "x-appwrite": { - "method": "listKeys", - "group": "keys", + "method": "listInstallations", + "group": "installations", "cookies": false, "type": "", - "demo": "apps\/list-keys.md", + "demo": "apps\/list-installations.md", "rate-limit": 120, "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "apps.read", + "rate-key": "ip:{ip}", + "scope": [ + "apps.read", + "apps.installations.read" + ], "platforms": [ "console", "client", @@ -6881,85 +6887,23 @@ "in": "query" } ] - }, - "post": { - "summary": "Create App Key", - "operationId": "appsCreateKey", - "tags": [ - "apps" - ], - "description": "Create a new app key for an application. App keys carry no scopes; send one in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header to list the application's installations and create installation access tokens.", - "responses": { - "201": { - "description": "AppKey", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/appKey" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createKey", - "group": "keys", - "cookies": false, - "type": "", - "demo": "apps\/create-key.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "apps.write", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "appId", - "description": "Application unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] } }, - "\/apps\/{appId}\/keys\/{keyId}": { + "\/apps\/{appId}\/installations\/{installationId}": { "get": { - "summary": "Get App Key", - "operationId": "appsGetKey", + "summary": "Get Installation", + "operationId": "appsGetInstallation", "tags": [ "apps" ], - "description": "Get an app key by its unique ID.", + "description": "Get an installation of an application by its unique ID. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", "responses": { "200": { - "description": "AppKey", + "description": "AppInstallation", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/appKey" + "$ref": "#\/components\/schemas\/appInstallation" } } } @@ -6967,15 +6911,18 @@ }, "deprecated": false, "x-appwrite": { - "method": "getKey", - "group": "keys", + "method": "getInstallation", + "group": "installations", "cookies": false, "type": "", - "demo": "apps\/get-key.md", + "demo": "apps\/get-installation.md", "rate-limit": 120, "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "apps.read", + "rate-key": "ip:{ip}", + "scope": [ + "apps.read", + "apps.installations.read" + ], "platforms": [ "console", "client", @@ -7007,24 +6954,24 @@ "in": "path" }, { - "name": "keyId", - "description": "App key unique ID.", + "name": "installationId", + "description": "Installation unique ID.", "required": true, "schema": { "type": "string", - "x-example": "" + "x-example": "" }, "in": "path" } ] }, "delete": { - "summary": "Delete App Key", - "operationId": "appsDeleteKey", + "summary": "Delete Installation", + "operationId": "appsDeleteInstallation", "tags": [ "apps" ], - "description": "Delete an app key by its unique ID.", + "description": "Delete an installation of an application by its unique ID. Requires a caller with update access to the app. Previously issued installation access tokens are revoked.", "responses": { "204": { "description": "No content" @@ -7032,11 +6979,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "deleteKey", - "group": "keys", + "method": "deleteInstallation", + "group": "installations", "cookies": false, "type": "", - "demo": "apps\/delete-key.md", + "demo": "apps\/delete-installation.md", "rate-limit": 60, "rate-time": 60, "rate-key": "ip:{ip},userId:{userId}", @@ -7075,163 +7022,532 @@ "in": "path" }, { - "name": "keyId", - "description": "App key unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ] - } - }, - "\/apps\/{appId}\/labels": { - "put": { - "summary": "Update Application Labels", - "operationId": "appsUpdateLabels", - "tags": [ - "apps" - ], - "description": "Update the labels of an application. Labels are read-only for clients; only a server SDK using a project API key can set them. Replaces the previous labels.", - "responses": { - "200": { - "description": "App", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/app" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "updateLabels", - "group": "apps", - "cookies": false, - "type": "", - "demo": "apps\/update-labels.md", - "rate-limit": 60, - "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "apps.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "appId", - "description": "Application unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "labels": { - "type": "array", - "description": "Array of application labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.", - "x-example": null, - "items": { - "type": "string" - } - } - }, - "required": [ - "labels" - ] - } - } - } - } - } - }, - "\/apps\/{appId}\/secrets": { - "get": { - "summary": "List Secrets", - "operationId": "appsListSecrets", - "tags": [ - "apps" - ], - "description": "List client secrets for an application.", - "responses": { - "200": { - "description": "App secrets list", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/appSecretList" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "listSecrets", - "group": "secrets", - "cookies": false, - "type": "", - "demo": "apps\/list-secrets.md", - "rate-limit": 120, - "rate-time": 60, - "rate-key": "ip:{ip},userId:{userId}", - "scope": "apps.read", - "platforms": [ - "console", - "client", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Session": [], - "Key": [], - "JWT": [] - } - ], - "parameters": [ - { - "name": "appId", - "description": "Application unique ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - }, - { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/apps\/{appId}\/installations\/{installationId}\/tokens": { + "post": { + "summary": "Create Installation Token", + "operationId": "appsCreateInstallationToken", + "tags": [ + "apps" + ], + "description": "Create a token for an installation of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app. The returned token carries the scopes and authorization details granted to the installation, and can be used as an `Authorization: Bearer` header everywhere OAuth2 access tokens are accepted. Multiple tokens can be active for the same installation at once; each token stays valid until it expires or the installation is updated or deleted.", + "responses": { + "201": { + "description": "OAuth2 Token", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/oauth2Token" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createInstallationToken", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/create-installation-token.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip}", + "scope": [ + "apps.write", + "apps.tokens.write" + ], + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/apps\/{appId}\/keys": { + "get": { + "summary": "List App Keys", + "operationId": "appsListKeys", + "tags": [ + "apps" + ], + "description": "List app keys for an application.", + "responses": { + "200": { + "description": "App keys list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appKeyList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listKeys", + "group": "keys", + "cookies": false, + "type": "", + "demo": "apps\/list-keys.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + }, + { + "name": "total", + "description": "When set to false, the total count returned will be 0 and will not be calculated.", + "required": false, + "schema": { + "type": "boolean", + "x-example": false, + "default": true + }, + "in": "query" + } + ] + }, + "post": { + "summary": "Create App Key", + "operationId": "appsCreateKey", + "tags": [ + "apps" + ], + "description": "Create a new app key for an application. App keys carry no scopes; send one in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header to list the application's installations and create installation access tokens.", + "responses": { + "201": { + "description": "AppKey", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appKey" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createKey", + "group": "keys", + "cookies": false, + "type": "", + "demo": "apps\/create-key.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.write", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/apps\/{appId}\/keys\/{keyId}": { + "get": { + "summary": "Get App Key", + "operationId": "appsGetKey", + "tags": [ + "apps" + ], + "description": "Get an app key by its unique ID.", + "responses": { + "200": { + "description": "AppKey", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appKey" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getKey", + "group": "keys", + "cookies": false, + "type": "", + "demo": "apps\/get-key.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "keyId", + "description": "App key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete App Key", + "operationId": "appsDeleteKey", + "tags": [ + "apps" + ], + "description": "Delete an app key by its unique ID.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteKey", + "group": "keys", + "cookies": false, + "type": "", + "demo": "apps\/delete-key.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.write", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "keyId", + "description": "App key unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/apps\/{appId}\/labels": { + "put": { + "summary": "Update Application Labels", + "operationId": "appsUpdateLabels", + "tags": [ + "apps" + ], + "description": "Update the labels of an application. Labels are read-only for clients; only a server SDK using a project API key can set them. Replaces the previous labels.", + "responses": { + "200": { + "description": "App", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/app" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateLabels", + "group": "apps", + "cookies": false, + "type": "", + "demo": "apps\/update-labels.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "labels": { + "type": "array", + "description": "Array of application labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long.", + "x-example": null, + "items": { + "type": "string" + } + } + }, + "required": [ + "labels" + ] + } + } + } + } + } + }, + "\/apps\/{appId}\/secrets": { + "get": { + "summary": "List Secrets", + "operationId": "appsListSecrets", + "tags": [ + "apps" + ], + "description": "List client secrets for an application.", + "responses": { + "200": { + "description": "App secrets list", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/appSecretList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listSecrets", + "group": "secrets", + "cookies": false, + "type": "", + "demo": "apps\/list-secrets.md", + "rate-limit": 120, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.read", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { "name": "queries", "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long.", "required": false, @@ -10670,7 +10986,7 @@ "tags": [ "backups" ], - "description": "Create and trigger a new restoration for a backup on a project.\n\nFor a backup of one database, the restoration resolves its destination before it is queued. Pass `newResourceId` to restore into that database ID, including the archived database ID to overwrite it. When `newResourceId` is omitted, a new database ID is generated and returned in `options`.\n\nThe restoration migration records the archived database in `resourceId` and `resourceType`, and the resolved database in `destinationResourceId` and `destinationResourceType`. Database types are stored canonically as `database`, `documentsdb`, or `vectorsdb`. Project-wide restorations leave these fields empty because they do not have a single source or destination database.\n\nTo list every migration related to one database, use its canonical type in a nested `OR(AND(...), AND(...), AND(...))` across the root, parent, and destination relation pairs: `(resourceType, resourceId)`, `(parentResourceType, parentResourceId)`, and `(destinationResourceType, destinationResourceId)`. Legacy and TablesDB databases use `database`; the operational `resourceType` of a table migration is not rewritten to `tablesdb`.\n\nWhen restoring a DocumentsDB or VectorsDB database to a new resource from a dedicated source, the restore provisions a fresh dedicated backing database at the source database's own specification.\n", + "description": "Create and trigger a new restoration for a backup on a project.\n\nFor a backup of one database, the restoration resolves its destination before it is queued. When `newResourceId` is omitted, the archived database is restored in place and its own ID is returned in `options`. Pass a different `newResourceId` to restore alongside it as a new database instead.\n\nThe restoration migration records the archived database in `resourceId` and `resourceType`, and the resolved database in `destinationResourceId` and `destinationResourceType`. Database types are stored canonically as `database`, `documentsdb`, or `vectorsdb`. Project-wide restorations leave these fields empty because they do not have a single source or destination database.\n\nTo list every migration related to one database, use its canonical type in a nested `OR(AND(...), AND(...), AND(...))` across the root, parent, and destination relation pairs: `(resourceType, resourceId)`, `(parentResourceType, parentResourceId)`, and `(destinationResourceType, destinationResourceId)`. Legacy and TablesDB databases use `database`; the operational `resourceType` of a table migration is not rewritten to `tablesdb`.\n\nWhen restoring a DocumentsDB or VectorsDB database from a dedicated source, the restore provisions a fresh dedicated backing database at the source database's own specification and lands the data there. An in-place restore swaps the database onto that backing only once the restore has succeeded, and retires the backing it displaced only once that swap is confirmed, so the source keeps serving its own data until the restored data is in place and any failure leaves it untouched. A serverless source has no dedicated backing to clone and restores onto the archived database instead.\n", "responses": { "201": { "description": "Restoration", @@ -10751,7 +11067,7 @@ }, "newResourceId": { "type": "string", - "description": "Destination resource ID. Omit to generate a new ID, or pass the archived resource ID to overwrite it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.", + "description": "Destination resource ID. Omit to restore the archived resource in place, or pass a different ID to restore alongside it as a new resource. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.", "default": "", "x-example": "", "x-appwrite": { @@ -20864,6 +21180,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -21406,12 +21728,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -23643,103 +23977,198 @@ "in": "path" }, { - "name": "collectionId", - "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", - "required": true, + "name": "collectionId", + "description": "Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "key", + "description": "Index Key.", + "required": true, + "schema": { + "type": "string" + }, + "in": "path" + } + ] + } + }, + "\/documentsdb\/{databaseId}\/failovers": { + "post": { + "summary": "Create failover", + "operationId": "documentsDBCreateFailover", + "tags": [ + "documentsDB" + ], + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", + "responses": { + "202": { + "description": "DedicatedDatabase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabase" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createFailover", + "group": "failovers", + "cookies": false, + "type": "", + "demo": "documentsdb\/create-failover.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "targetReplicaId": { + "type": "string", + "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", + "x-example": "", + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/documentsdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "documentsDBListOperations", + "tags": [ + "documentsDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "documentsdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, "schema": { "type": "string", - "x-example": "" + "x-example": "running" }, - "in": "path" + "in": "query" }, { - "name": "key", - "description": "Index Key.", - "required": true, + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 }, - "in": "path" - } - ] - } - }, - "\/documentsdb\/{databaseId}\/failovers": { - "post": { - "summary": "Create failover", - "operationId": "documentsDBCreateFailover", - "tags": [ - "documentsDB" - ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", - "responses": { - "202": { - "description": "DedicatedDatabase", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "createFailover", - "group": "failovers", - "cookies": false, - "type": "", - "demo": "documentsdb\/create-failover.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ + "in": "query" + }, { - "name": "databaseId", - "description": "Database ID.", - "required": true, + "name": "offset", + "description": "Number of operations to skip.", + "required": false, "schema": { - "type": "string", - "x-example": "" + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "targetReplicaId": { - "type": "string", - "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", - "x-example": "", - "x-nullable": true - } - } - } - } + "in": "query" } - } + ] } }, "\/documentsdb\/{databaseId}\/replicas": { @@ -28435,6 +28864,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -28456,6 +28886,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -28529,6 +28962,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -28550,6 +28984,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -29144,6 +29581,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -29165,6 +29603,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -29238,6 +29679,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -29259,6 +29701,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -29598,6 +30043,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -29619,6 +30065,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -29692,6 +30141,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -29713,6 +30163,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -40460,11 +40913,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -41976,7 +42424,7 @@ "tags": [ "mongo" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -42220,6 +42668,101 @@ } } }, + "\/mongo\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "mongoListOperations", + "tags": [ + "mongo" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "mongo\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/mongo\/{databaseId}\/pitr": { "get": { "summary": "Get PITR", @@ -42962,11 +43505,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -44572,7 +45110,7 @@ "tags": [ "mysql" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -44630,27 +45168,114 @@ "schema": { "type": "object", "properties": { - "targetReplicaId": { + "targetReplicaId": { + "type": "string", + "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", + "x-example": "", + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/mysql\/{databaseId}\/maintenance": { + "patch": { + "summary": "Update maintenance", + "operationId": "mysqlUpdateMaintenance", + "tags": [ + "mysql" + ], + "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", + "responses": { + "200": { + "description": "DedicatedDatabase", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabase" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateMaintenance", + "group": "mysql", + "cookies": false, + "type": "", + "demo": "mysql\/update-maintenance.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "day": { "type": "string", - "description": "Target replica ID to promote. If not specified, the healthiest replica is selected.", - "x-example": "", - "x-nullable": true + "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", + "x-example": "sun" + }, + "hourUtc": { + "type": "integer", + "description": "Hour in UTC (0-23) for maintenance window start.", + "x-example": 0, + "format": "int32" } - } + }, + "required": [ + "day", + "hourUtc" + ] } } } } } }, - "\/mysql\/{databaseId}\/maintenance": { - "patch": { - "summary": "Update maintenance", - "operationId": "mysqlUpdateMaintenance", + "\/mysql\/{databaseId}\/migrations": { + "post": { + "summary": "Create migration", + "operationId": "mysqlCreateMigration", "tags": [ "mysql" ], - "description": "Update the maintenance window for a dedicated database. Maintenance operations like minor version upgrades will be performed during this window.", + "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", "responses": { "200": { "description": "DedicatedDatabase", @@ -44665,11 +45290,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "updateMaintenance", - "group": "mysql", + "method": "createMigration", + "group": "migrations", "cookies": false, "type": "", - "demo": "mysql\/update-maintenance.md", + "demo": "mysql\/create-migration.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -44708,21 +45333,20 @@ "schema": { "type": "object", "properties": { - "day": { + "targetType": { "type": "string", - "description": "Day of the week for the maintenance window. Allowed values: sun, mon, tue, wed, thu, fri, sat.", - "x-example": "sun" + "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", + "x-example": "shared" }, - "hourUtc": { - "type": "integer", - "description": "Hour in UTC (0-23) for maintenance window start.", - "x-example": 0, - "format": "int32" + "specification": { + "type": "string", + "description": "Target specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", + "x-example": "", + "x-nullable": true } }, "required": [ - "day", - "hourUtc" + "targetType" ] } } @@ -44730,21 +45354,21 @@ } } }, - "\/mysql\/{databaseId}\/migrations": { - "post": { - "summary": "Create migration", - "operationId": "mysqlCreateMigration", + "\/mysql\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "mysqlListOperations", "tags": [ "mysql" ], - "description": "Migrate a database between shared and dedicated types. Shared to dedicated provisions an always-on dedicated instance; dedicated to shared converts to a serverless instance that scales to zero when idle. Data is copied to the target with a brief read-only window during cutover.", + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", "responses": { "200": { - "description": "DedicatedDatabase", + "description": "OperationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabase" + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" } } } @@ -44752,15 +45376,15 @@ }, "deprecated": false, "x-appwrite": { - "method": "createMigration", - "group": "migrations", + "method": "listOperations", + "group": "operations", "cookies": false, "type": "", - "demo": "mysql\/create-migration.md", + "demo": "mysql\/list-operations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", + "scope": "databases.read", "platforms": [ "console", "server" @@ -44787,33 +45411,42 @@ "x-example": "" }, "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "targetType": { - "type": "string", - "description": "Target database type to migrate to. Allowed values: shared (serverless, scales to zero when idle), dedicated (always-on with persistent resources).", - "x-example": "shared" - }, - "specification": { - "type": "string", - "description": "Target specification to provision when migrating to dedicated. Ignored for shared. Defaults to the database's current specification.", - "x-example": "", - "x-nullable": true - } - }, - "required": [ - "targetType" - ] - } - } - } - } + ] } }, "\/mysql\/{databaseId}\/pitr": { @@ -45009,7 +45642,7 @@ }, "maxConnections": { "type": "integer", - "description": "Maximum pooled connections.", + "description": "Client-connection ceiling the pooler accepts. Supported on MySQL and MariaDB only; the PostgreSQL pooler has no client cap, so set networkMaxConnections on the database instead.", "x-example": 10, "format": "int32", "x-nullable": true @@ -47345,7 +47978,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ] }, @@ -47392,7 +48026,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -47451,7 +48086,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ] } @@ -47503,7 +48139,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -47579,7 +48216,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "requestBody": { @@ -47656,7 +48294,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -47718,7 +48357,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -47793,7 +48433,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -47854,7 +48495,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -47927,7 +48569,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -48057,7 +48700,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48116,7 +48760,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48240,7 +48885,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48301,7 +48947,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48385,7 +49032,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -48489,7 +49137,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48548,7 +49197,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48622,7 +49272,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48683,7 +49334,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48767,7 +49419,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -48863,7 +49516,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48922,7 +49576,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -48993,7 +49648,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -52685,11 +53341,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -54505,7 +55156,7 @@ "tags": [ "postgresql" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -54749,6 +55400,101 @@ } } }, + "\/postgresql\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "postgresqlListOperations", + "tags": [ + "postgresql" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "postgresql\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/postgresql\/{databaseId}\/pitr": { "get": { "summary": "Get PITR", @@ -54942,7 +55688,7 @@ }, "maxConnections": { "type": "integer", - "description": "Maximum pooled connections.", + "description": "Client-connection ceiling the pooler accepts. Supported on MySQL and MariaDB only; the PostgreSQL pooler has no client cap, so set networkMaxConnections on the database instead.", "x-example": 10, "format": "int32", "x-nullable": true @@ -63412,7 +64158,7 @@ "properties": { "total": { "type": "integer", - "description": "Set the password history length per user. Value can be between 1 and 5000, or null to disable the limit.", + "description": "Set the password history length per user. Value can be between 1 and 20, or null to disable the limit.", "x-example": 1, "format": "int32", "x-nullable": true @@ -63716,8 +64462,8 @@ "properties": { "duration": { "type": "integer", - "description": "Maximum session length in seconds. Minium allowed value is 5 second, and maximum is 1 year, which is 31536000 seconds.", - "x-example": 5, + "description": "Maximum session length in seconds. Minium allowed value is 60 seconds, and maximum is 1 year, which is 31536000 seconds.", + "x-example": 60, "format": "int32" } }, @@ -63859,10 +64605,9 @@ "properties": { "total": { "type": "integer", - "description": "Set the maximum number of sessions allowed per user. Value can be between 1 and 5000, or null to disable the limit.", + "description": "Set the maximum number of sessions allowed per user. Value can be between 1 and 100.", "x-example": 1, - "format": "int32", - "x-nullable": true + "format": "int32" } }, "required": [ @@ -63932,8 +64677,8 @@ "properties": { "total": { "type": "integer", - "description": "Set the maximum number of users allowed in the project. Value can be between 1 and 5000, or null to disable the limit.", - "x-example": 1, + "description": "Set the maximum number of users allowed in the project. Value can be between 0 and 10000. Use 0 or null to disable the limit.", + "x-example": 0, "format": "int32", "x-nullable": true } @@ -68308,6 +69053,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -68329,6 +69075,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -68402,6 +69151,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -68423,6 +69173,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -69139,6 +69892,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -69160,6 +69914,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -69233,6 +69990,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -69254,6 +70012,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -71173,7 +71934,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", "default": {}, "x-example": 1, "format": "int32" @@ -71387,7 +72148,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", "default": {}, "x-example": 1, "format": "int32" @@ -71563,7 +72324,7 @@ }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, folder, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", "required": false, "schema": { "type": "array", @@ -71689,6 +72450,12 @@ "type": "string" }, "x-nullable": true + }, + "folder": { + "type": "string", + "description": "Virtual folder to place the file in, for example \"photos\/2026\". Nest folders with `\/`. Defaults to the bucket root.", + "default": "", + "x-example": null } }, "required": [ @@ -72544,6 +73311,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -73189,12 +73962,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } } } @@ -73263,7 +74048,7 @@ "tags": [ "tablesDB" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -73601,6 +74386,101 @@ ] } }, + "\/tablesdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "tablesDBListOperations", + "tags": [ + "tablesDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "tablesdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/tablesdb\/{databaseId}\/replicas": { "get": { "summary": "Get replicas", @@ -82870,7 +83750,7 @@ "tags": [ "usage" ], - "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resourceType`, `ordinal`. `service` and `resourceType` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). `ordinal` separates per-node series for multi-node resources such as dedicated databases (0 is the primary; 1+ are replicas). `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resourceType\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `equal(\"ordinal\", [\"0\"])`, `isNotNull(\"teamId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", + "description": "Aggregate usage gauge snapshots. Gauges are point-in-time values (storage totals, resource counts, \u2026); each point carries the latest snapshot in its interval via `argMax(value, time)`. `metrics[]` (1-10) is required; the response always contains one entry per requested metric, each with its own `points[]` time series.\n\nA metric with no stored samples in the window returns an empty `points[]`. A metric that really did read zero returns a point whose `value` is `0`, so \"no such series\" and \"a genuine zero\" are different answers.\n\n**Two response shapes**:\n- Omit `interval` for a flat top-N table \u2014 `argMax(value, time)` per dimension combination over the whole window, no time axis. Useful for \"top 10 resources by current storage\".\n- Pass `interval` (`1m`, `15m`, `30m`, `1h`, `1d`) for a time series \u2014 one snapshot per (time bucket \u00d7 dimension combination).\n\n`dimensions[]` breaks each point down further. Supported on gauges: `resourceId`, `teamId`, `service`, `resourceType`, `ordinal`. `service` and `resourceType` enable per-service \/ per-resource-type panels (e.g. storage-by-service: group `files.storage`, `deployments.storage`, `builds.storage`, `databases.storage` by `service`). `ordinal` separates per-node series for multi-node resources such as dedicated databases (0 is the primary; 1+ are replicas). `queries[]` filters the underlying rows using the standard Utopia query syntax \u2014 `equal(\"resourceType\", [\"bucket\"])`, `equal(\"resourceId\", [\"abc123\"])`, `equal(\"teamId\", [\"team_x\"])`, `equal(\"ordinal\", [\"0\"])`, `isNotNull(\"teamId\")`. Supported attributes: see `queries[]` param. Supported methods: `equal`, `notEqual`, `isNull`, `isNotNull`. Pass multiple metrics to render stacked charts in one round-trip. `orderBy=value`+`orderDir=desc`+`limit=N` returns the top-N. When `startAt` is omitted, the default window adapts to interval (or 7d when interval is omitted).", "responses": { "200": { "description": "usageGaugeList", @@ -87165,7 +88045,7 @@ }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit, offset, and equal on namespace.", "required": false, "schema": { "type": "array", @@ -87250,6 +88130,12 @@ "type": "boolean", "description": "Mark repository public or private", "x-example": false + }, + "providerNamespace": { + "type": "string", + "description": "Namespace of the git repository. Defaults to the installation's own namespace.", + "default": "", + "x-example": "" } }, "required": [ @@ -87799,6 +88685,89 @@ ] } }, + "\/vcs\/installations\/{installationId}\/namespaces": { + "get": { + "summary": "List namespaces", + "operationId": "vcsListNamespaces", + "tags": [ + "vcs" + ], + "description": "List provider namespaces available to a VCS installation. This can include the user personal namespace and any groups or organizations the installation can browse.", + "responses": { + "200": { + "description": "VCS Namespaces List", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/vcsNamespaceList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listNamespaces", + "group": "namespaces", + "cookies": false, + "type": "", + "demo": "vcs\/list-namespaces.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "vcs.read", + "platforms": [ + "console" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [] + } + ], + "parameters": [ + { + "name": "installationId", + "description": "Installation Id", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "search", + "description": "Search term to filter your list results. Max length: 256 chars.", + "required": false, + "schema": { + "type": "string", + "x-example": "", + "default": "" + }, + "in": "query" + }, + { + "name": "queries", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Only supported methods are limit and offset", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "in": "query" + } + ] + } + }, "\/vectorsdb": { "get": { "summary": "List databases", @@ -87958,6 +88927,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -88703,12 +89678,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -90832,7 +91819,7 @@ "tags": [ "vectorsDB" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -90903,6 +91890,101 @@ } } }, + "\/vectorsdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "vectorsDBListOperations", + "tags": [ + "vectorsDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "vectorsdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/vectorsdb\/{databaseId}\/replicas": { "get": { "summary": "Get replicas", @@ -91119,7 +92201,7 @@ "tags": [ "waf" ], - "description": "Create a bypass WAF rule.\n", + "description": "Create a bypass WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleBypass", @@ -91234,7 +92316,7 @@ "tags": [ "waf" ], - "description": "Update a bypass WAF rule.\n", + "description": "Update a bypass WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleBypass", @@ -91343,6 +92425,277 @@ } } }, + "\/waf\/rules\/challenge": { + "post": { + "summary": "Create a challenge WAF rule.", + "operationId": "wafCreateChallengeRule", + "tags": [ + "waf" + ], + "description": "Create a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to tune the client-side proof-of-work cost, and `ttl` to control how long, in seconds, a visitor stays cleared after passing the challenge before being challenged again. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", + "responses": { + "201": { + "description": "WafRuleChallenge", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/wafRuleChallenge" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createChallengeRule", + "group": "rules", + "cookies": false, + "type": "", + "demo": "waf\/create-challenge-rule.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "wafRules.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/waf\/create-challenge-rule.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "ruleId": { + "type": "string", + "description": "Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "resourceType": { + "type": "string", + "description": "Resource type the rule applies to.", + "x-example": "api" + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Required for functions and sites.", + "x-example": "", + "x-nullable": true + }, + "name": { + "type": "string", + "description": "Rule name.", + "x-example": "" + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "default": "", + "x-example": "" + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced by the rule.", + "default": "compute", + "x-example": "compute" + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower numbers run earlier.", + "default": 0, + "x-example": -100000, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Set to false to create the rule in a disabled state.", + "default": true, + "x-example": false + }, + "conditions": { + "type": "string", + "description": "Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.", + "default": [], + "x-example": null + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.", + "default": 3, + "x-example": 1, + "format": "int32" + }, + "ttl": { + "type": "integer", + "description": "How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.", + "default": 1800, + "x-example": 900, + "format": "int32" + } + }, + "required": [ + "ruleId", + "resourceType", + "name" + ] + } + } + } + } + } + }, + "\/waf\/rules\/challenge\/{ruleId}": { + "patch": { + "summary": "Update a challenge WAF rule.", + "operationId": "wafUpdateChallengeRule", + "tags": [ + "waf" + ], + "description": "Update a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to tune the client-side proof-of-work cost, and `ttl` to control how long, in seconds, a visitor stays cleared after passing the challenge before being challenged again. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", + "responses": { + "200": { + "description": "WafRuleChallenge", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/wafRuleChallenge" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateChallengeRule", + "group": "rules", + "cookies": false, + "type": "", + "demo": "waf\/update-challenge-rule.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "wafRules.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/waf\/update-challenge-rule.md", + "auth": { + "Project": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "ruleId", + "description": "Rule ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resourceType": { + "type": "string", + "description": "Resource type the rule applies to.", + "x-example": "api", + "x-nullable": true + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Required for functions and sites.", + "x-example": "", + "x-nullable": true + }, + "name": { + "type": "string", + "description": "Rule name.", + "x-example": "", + "x-nullable": true + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "x-example": "", + "x-nullable": true + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced by the rule.", + "x-example": "compute", + "x-nullable": true + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower numbers run earlier.", + "x-example": -100000, + "format": "int32", + "x-nullable": true + }, + "enabled": { + "type": "boolean", + "description": "Set to false to disable the rule.", + "x-example": false, + "x-nullable": true + }, + "conditions": { + "type": "string", + "description": "Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.", + "x-example": null, + "x-nullable": true + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "ttl": { + "type": "integer", + "description": "How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.", + "x-example": 900, + "format": "int32", + "x-nullable": true + } + } + } + } + } + } + } + }, "\/waf\/rules\/deny": { "post": { "summary": "Create a deny WAF rule.", @@ -91350,7 +92703,7 @@ "tags": [ "waf" ], - "description": "Create a deny WAF rule.\n", + "description": "Create a deny WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleDeny", @@ -91465,7 +92818,7 @@ "tags": [ "waf" ], - "description": "Update a deny WAF rule.\n", + "description": "Update a deny WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleDeny", @@ -91581,7 +92934,7 @@ "tags": [ "waf" ], - "description": "Create a rate limit WAF rule.\n", + "description": "Create a rate limit WAF rule. Use `key` to choose the counter: `ip` limits per client IP, while `userId` limits per authenticated user (requests without an authenticated user skip `userId` rules). Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleRateLimit", @@ -91670,6 +93023,12 @@ "x-example": 1, "format": "int32" }, + "key": { + "type": "string", + "description": "Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.", + "default": "ip", + "x-example": "ip" + }, "priority": { "type": "integer", "description": "Evaluation priority. Lower numbers run earlier.", @@ -91710,7 +93069,7 @@ "tags": [ "waf" ], - "description": "Update a rate limit WAF rule.\n", + "description": "Update a rate limit WAF rule. Use `key` to choose the counter: `ip` limits per client IP, while `userId` limits per authenticated user (requests without an authenticated user skip `userId` rules). Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleRateLimit", @@ -91807,6 +93166,12 @@ "format": "int32", "x-nullable": true }, + "key": { + "type": "string", + "description": "Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.", + "x-example": "ip", + "x-nullable": true + }, "priority": { "type": "integer", "description": "Evaluation priority. Lower numbers run earlier.", @@ -91840,7 +93205,7 @@ "tags": [ "waf" ], - "description": "Create a redirect WAF rule.\n", + "description": "Create a redirect WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleRedirect", @@ -91968,7 +93333,7 @@ "tags": [ "waf" ], - "description": "Update a redirect WAF rule.\n", + "description": "Update a redirect WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleRedirect", @@ -92833,7 +94198,7 @@ }, { "name": "apps", - "description": "" + "description": "The Apps service allows you to manage OAuth2 applications, their keys, secrets, scopes, and installations." }, { "name": "oauth2", @@ -93598,6 +94963,79 @@ "type": "runtime" } }, + "vcsNamespace": { + "description": "VcsNamespace", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "VCS (Version Control System) namespace ID.", + "x-example": "5e5ea5c16897e" + }, + "name": { + "type": "string", + "description": "VCS (Version Control System) namespace display name.", + "x-example": "Appwrite" + }, + "path": { + "type": "string", + "description": "VCS (Version Control System) namespace path, used to filter repositories by namespace.", + "x-example": "appwrite" + }, + "type": { + "type": "string", + "description": "Namespace type. Either the user's personal namespace or a group\/organization.", + "x-example": "user" + }, + "avatarUrl": { + "type": "string", + "description": "Namespace avatar URL.", + "x-example": "https:\/\/example.com\/avatar.png" + } + }, + "required": [ + "$id", + "name", + "path", + "type", + "avatarUrl" + ], + "example": { + "$id": "5e5ea5c16897e", + "name": "Appwrite", + "path": "appwrite", + "type": "user", + "avatarUrl": "https:\/\/example.com\/avatar.png" + } + }, + "vcsNamespaceList": { + "description": "VCS Namespaces List", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of namespaces that matched your query.", + "x-example": 5, + "format": "int32" + }, + "namespaces": { + "type": "array", + "description": "List of namespaces.", + "items": { + "$ref": "#\/components\/schemas\/vcsNamespace" + }, + "x-example": "" + } + }, + "required": [ + "total", + "namespaces" + ], + "example": { + "total": 5, + "namespaces": "" + } + }, "branchList": { "description": "Branches List", "type": "object", @@ -94702,7 +96140,7 @@ }, "engine": { "type": "string", - "description": "Underlying engine of the dedicated backing: postgresql, mysql, mariadb, or mongodb. A managed product (tablesdb, documentsdb, vectorsdb) reports the engine it runs on, so its type and engine can differ. Null when the database has no dedicated backing.", + "description": "Underlying engine of the dedicated backing: postgresql, mysql, or mongodb. A managed product (tablesdb, documentsdb, vectorsdb) reports the engine it runs on, so its type and engine can differ. Null when the database has no dedicated backing.", "x-example": "postgresql", "readOnly": true, "nullable": true @@ -101112,6 +102550,16 @@ "description": "File name.", "x-example": "Pink.png" }, + "folder": { + "type": "string", + "description": "Virtual folder containing the file, with a trailing slash. Empty for the bucket root.", + "x-example": "photos\/2026\/" + }, + "key": { + "type": "string", + "description": "Full virtual path of the file: the folder followed by the file name.", + "x-example": "photos\/2026\/Pink.png" + }, "signature": { "type": "string", "description": "File MD5 signature.", @@ -101164,6 +102612,8 @@ "$updatedAt", "$permissions", "name", + "folder", + "key", "signature", "mimeType", "sizeOriginal", @@ -101182,6 +102632,8 @@ "read(\"any\")" ], "name": "Pink.png", + "folder": "photos\/2026\/", + "key": "photos\/2026\/Pink.png", "signature": "5d529fd02b544198ae075bd57c1762bb", "mimeType": "image\/png", "sizeOriginal": 17890, @@ -111054,6 +112506,16 @@ "description": "Backup type. Possible values: full (complete database snapshot), incremental (changes since last backup), wal (write-ahead log continuous archival).", "x-example": "full" }, + "requestedType": { + "type": "string", + "description": "Backup type that was requested. Differs from `type` when the backend could not run the requested type and took a different one instead, in which case `fallbackReason` explains why. Empty for backups taken before the requested type was recorded.", + "x-example": "incremental" + }, + "fallbackReason": { + "type": "string", + "description": "Why the backend ran a different backup type than the one requested. Empty when the backup ran as requested.", + "x-example": "PostgreSQL incremental backups are not offered because they cannot be restored: archived WAL is physical and cannot replay onto a logically-restored base. A full backup was taken instead; use a point-in-time restore (targetTime) to recover to a moment between fulls." + }, "status": { "type": "string", "description": "Backup status. Possible values: pending (queued for processing), running (currently in progress), completed (successfully finished), failed (encountered an error), verified (integrity check passed).", @@ -111089,6 +112551,12 @@ "x-example": "2020-10-15T06:38:00.000+00:00", "nullable": true }, + "logPosition": { + "type": "string", + "description": "Transaction-log position the backup anchors at, in the engine's own notation: PostgreSQL `{walSegment}|{lsn}`, MySQL and MariaDB `{binlogFile}|{offset}`, MongoDB `{seconds}|{increment}`. Empty when the backup recorded no position, which is the case for backup types that carry none.", + "x-example": "000000010000000000000003|0\/3000148", + "nullable": true + }, "error": { "type": "string", "description": "Error message if backup failed.", @@ -111103,6 +112571,8 @@ "policyId", "trigger", "type", + "requestedType", + "fallbackReason", "status", "sizeBytes", "error" @@ -111115,12 +112585,15 @@ "policyId": "5e5ea5c16897e", "trigger": "schedule", "type": "full", + "requestedType": "incremental", + "fallbackReason": "PostgreSQL incremental backups are not offered because they cannot be restored: archived WAL is physical and cannot replay onto a logically-restored base. A full backup was taken instead; use a point-in-time restore (targetTime) to recover to a moment between fulls.", "status": "completed", "sizeBytes": 1073741824, "startedAt": "2020-10-15T06:38:00.000+00:00", "completedAt": "2020-10-15T06:38:00.000+00:00", "verifiedAt": "2020-10-15T06:38:00.000+00:00", "expiresAt": "2020-10-15T06:38:00.000+00:00", + "logPosition": "000000010000000000000003|0\/3000148", "error": "" } }, @@ -112408,7 +113881,7 @@ }, "port": { "type": "integer", - "description": "Branch port.", + "description": "Branch port. Null until the backing reports one.", "x-example": 5432, "format": "int32" }, @@ -112434,7 +113907,7 @@ }, "engine": { "type": "string", - "description": "Database engine. Possible values: postgresql, mysql, mariadb, mongodb.", + "description": "Database engine. Possible values: postgresql, mysql, mongodb.", "x-example": "postgresql" }, "connectionString": { @@ -112846,6 +114319,17 @@ "description": "Migration phase. Possible values: pending, provisioned, capturing, backfilling, catching_up, verifying, ready_to_cutover, cutover, soaking, done, failed, rolled_back.", "x-example": "pending" }, + "attempt": { + "type": "integer", + "description": "Number of times a migration step has failed and been recorded.", + "x-example": 0, + "format": "int32" + }, + "lastError": { + "type": "string", + "description": "Reason the most recent migration step failed, empty while none has.", + "x-example": "" + }, "lagDocuments": { "type": "integer", "description": "Number of documents still pending replication to the target.", @@ -112886,6 +114370,8 @@ "databaseId", "specification", "phase", + "attempt", + "lastError", "lagDocuments", "verifiedAt", "cutoverAt", @@ -112901,6 +114387,8 @@ "databaseId": "5e5ea5c16897e", "specification": "s-2vcpu-4gb", "phase": "pending", + "attempt": 0, + "lastError": "", "lagDocuments": 0, "verifiedAt": "2020-10-15T06:38:00.000+00:00", "cutoverAt": "2020-10-15T06:38:00.000+00:00", @@ -112945,7 +114433,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb.", "x-example": "postgresql" }, "version": { @@ -112970,7 +114458,7 @@ }, "connectionPort": { "type": "integer", - "description": "Database port for connections.", + "description": "Database port for connections. Derived from the engine when the backing has not reported one yet.", "x-example": 5432, "format": "int32" }, @@ -113080,7 +114568,7 @@ }, "networkMaxConnections": { "type": "integer", - "description": "Maximum concurrent connections.", + "description": "Maximum concurrent client connections. This is the limit a client pool may reach; the engine's own max_connections reported by the status endpoint is a smaller backend limit the pooler multiplexes onto and does not constrain a client pool.", "x-example": 500, "format": "int32" }, @@ -113487,7 +114975,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb.", "x-example": "postgresql" }, "version": { @@ -113514,9 +115002,42 @@ } ] }, + "syncMode": { + "type": "string", + "description": "Requested replication sync mode. Possible values: async, sync, quorum. Compare with effectiveSyncMode for what the primary is enforcing.", + "x-example": "async" + }, + "effectiveSyncMode": { + "type": "string", + "description": "Replication sync mode the primary is actually enforcing. Null when high availability is disabled or the state could not be read.", + "x-example": "async", + "nullable": true + }, + "syncDegraded": { + "type": "boolean", + "description": "Whether the enforced replication is weaker than the requested syncMode.", + "x-example": false + }, + "syncAcknowledgements": { + "type": "integer", + "description": "Number of standby acknowledgements the primary waits for before a write is committed.", + "x-example": 1, + "format": "int32" + }, + "syncStandbyCount": { + "type": "integer", + "description": "Number of standbys registered with the primary for synchronous replication.", + "x-example": 2, + "format": "int32" + }, + "syncStateConfirmed": { + "type": "boolean", + "description": "Whether the reported sync state was read from the engine. When false the state could not be confirmed and the other sync fields carry no reading.", + "x-example": true + }, "replicas": { "type": "array", - "description": "List of database replicas and their status.", + "description": "List of database replicas and their status. Every configured member appears, including one the backend has not brought up, which is reported as not healthy.", "items": { "$ref": "#\/components\/schemas\/databaseStatusReplica" }, @@ -113558,6 +115079,11 @@ "version", "uptime", "connections", + "syncMode", + "syncDegraded", + "syncAcknowledgements", + "syncStandbyCount", + "syncStateConfirmed", "replicas", "volumes" ], @@ -113571,6 +115097,12 @@ "current": 12, "max": 100 }, + "syncMode": "async", + "effectiveSyncMode": "async", + "syncDegraded": false, + "syncAcknowledgements": 1, + "syncStandbyCount": 2, + "syncStateConfirmed": true, "replicas": [ { "index": 0, @@ -114454,12 +115986,12 @@ }, "role": { "type": "string", - "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower).", + "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower), unknown (placement not established; reported while a transition is moving or restarting the topology and this member has not been probed, so no member can be named the write target).", "x-example": "replica" }, "status": { "type": "string", - "description": "Member pod status. Possible values: provisioning (pod missing or Pending), starting (Running but not Ready), active (Running and Ready), failed (Failed phase or CrashLoopBackOff container), or the lowercased pod phase reported by the cluster.", + "description": "Member pod status. Possible values: pending (configured but absent from the backend topology, so nothing is bringing it up), provisioning (pod missing or Pending), starting (Running but not Ready), active (Running and Ready), failed (Failed phase or CrashLoopBackOff container), or the lowercased pod phase reported by the cluster.", "x-example": "active" }, "lagSeconds": { @@ -114482,6 +116014,122 @@ "lagSeconds": 0.5 } }, + "dedicatedDatabaseOperation": { + "description": "Operation", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Operation ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Operation creation time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "databaseId": { + "type": "string", + "description": "Database ID the operation ran against.", + "x-example": "5e5ea5c16897e" + }, + "type": { + "type": "string", + "description": "Operation type, such as provision, update, restore, pausing, resuming, failover, backup-create or cross-region-enable.", + "x-example": "update" + }, + "status": { + "type": "string", + "description": "Operation status. Possible values: running (in progress), completed (finished successfully), failed (ended in an error).", + "x-example": "completed" + }, + "attempts": { + "type": "integer", + "description": "Number of times this operation has been attempted.", + "x-example": 1, + "format": "int32" + }, + "requestedAt": { + "type": "string", + "description": "Time the operation was requested, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "startedAt": { + "type": "string", + "description": "Time the operation started, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "completedAt": { + "type": "string", + "description": "Time the operation reached a terminal state, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "errorCode": { + "type": "string", + "description": "Machine-readable failure code. `LockLost` marks an attempt that was fenced and abandoned because another worker took over the database.", + "x-example": "LockLost" + }, + "errorMessage": { + "type": "string", + "description": "Failure message if the operation failed.", + "x-example": "" + } + }, + "required": [ + "$id", + "$createdAt", + "databaseId", + "type", + "status", + "attempts", + "errorCode", + "errorMessage" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "databaseId": "5e5ea5c16897e", + "type": "update", + "status": "completed", + "attempts": 1, + "requestedAt": "2020-10-15T06:38:00.000+00:00", + "startedAt": "2020-10-15T06:38:00.000+00:00", + "completedAt": "2020-10-15T06:38:00.000+00:00", + "errorCode": "LockLost", + "errorMessage": "" + } + }, + "dedicatedDatabaseOperationList": { + "description": "OperationList", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of operations.", + "x-example": 5, + "format": "int32" + }, + "operations": { + "type": "array", + "description": "List of operations.", + "items": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperation" + }, + "x-example": "" + } + }, + "required": [ + "total", + "operations" + ], + "example": { + "total": 5, + "operations": "" + } + }, "dedicatedDatabaseReplicas": { "description": "Replicas", "type": "object", @@ -114494,9 +116142,37 @@ }, "syncMode": { "type": "string", - "description": "Replication sync mode. Possible values: async (asynchronous, fastest), sync (synchronous, strong consistency), quorum (quorum-based, majority of replicas must confirm).", + "description": "Requested replication sync mode. Possible values: async (asynchronous, fastest), sync (synchronous, strong consistency), quorum (quorum-based, majority of replicas must confirm). This is what was asked for; compare it with effectiveSyncMode for what the primary is enforcing.", "x-example": "async" }, + "effectiveSyncMode": { + "type": "string", + "description": "Replication sync mode the primary is actually enforcing. Null when high availability is disabled or the state could not be read. A value below the requested syncMode means writes are being acknowledged with weaker durability than configured.", + "x-example": "async", + "nullable": true + }, + "syncDegraded": { + "type": "boolean", + "description": "Whether the enforced replication is weaker than the requested syncMode.", + "x-example": false + }, + "syncAcknowledgements": { + "type": "integer", + "description": "Number of standby acknowledgements the primary waits for before a write is committed. Zero means writes are acknowledged locally.", + "x-example": 1, + "format": "int32" + }, + "syncStandbyCount": { + "type": "integer", + "description": "Number of standbys registered with the primary for synchronous replication.", + "x-example": 2, + "format": "int32" + }, + "syncStateConfirmed": { + "type": "boolean", + "description": "Whether the reported sync state was read from the engine. When false the state could not be confirmed and the other sync fields carry no reading.", + "x-example": true + }, "members": { "type": "array", "description": "Per-pod statuses for the primary and every replica.", @@ -114509,11 +116185,20 @@ "required": [ "replicas", "syncMode", + "syncDegraded", + "syncAcknowledgements", + "syncStandbyCount", + "syncStateConfirmed", "members" ], "example": { "replicas": 2, "syncMode": "async", + "effectiveSyncMode": "async", + "syncDegraded": false, + "syncAcknowledgements": 1, + "syncStandbyCount": 2, + "syncStateConfirmed": true, "members": [] } }, @@ -115713,7 +117398,7 @@ }, "maxConnections": { "type": "integer", - "description": "Maximum number of pooled connections.", + "description": "Client-connection ceiling the pooler accepts. Enforced on MySQL and MariaDB; on PostgreSQL the pooler has no client cap, so this reports the database's advertised networkMaxConnections and cannot be set here.", "x-example": 200, "format": "int32" }, @@ -116313,7 +117998,7 @@ }, "max": { "type": "integer", - "description": "Maximum allowed connections.", + "description": "The engine's own max_connections. On a pooled database this is the backend limit the pooler multiplexes onto, not the ceiling a client pool may reach \u2014 that is networkMaxConnections on the database resource.", "x-example": 100, "format": "int32" } @@ -116333,13 +118018,13 @@ "properties": { "index": { "type": "integer", - "description": "StatefulSet pod index (0 = primary, 1+ = replicas).", + "description": "Member index within the database. Read `role` for which member accepts writes: a failover moves the primary without renumbering the indexes.", "x-example": 0, "format": "int32" }, "role": { "type": "string", - "description": "Replica role: primary or replica.", + "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower), unknown (placement not established; reported while a transition is moving or restarting the topology, so no member can be named the write target).", "x-example": "primary" }, "healthy": { @@ -118894,6 +120579,164 @@ "config": [] } }, + "wafRuleChallenge": { + "description": "WafRuleChallenge", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Rule ID.", + "x-example": "wafRule1" + }, + "$createdAt": { + "type": "string", + "description": "WAF rule creation time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "WAF rule last update time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "name": { + "type": "string", + "description": "Human friendly rule name.", + "x-example": "Block anonymous POST traffic" + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "x-example": "Blocks anonymous POST calls to \/v1\/graphql" + }, + "teamId": { + "type": "string", + "description": "Team ID.", + "x-example": "5e5ea5c16897e" + }, + "projectId": { + "type": "string", + "description": "Project ID.", + "x-example": "cloudConsole" + }, + "resourceType": { + "type": "string", + "description": "Resource type the rule is scoped to.", + "x-example": "functions" + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Empty for API-wide rules.", + "x-example": "functionId" + }, + "action": { + "type": "string", + "description": "Action performed when the rule matches.", + "x-example": "deny", + "enum": [ + "bypass", + "deny", + "challenge", + "rateLimit", + "redirect" + ], + "x-enum-name": "WafRuleAction" + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower values execute earlier.", + "x-example": 100, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Whether the rule is active.", + "x-example": true + }, + "conditions": { + "type": "object", + "additionalProperties": true, + "description": "List of conditions evaluated for this rule.", + "x-example": [ + { + "method": "equal", + "attribute": "ip", + "values": [ + "127.0.0.1" + ] + } + ] + }, + "config": { + "type": "object", + "additionalProperties": true, + "description": "Action specific configuration.", + "x-example": [] + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced when the rule matches.", + "x-example": "compute" + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest) enforced when the rule matches.", + "x-example": 3, + "format": "int32" + }, + "ttl": { + "type": "integer", + "description": "Seconds a visitor stays cleared after passing the challenge before being challenged again.", + "x-example": 1800, + "format": "int32" + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "name", + "description", + "teamId", + "projectId", + "resourceType", + "resourceId", + "action", + "priority", + "enabled", + "conditions", + "config", + "challengeType", + "difficulty", + "ttl" + ], + "example": { + "$id": "wafRule1", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "name": "Block anonymous POST traffic", + "description": "Blocks anonymous POST calls to \/v1\/graphql", + "teamId": "5e5ea5c16897e", + "projectId": "cloudConsole", + "resourceType": "functions", + "resourceId": "functionId", + "action": "deny", + "priority": 100, + "enabled": true, + "conditions": [ + { + "method": "equal", + "attribute": "ip", + "values": [ + "127.0.0.1" + ] + } + ], + "config": [], + "challengeType": "compute", + "difficulty": 3, + "ttl": 1800 + } + }, "wafRuleRateLimit": { "description": "WafRuleRateLimit", "type": "object", @@ -118998,6 +120841,11 @@ "description": "Interval in seconds for the rate limit window.", "x-example": 60, "format": "int32" + }, + "key": { + "type": "string", + "description": "Rate limit key: `ip` limits per client IP, `userId` limits per authenticated user.", + "x-example": "userId" } }, "required": [ @@ -119016,7 +120864,8 @@ "conditions", "config", "limit", - "interval" + "interval", + "key" ], "example": { "$id": "wafRule1", @@ -119042,7 +120891,8 @@ ], "config": [], "limit": 1000, - "interval": 60 + "interval": 60, + "key": "userId" } }, "wafRuleRedirect": { @@ -120086,6 +121936,15 @@ "demo": "" } }, + "Organization": { + "type": "apiKey", + "name": "X-Appwrite-Organization", + "description": "Your organization ID", + "in": "header", + "x-appwrite": { + "demo": "" + } + }, "JWT": { "type": "apiKey", "name": "X-Appwrite-JWT", diff --git a/specs/1.9.x/open-api3-1.9.x-server.json b/specs/1.9.x/open-api3-1.9.x-server.json index 9b9a747e2..795bdd1b6 100644 --- a/specs/1.9.x/open-api3-1.9.x-server.json +++ b/specs/1.9.x/open-api3-1.9.x-server.json @@ -4294,7 +4294,10 @@ "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on attributes such as userId, teamId, etc.", "required": false, "schema": { - "type": "string", + "type": "array", + "items": { + "type": "string" + }, "default": [] }, "in": "query" @@ -5098,7 +5101,7 @@ "tags": [ "apps" ], - "description": "List installations of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header.", + "description": "List installations of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", "responses": { "200": { "description": "App installations list", @@ -5121,21 +5124,28 @@ "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip}", - "scope": "apps.installations.read", + "scope": [ + "apps.read", + "apps.installations.read" + ], "platforms": [ + "console", + "client", "server" ], "packaging": false, "public": true, "auth": { "Project": [], - "Key": [] + "Session": [] } }, "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -5183,7 +5193,7 @@ "tags": [ "apps" ], - "description": "Get an installation of an application by its unique ID. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header.", + "description": "Get an installation of an application by its unique ID. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app.", "responses": { "200": { "description": "AppInstallation", @@ -5206,21 +5216,97 @@ "rate-limit": 120, "rate-time": 60, "rate-key": "ip:{ip}", - "scope": "apps.installations.read", + "scope": [ + "apps.read", + "apps.installations.read" + ], "platforms": [ + "console", + "client", "server" ], "packaging": false, "public": true, "auth": { "Project": [], - "Key": [] + "Session": [] } }, "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] + } + ], + "parameters": [ + { + "name": "appId", + "description": "Application unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "installationId", + "description": "Installation unique ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "delete": { + "summary": "Delete Installation", + "operationId": "appsDeleteInstallation", + "tags": [ + "apps" + ], + "description": "Delete an installation of an application by its unique ID. Requires a caller with update access to the app. Previously issued installation access tokens are revoked.", + "responses": { + "204": { + "description": "No content" + } + }, + "deprecated": false, + "x-appwrite": { + "method": "deleteInstallation", + "group": "installations", + "cookies": false, + "type": "", + "demo": "apps\/delete-installation.md", + "rate-limit": 60, + "rate-time": 60, + "rate-key": "ip:{ip},userId:{userId}", + "scope": "apps.write", + "platforms": [ + "console", + "client", + "server" + ], + "packaging": false, + "public": true, + "produces": [ + "application\/json" + ], + "auth": { + "Project": [], + "Session": [] + } + }, + "security": [ + { + "Project": [], + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -5254,7 +5340,7 @@ "tags": [ "apps" ], - "description": "Create a token for an installation of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header. The returned token carries the scopes and authorization details granted to the installation, and can be used as an `Authorization: Bearer` header everywhere OAuth2 access tokens are accepted. Multiple tokens can be active for the same installation at once; each token stays valid until it expires or the installation is updated or deleted.", + "description": "Create a token for an installation of an application. Requires an app key sent in the `X-Appwrite-Key` header alongside the `X-Appwrite-App` header, or a caller with update access to the app. The returned token carries the scopes and authorization details granted to the installation, and can be used as an `Authorization: Bearer` header everywhere OAuth2 access tokens are accepted. Multiple tokens can be active for the same installation at once; each token stays valid until it expires or the installation is updated or deleted.", "responses": { "201": { "description": "OAuth2 Token", @@ -5277,21 +5363,28 @@ "rate-limit": 60, "rate-time": 60, "rate-key": "ip:{ip}", - "scope": "apps.tokens.write", + "scope": [ + "apps.write", + "apps.tokens.write" + ], "platforms": [ + "console", + "client", "server" ], "packaging": false, "public": true, "auth": { "Project": [], - "Key": [] + "Session": [] } }, "security": [ { "Project": [], - "Key": [] + "Session": [], + "Key": [], + "JWT": [] } ], "parameters": [ @@ -9221,7 +9314,7 @@ "tags": [ "backups" ], - "description": "Create and trigger a new restoration for a backup on a project.\n\nFor a backup of one database, the restoration resolves its destination before it is queued. Pass `newResourceId` to restore into that database ID, including the archived database ID to overwrite it. When `newResourceId` is omitted, a new database ID is generated and returned in `options`.\n\nThe restoration migration records the archived database in `resourceId` and `resourceType`, and the resolved database in `destinationResourceId` and `destinationResourceType`. Database types are stored canonically as `database`, `documentsdb`, or `vectorsdb`. Project-wide restorations leave these fields empty because they do not have a single source or destination database.\n\nTo list every migration related to one database, use its canonical type in a nested `OR(AND(...), AND(...), AND(...))` across the root, parent, and destination relation pairs: `(resourceType, resourceId)`, `(parentResourceType, parentResourceId)`, and `(destinationResourceType, destinationResourceId)`. Legacy and TablesDB databases use `database`; the operational `resourceType` of a table migration is not rewritten to `tablesdb`.\n\nWhen restoring a DocumentsDB or VectorsDB database to a new resource from a dedicated source, the restore provisions a fresh dedicated backing database at the source database's own specification.\n", + "description": "Create and trigger a new restoration for a backup on a project.\n\nFor a backup of one database, the restoration resolves its destination before it is queued. When `newResourceId` is omitted, the archived database is restored in place and its own ID is returned in `options`. Pass a different `newResourceId` to restore alongside it as a new database instead.\n\nThe restoration migration records the archived database in `resourceId` and `resourceType`, and the resolved database in `destinationResourceId` and `destinationResourceType`. Database types are stored canonically as `database`, `documentsdb`, or `vectorsdb`. Project-wide restorations leave these fields empty because they do not have a single source or destination database.\n\nTo list every migration related to one database, use its canonical type in a nested `OR(AND(...), AND(...), AND(...))` across the root, parent, and destination relation pairs: `(resourceType, resourceId)`, `(parentResourceType, parentResourceId)`, and `(destinationResourceType, destinationResourceId)`. Legacy and TablesDB databases use `database`; the operational `resourceType` of a table migration is not rewritten to `tablesdb`.\n\nWhen restoring a DocumentsDB or VectorsDB database from a dedicated source, the restore provisions a fresh dedicated backing database at the source database's own specification and lands the data there. An in-place restore swaps the database onto that backing only once the restore has succeeded, and retires the backing it displaced only once that swap is confirmed, so the source keeps serving its own data until the restored data is in place and any failure leaves it untouched. A serverless source has no dedicated backing to clone and restores onto the archived database instead.\n", "responses": { "201": { "description": "Restoration", @@ -9303,7 +9396,7 @@ }, "newResourceId": { "type": "string", - "description": "Destination resource ID. Omit to generate a new ID, or pass the archived resource ID to overwrite it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.", + "description": "Destination resource ID. Omit to restore the archived resource in place, or pass a different ID to restore alongside it as a new resource. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.", "default": "", "x-example": "", "x-appwrite": { @@ -17698,6 +17791,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -18333,12 +18432,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -20623,7 +20734,7 @@ "tags": [ "documentsDB" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -20695,6 +20806,102 @@ } } }, + "\/documentsdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "documentsDBListOperations", + "tags": [ + "documentsDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "documentsdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/documentsdb\/{databaseId}\/replicas": { "get": { "summary": "Get replicas", @@ -20986,6 +21193,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -21007,6 +21215,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -21080,6 +21291,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -21101,6 +21313,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -21778,6 +21993,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -21799,6 +22015,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -21872,6 +22091,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -21893,6 +22113,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -30377,11 +30600,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -31911,7 +32129,7 @@ "tags": [ "mongo" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -32158,21 +32376,21 @@ } } }, - "\/mongo\/{databaseId}\/pitr": { + "\/mongo\/{databaseId}\/operations": { "get": { - "summary": "Get PITR", - "operationId": "mongoGetPitr", + "summary": "List operations", + "operationId": "mongoListOperations", "tags": [ "mongo" ], - "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", "responses": { "200": { - "description": "PITRWindows", + "description": "OperationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" } } } @@ -32180,11 +32398,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPitr", - "group": "pitr", + "method": "listOperations", + "group": "operations", "cookies": false, "type": "", - "demo": "mongo\/get-pitr.md", + "demo": "mongo\/list-operations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -32216,25 +32434,59 @@ "x-example": "" }, "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } ] } }, - "\/mongo\/{databaseId}\/replicas": { + "\/mongo\/{databaseId}\/pitr": { "get": { - "summary": "Get replicas", - "operationId": "mongoGetReplicas", + "summary": "Get PITR", + "operationId": "mongoGetPitr", "tags": [ "mongo" ], - "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "Replicas", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -32242,11 +32494,73 @@ }, "deprecated": false, "x-appwrite": { - "method": "getReplicas", - "group": "replicas", + "method": "getPitr", + "group": "pitr", "cookies": false, "type": "", - "demo": "mongo\/get-replicas.md", + "demo": "mongo\/get-pitr.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + } + }, + "\/mongo\/{databaseId}\/replicas": { + "get": { + "summary": "Get replicas", + "operationId": "mongoGetReplicas", + "tags": [ + "mongo" + ], + "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "responses": { + "200": { + "description": "Replicas", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getReplicas", + "group": "replicas", + "cookies": false, + "type": "", + "demo": "mongo\/get-replicas.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -32909,11 +33223,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -34538,7 +34847,7 @@ "tags": [ "mysql" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -34785,21 +35094,21 @@ } } }, - "\/mysql\/{databaseId}\/pitr": { + "\/mysql\/{databaseId}\/operations": { "get": { - "summary": "Get PITR", - "operationId": "mysqlGetPitr", + "summary": "List operations", + "operationId": "mysqlListOperations", "tags": [ "mysql" ], - "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", "responses": { "200": { - "description": "PITRWindows", + "description": "OperationList", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" } } } @@ -34807,11 +35116,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPitr", - "group": "pitr", + "method": "listOperations", + "group": "operations", "cookies": false, "type": "", - "demo": "mysql\/get-pitr.md", + "demo": "mysql\/list-operations.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -34843,25 +35152,59 @@ "x-example": "" }, "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" } ] } }, - "\/mysql\/{databaseId}\/pooler": { + "\/mysql\/{databaseId}\/pitr": { "get": { - "summary": "Get pooler", - "operationId": "mysqlGetPooler", + "summary": "Get PITR", + "operationId": "mysqlGetPitr", "tags": [ "mysql" ], - "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", + "description": "Get available point-in-time recovery windows for a dedicated database. Returns the earliest and latest recovery points.", "responses": { "200": { - "description": "PoolerConfig", + "description": "PITRWindows", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + "$ref": "#\/components\/schemas\/dedicatedDatabasePITRWindows" } } } @@ -34869,11 +35212,11 @@ }, "deprecated": false, "x-appwrite": { - "method": "getPooler", - "group": "pooler", + "method": "getPitr", + "group": "pitr", "cookies": false, "type": "", - "demo": "mysql\/get-pooler.md", + "demo": "mysql\/get-pitr.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -34907,144 +35250,23 @@ "in": "path" } ] - }, - "patch": { - "summary": "Update pooler", - "operationId": "mysqlUpdatePooler", - "tags": [ - "mysql" - ], - "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", - "responses": { - "200": { - "description": "PoolerConfig", - "content": { - "application\/json": { - "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" - } - } - } - } - }, - "deprecated": false, - "x-appwrite": { - "method": "updatePooler", - "group": "pooler", - "cookies": false, - "type": "", - "demo": "mysql\/update-pooler.md", - "rate-limit": 0, - "rate-time": 3600, - "rate-key": "url:{url},ip:{ip}", - "scope": "databases.write", - "platforms": [ - "console", - "server" - ], - "packaging": false, - "public": true, - "auth": { - "Project": [], - "Key": [] - } - }, - "security": [ - { - "Project": [], - "Key": [] - } - ], - "parameters": [ - { - "name": "databaseId", - "description": "Database ID.", - "required": true, - "schema": { - "type": "string", - "x-example": "" - }, - "in": "path" - } - ], - "requestBody": { - "content": { - "application\/json": { - "schema": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "description": "Connection pool mode. Allowed values: transaction, session. Transaction mode returns connections to the pool after each transaction; session mode holds connections for the entire session lifetime.", - "x-example": "transaction", - "x-nullable": true - }, - "maxConnections": { - "type": "integer", - "description": "Maximum pooled connections.", - "x-example": 10, - "format": "int32", - "x-nullable": true - }, - "defaultPoolSize": { - "type": "integer", - "description": "Default pool size per user.", - "x-example": 1, - "format": "int32", - "x-nullable": true - }, - "readWriteSplitting": { - "type": "boolean", - "description": "Route SELECTs to HA replicas, writes and locked reads to the primary. Defaults to true when HA is enabled.", - "x-example": false, - "x-nullable": true - }, - "poolerCpuRequest": { - "type": "string", - "description": "Pooler sidecar CPU request override (Kubernetes quantity, e.g. \"250m\" or \"1\"). Leave null for the proportional default (5% of DB CPU, floor 100m).", - "x-example": "", - "x-nullable": true - }, - "poolerCpuLimit": { - "type": "string", - "description": "Pooler sidecar CPU limit override (Kubernetes quantity, e.g. \"500m\" or \"1\"). Leave null for the proportional default (10% of DB CPU, floor 200m). Changing this field rolls the database pod.", - "x-example": "", - "x-nullable": true - }, - "poolerMemoryRequest": { - "type": "string", - "description": "Pooler sidecar memory request override (Kubernetes quantity, e.g. \"128Mi\" or \"1Gi\"). Leave null for the proportional default (7.5% of DB memory, floor 64Mi).", - "x-example": "", - "x-nullable": true - }, - "poolerMemoryLimit": { - "type": "string", - "description": "Pooler sidecar memory limit override (Kubernetes quantity, e.g. \"256Mi\" or \"1Gi\"). Leave null for the proportional default (15% of DB memory, floor 128Mi). Changing this field rolls the database pod.", - "x-example": "", - "x-nullable": true - } - } - } - } - } - } } }, - "\/mysql\/{databaseId}\/replicas": { + "\/mysql\/{databaseId}\/pooler": { "get": { - "summary": "Get replicas", - "operationId": "mysqlGetReplicas", + "summary": "Get pooler", + "operationId": "mysqlGetPooler", "tags": [ "mysql" ], - "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "description": "Get the connection pooler configuration for a dedicated database. Returns pooler mode, max connections, and pool size settings.", "responses": { "200": { - "description": "Replicas", + "description": "PoolerConfig", "content": { "application\/json": { "schema": { - "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" } } } @@ -35052,11 +35274,194 @@ }, "deprecated": false, "x-appwrite": { - "method": "getReplicas", - "group": "replicas", + "method": "getPooler", + "group": "pooler", "cookies": false, "type": "", - "demo": "mysql\/get-replicas.md", + "demo": "mysql\/get-pooler.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ] + }, + "patch": { + "summary": "Update pooler", + "operationId": "mysqlUpdatePooler", + "tags": [ + "mysql" + ], + "description": "Update the connection pooler configuration for a dedicated database. Configure pool mode, max connections, and pool sizes.", + "responses": { + "200": { + "description": "PoolerConfig", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabasePooler" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updatePooler", + "group": "pooler", + "cookies": false, + "type": "", + "demo": "mysql\/update-pooler.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "description": "Connection pool mode. Allowed values: transaction, session. Transaction mode returns connections to the pool after each transaction; session mode holds connections for the entire session lifetime.", + "x-example": "transaction", + "x-nullable": true + }, + "maxConnections": { + "type": "integer", + "description": "Client-connection ceiling the pooler accepts. Supported on MySQL and MariaDB only; the PostgreSQL pooler has no client cap, so set networkMaxConnections on the database instead.", + "x-example": 10, + "format": "int32", + "x-nullable": true + }, + "defaultPoolSize": { + "type": "integer", + "description": "Default pool size per user.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "readWriteSplitting": { + "type": "boolean", + "description": "Route SELECTs to HA replicas, writes and locked reads to the primary. Defaults to true when HA is enabled.", + "x-example": false, + "x-nullable": true + }, + "poolerCpuRequest": { + "type": "string", + "description": "Pooler sidecar CPU request override (Kubernetes quantity, e.g. \"250m\" or \"1\"). Leave null for the proportional default (5% of DB CPU, floor 100m).", + "x-example": "", + "x-nullable": true + }, + "poolerCpuLimit": { + "type": "string", + "description": "Pooler sidecar CPU limit override (Kubernetes quantity, e.g. \"500m\" or \"1\"). Leave null for the proportional default (10% of DB CPU, floor 200m). Changing this field rolls the database pod.", + "x-example": "", + "x-nullable": true + }, + "poolerMemoryRequest": { + "type": "string", + "description": "Pooler sidecar memory request override (Kubernetes quantity, e.g. \"128Mi\" or \"1Gi\"). Leave null for the proportional default (7.5% of DB memory, floor 64Mi).", + "x-example": "", + "x-nullable": true + }, + "poolerMemoryLimit": { + "type": "string", + "description": "Pooler sidecar memory limit override (Kubernetes quantity, e.g. \"256Mi\" or \"1Gi\"). Leave null for the proportional default (15% of DB memory, floor 128Mi). Changing this field rolls the database pod.", + "x-example": "", + "x-nullable": true + } + } + } + } + } + } + } + }, + "\/mysql\/{databaseId}\/replicas": { + "get": { + "summary": "Get replicas", + "operationId": "mysqlGetReplicas", + "tags": [ + "mysql" + ], + "description": "Get high availability status for a dedicated database. Returns replica statuses, replication lag, and sync mode.", + "responses": { + "200": { + "description": "Replicas", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseReplicas" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "getReplicas", + "group": "replicas", + "cookies": false, + "type": "", + "demo": "mysql\/get-replicas.md", "rate-limit": 0, "rate-time": 3600, "rate-key": "url:{url},ip:{ip}", @@ -36967,7 +37372,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ] }, @@ -37015,7 +37421,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -37075,7 +37482,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ] } @@ -37128,7 +37536,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -37205,7 +37614,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "requestBody": { @@ -37283,7 +37693,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -37346,7 +37757,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -37422,7 +37834,8 @@ "Project": [], "Session": [], "Key": [], - "JWT": [] + "JWT": [], + "Organization": [] } ], "parameters": [ @@ -37484,7 +37897,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -37558,7 +37972,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -37689,7 +38104,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -37749,7 +38165,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -37874,7 +38291,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -37936,7 +38354,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38021,7 +38440,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -38126,7 +38546,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38186,7 +38607,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38261,7 +38683,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38323,7 +38746,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38408,7 +38832,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "requestBody": { @@ -38505,7 +38930,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38565,7 +38991,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38637,7 +39064,8 @@ "security": [ { "Project": [], - "Key": [] + "Key": [], + "Organization": [] } ], "parameters": [ @@ -38923,11 +39351,6 @@ "default": 0, "x-example": 0, "format": "int32" - }, - "api": { - "type": "string", - "description": "Product API that owns this database: tablesdb, documentsdb, or vectorsdb. Omit for a raw database reached directly; its api is its engine. tablesdb\/documentsdb\/vectorsdb databases are reached only through their product APIs.", - "x-example": "tablesdb" } }, "required": [ @@ -40765,7 +41188,7 @@ "tags": [ "postgresql" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -41012,6 +41435,102 @@ } } }, + "\/postgresql\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "postgresqlListOperations", + "tags": [ + "postgresql" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "postgresql\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/postgresql\/{databaseId}\/pitr": { "get": { "summary": "Get PITR", @@ -41208,7 +41727,7 @@ }, "maxConnections": { "type": "integer", - "description": "Maximum pooled connections.", + "description": "Client-connection ceiling the pooler accepts. Supported on MySQL and MariaDB only; the PostgreSQL pooler has no client cap, so set networkMaxConnections on the database instead.", "x-example": 10, "format": "int32", "x-nullable": true @@ -49705,7 +50224,7 @@ "properties": { "total": { "type": "integer", - "description": "Set the password history length per user. Value can be between 1 and 5000, or null to disable the limit.", + "description": "Set the password history length per user. Value can be between 1 and 20, or null to disable the limit.", "x-example": 1, "format": "int32", "x-nullable": true @@ -50013,8 +50532,8 @@ "properties": { "duration": { "type": "integer", - "description": "Maximum session length in seconds. Minium allowed value is 5 second, and maximum is 1 year, which is 31536000 seconds.", - "x-example": 5, + "description": "Maximum session length in seconds. Minium allowed value is 60 seconds, and maximum is 1 year, which is 31536000 seconds.", + "x-example": 60, "format": "int32" } }, @@ -50158,10 +50677,9 @@ "properties": { "total": { "type": "integer", - "description": "Set the maximum number of sessions allowed per user. Value can be between 1 and 5000, or null to disable the limit.", + "description": "Set the maximum number of sessions allowed per user. Value can be between 1 and 100.", "x-example": 1, - "format": "int32", - "x-nullable": true + "format": "int32" } }, "required": [ @@ -50232,8 +50750,8 @@ "properties": { "total": { "type": "integer", - "description": "Set the maximum number of users allowed in the project. Value can be between 1 and 5000, or null to disable the limit.", - "x-example": 1, + "description": "Set the maximum number of users allowed in the project. Value can be between 0 and 10000. Use 0 or null to disable the limit.", + "x-example": 0, "format": "int32", "x-nullable": true } @@ -53224,6 +53742,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -53245,6 +53764,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -53318,6 +53840,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -53339,6 +53862,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -53843,6 +54369,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -53864,6 +54391,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -53937,6 +54467,7 @@ "node-23", "node-24", "node-25", + "node-26", "php-8.0", "php-8.1", "php-8.2", @@ -53958,6 +54489,9 @@ "python-ml-3.11", "python-ml-3.12", "python-ml-3.13", + "deno-1.21", + "deno-1.24", + "deno-1.35", "deno-1.40", "deno-1.46", "deno-2.0", @@ -55898,7 +56432,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", "default": {}, "x-example": 1, "format": "int32" @@ -56114,7 +56648,7 @@ }, "maximumFileSize": { "type": "integer", - "description": "Maximum file size allowed in bytes. Maximum allowed value is 5GB.", + "description": "Maximum file size allowed in bytes. Maximum allowed value is 0B.", "default": {}, "x-example": 1, "format": "int32" @@ -56292,7 +56826,7 @@ }, { "name": "queries", - "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", + "description": "Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, folder, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded", "required": false, "schema": { "type": "array", @@ -56419,6 +56953,12 @@ "type": "string" }, "x-nullable": true + }, + "folder": { + "type": "string", + "description": "Virtual folder to place the file in, for example \"photos\/2026\". Nest folders with `\/`. Defaults to the bucket root.", + "default": "", + "x-example": null } }, "required": [ @@ -57282,6 +57822,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -57936,12 +58482,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } } } @@ -58011,7 +58569,7 @@ "tags": [ "tablesDB" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -58083,6 +58641,102 @@ } } }, + "\/tablesdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "tablesDBListOperations", + "tags": [ + "tablesDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "tablesdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/tablesdb\/{databaseId}\/replicas": { "get": { "summary": "Get replicas", @@ -71240,6 +71894,12 @@ "default": 0, "x-example": 0, "format": "int32" + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Requires a dedicated `specification`; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -71996,12 +72656,24 @@ "default": true, "x-example": false }, + "specification": { + "type": "string", + "description": "Database specification. Resizing between dedicated specifications changes cpu, memory, storage and the connection ceiling via a rolling cutover with zero downtime. Moving a `serverless` database onto a dedicated specification is a data migration, not a resize.", + "x-example": "serverless", + "x-nullable": true + }, "replicas": { "type": "integer", "description": "Number of high availability replicas (0-5) for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification. High availability is enabled when greater than 0.", "x-example": 0, "format": "int32", "x-nullable": true + }, + "syncMode": { + "type": "string", + "description": "Replication sync mode for the dedicated database backing this database. Only valid when the database is backed by a dedicated specification; the mode is only in force once there is at least one replica. Allowed values: async, sync, quorum.", + "x-example": "async", + "x-nullable": true } }, "required": [ @@ -74149,7 +74821,7 @@ "tags": [ "vectorsDB" ], - "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates.", + "description": "Trigger a manual failover for a dedicated database with high availability enabled. Promotes a replica to primary. The failover runs asynchronously; poll the database document for status updates. A database left mid-operation by a failover that did not finish also accepts this call as a repair, provided `targetReplicaId` names the member to promote.", "responses": { "202": { "description": "DedicatedDatabase", @@ -74221,6 +74893,102 @@ } } }, + "\/vectorsdb\/{databaseId}\/operations": { + "get": { + "summary": "List operations", + "operationId": "vectorsDBListOperations", + "tags": [ + "vectorsDB" + ], + "description": "List the lifecycle operations recorded for a dedicated database, newest first. Every provision, update, restore, backup and replication action is recorded here with its outcome, including an attempt that was abandoned because another worker took over the database.", + "responses": { + "200": { + "description": "OperationList", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperationList" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "listOperations", + "group": "operations", + "cookies": false, + "type": "", + "demo": "vectorsdb\/list-operations.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "databases.read", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "databaseId", + "description": "Database ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + }, + { + "name": "status", + "description": "Filter by operation status.", + "required": false, + "schema": { + "type": "string", + "x-example": "running" + }, + "in": "query" + }, + { + "name": "limit", + "description": "Maximum number of operations to return.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 1, + "default": 25 + }, + "in": "query" + }, + { + "name": "offset", + "description": "Number of operations to skip.", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "x-example": 0, + "default": 0 + }, + "in": "query" + } + ] + } + }, "\/vectorsdb\/{databaseId}\/replicas": { "get": { "summary": "Get replicas", @@ -74440,7 +75208,7 @@ "tags": [ "waf" ], - "description": "Create a bypass WAF rule.\n", + "description": "Create a bypass WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleBypass", @@ -74556,7 +75324,7 @@ "tags": [ "waf" ], - "description": "Update a bypass WAF rule.\n", + "description": "Update a bypass WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleBypass", @@ -74666,6 +75434,279 @@ } } }, + "\/waf\/rules\/challenge": { + "post": { + "summary": "Create a challenge WAF rule.", + "operationId": "wafCreateChallengeRule", + "tags": [ + "waf" + ], + "description": "Create a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to tune the client-side proof-of-work cost, and `ttl` to control how long, in seconds, a visitor stays cleared after passing the challenge before being challenged again. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", + "responses": { + "201": { + "description": "WafRuleChallenge", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/wafRuleChallenge" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "createChallengeRule", + "group": "rules", + "cookies": false, + "type": "", + "demo": "waf\/create-challenge-rule.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "wafRules.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/waf\/create-challenge-rule.md", + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "ruleId": { + "type": "string", + "description": "Rule ID. Choose a custom ID or pass `ID.unique()` to generate a unique one.", + "x-example": "", + "x-appwrite": { + "idGenerator": "ID.unique" + } + }, + "resourceType": { + "type": "string", + "description": "Resource type the rule applies to.", + "x-example": "api" + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Required for functions and sites.", + "x-example": "", + "x-nullable": true + }, + "name": { + "type": "string", + "description": "Rule name.", + "x-example": "" + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "default": "", + "x-example": "" + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced by the rule.", + "default": "compute", + "x-example": "compute" + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower numbers run earlier.", + "default": 0, + "x-example": -100000, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Set to false to create the rule in a disabled state.", + "default": true, + "x-example": false + }, + "conditions": { + "type": "string", + "description": "Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.", + "default": [], + "x-example": null + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.", + "default": 3, + "x-example": 1, + "format": "int32" + }, + "ttl": { + "type": "integer", + "description": "How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.", + "default": 1800, + "x-example": 900, + "format": "int32" + } + }, + "required": [ + "ruleId", + "resourceType", + "name" + ] + } + } + } + } + } + }, + "\/waf\/rules\/challenge\/{ruleId}": { + "patch": { + "summary": "Update a challenge WAF rule.", + "operationId": "wafUpdateChallengeRule", + "tags": [ + "waf" + ], + "description": "Update a challenge WAF rule. Use `difficulty` (1 easiest to 5 hardest) to tune the client-side proof-of-work cost, and `ttl` to control how long, in seconds, a visitor stays cleared after passing the challenge before being challenged again. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", + "responses": { + "200": { + "description": "WafRuleChallenge", + "content": { + "application\/json": { + "schema": { + "$ref": "#\/components\/schemas\/wafRuleChallenge" + } + } + } + } + }, + "deprecated": false, + "x-appwrite": { + "method": "updateChallengeRule", + "group": "rules", + "cookies": false, + "type": "", + "demo": "waf\/update-challenge-rule.md", + "rate-limit": 0, + "rate-time": 3600, + "rate-key": "url:{url},ip:{ip}", + "scope": "wafRules.write", + "platforms": [ + "console", + "server" + ], + "packaging": false, + "public": true, + "edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/waf\/update-challenge-rule.md", + "auth": { + "Project": [], + "Key": [] + } + }, + "security": [ + { + "Project": [], + "Key": [] + } + ], + "parameters": [ + { + "name": "ruleId", + "description": "Rule ID.", + "required": true, + "schema": { + "type": "string", + "x-example": "" + }, + "in": "path" + } + ], + "requestBody": { + "content": { + "application\/json": { + "schema": { + "type": "object", + "properties": { + "resourceType": { + "type": "string", + "description": "Resource type the rule applies to.", + "x-example": "api", + "x-nullable": true + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Required for functions and sites.", + "x-example": "", + "x-nullable": true + }, + "name": { + "type": "string", + "description": "Rule name.", + "x-example": "", + "x-nullable": true + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "x-example": "", + "x-nullable": true + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced by the rule.", + "x-example": "compute", + "x-nullable": true + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower numbers run earlier.", + "x-example": -100000, + "format": "int32", + "x-nullable": true + }, + "enabled": { + "type": "boolean", + "description": "Set to false to disable the rule.", + "x-example": false, + "x-nullable": true + }, + "conditions": { + "type": "string", + "description": "Array of condition strings generated using the WAF Condition builder. Maximum of 100 conditions are allowed, each 4096 characters long.", + "x-example": null, + "x-nullable": true + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest). Higher values demand more client-side proof-of-work.", + "x-example": 1, + "format": "int32", + "x-nullable": true + }, + "ttl": { + "type": "integer", + "description": "How long, in seconds, a visitor stays cleared after passing the challenge before being challenged again.", + "x-example": 900, + "format": "int32", + "x-nullable": true + } + } + } + } + } + } + } + }, "\/waf\/rules\/deny": { "post": { "summary": "Create a deny WAF rule.", @@ -74673,7 +75714,7 @@ "tags": [ "waf" ], - "description": "Create a deny WAF rule.\n", + "description": "Create a deny WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleDeny", @@ -74789,7 +75830,7 @@ "tags": [ "waf" ], - "description": "Update a deny WAF rule.\n", + "description": "Update a deny WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleDeny", @@ -74906,7 +75947,7 @@ "tags": [ "waf" ], - "description": "Create a rate limit WAF rule.\n", + "description": "Create a rate limit WAF rule. Use `key` to choose the counter: `ip` limits per client IP, while `userId` limits per authenticated user (requests without an authenticated user skip `userId` rules). Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleRateLimit", @@ -74996,6 +76037,12 @@ "x-example": 1, "format": "int32" }, + "key": { + "type": "string", + "description": "Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.", + "default": "ip", + "x-example": "ip" + }, "priority": { "type": "integer", "description": "Evaluation priority. Lower numbers run earlier.", @@ -75036,7 +76083,7 @@ "tags": [ "waf" ], - "description": "Update a rate limit WAF rule.\n", + "description": "Update a rate limit WAF rule. Use `key` to choose the counter: `ip` limits per client IP, while `userId` limits per authenticated user (requests without an authenticated user skip `userId` rules). Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleRateLimit", @@ -75134,6 +76181,12 @@ "format": "int32", "x-nullable": true }, + "key": { + "type": "string", + "description": "Rate limit key. Use `ip` to limit per client IP or `userId` to limit per authenticated user. Requests without an authenticated user skip `userId` rules.", + "x-example": "ip", + "x-nullable": true + }, "priority": { "type": "integer", "description": "Evaluation priority. Lower numbers run earlier.", @@ -75167,7 +76220,7 @@ "tags": [ "waf" ], - "description": "Create a redirect WAF rule.\n", + "description": "Create a redirect WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "201": { "description": "WafRuleRedirect", @@ -75296,7 +76349,7 @@ "tags": [ "waf" ], - "description": "Update a redirect WAF rule.\n", + "description": "Update a redirect WAF rule. Conditions can match request attributes including `ip` (plain IPs or CIDR blocks like `10.0.0.0\/8`), `method`, `path`, `host`, `country`, `continent`, `headers.`, `query.`, `queryKeys`, `userAgent`, `os`, `osVersion`, `browser`, and `browserVersion`. Conditions on `city` and `state` require the premium Geo DB addon.\n", "responses": { "200": { "description": "WafRuleRedirect", @@ -76150,7 +77203,7 @@ }, { "name": "apps", - "description": "" + "description": "The Apps service allows you to manage OAuth2 applications, their keys, secrets, scopes, and installations." }, { "name": "oauth2", @@ -77669,7 +78722,7 @@ }, "engine": { "type": "string", - "description": "Underlying engine of the dedicated backing: postgresql, mysql, mariadb, or mongodb. A managed product (tablesdb, documentsdb, vectorsdb) reports the engine it runs on, so its type and engine can differ. Null when the database has no dedicated backing.", + "description": "Underlying engine of the dedicated backing: postgresql, mysql, or mongodb. A managed product (tablesdb, documentsdb, vectorsdb) reports the engine it runs on, so its type and engine can differ. Null when the database has no dedicated backing.", "x-example": "postgresql", "readOnly": true, "nullable": true @@ -83957,6 +85010,16 @@ "description": "File name.", "x-example": "Pink.png" }, + "folder": { + "type": "string", + "description": "Virtual folder containing the file, with a trailing slash. Empty for the bucket root.", + "x-example": "photos\/2026\/" + }, + "key": { + "type": "string", + "description": "Full virtual path of the file: the folder followed by the file name.", + "x-example": "photos\/2026\/Pink.png" + }, "signature": { "type": "string", "description": "File MD5 signature.", @@ -84009,6 +85072,8 @@ "$updatedAt", "$permissions", "name", + "folder", + "key", "signature", "mimeType", "sizeOriginal", @@ -84027,6 +85092,8 @@ "read(\"any\")" ], "name": "Pink.png", + "folder": "photos\/2026\/", + "key": "photos\/2026\/Pink.png", "signature": "5d529fd02b544198ae075bd57c1762bb", "mimeType": "image\/png", "sizeOriginal": 17890, @@ -90805,6 +91872,16 @@ "description": "Backup type. Possible values: full (complete database snapshot), incremental (changes since last backup), wal (write-ahead log continuous archival).", "x-example": "full" }, + "requestedType": { + "type": "string", + "description": "Backup type that was requested. Differs from `type` when the backend could not run the requested type and took a different one instead, in which case `fallbackReason` explains why. Empty for backups taken before the requested type was recorded.", + "x-example": "incremental" + }, + "fallbackReason": { + "type": "string", + "description": "Why the backend ran a different backup type than the one requested. Empty when the backup ran as requested.", + "x-example": "PostgreSQL incremental backups are not offered because they cannot be restored: archived WAL is physical and cannot replay onto a logically-restored base. A full backup was taken instead; use a point-in-time restore (targetTime) to recover to a moment between fulls." + }, "status": { "type": "string", "description": "Backup status. Possible values: pending (queued for processing), running (currently in progress), completed (successfully finished), failed (encountered an error), verified (integrity check passed).", @@ -90840,6 +91917,12 @@ "x-example": "2020-10-15T06:38:00.000+00:00", "nullable": true }, + "logPosition": { + "type": "string", + "description": "Transaction-log position the backup anchors at, in the engine's own notation: PostgreSQL `{walSegment}|{lsn}`, MySQL and MariaDB `{binlogFile}|{offset}`, MongoDB `{seconds}|{increment}`. Empty when the backup recorded no position, which is the case for backup types that carry none.", + "x-example": "000000010000000000000003|0\/3000148", + "nullable": true + }, "error": { "type": "string", "description": "Error message if backup failed.", @@ -90854,6 +91937,8 @@ "policyId", "trigger", "type", + "requestedType", + "fallbackReason", "status", "sizeBytes", "error" @@ -90866,12 +91951,15 @@ "policyId": "5e5ea5c16897e", "trigger": "schedule", "type": "full", + "requestedType": "incremental", + "fallbackReason": "PostgreSQL incremental backups are not offered because they cannot be restored: archived WAL is physical and cannot replay onto a logically-restored base. A full backup was taken instead; use a point-in-time restore (targetTime) to recover to a moment between fulls.", "status": "completed", "sizeBytes": 1073741824, "startedAt": "2020-10-15T06:38:00.000+00:00", "completedAt": "2020-10-15T06:38:00.000+00:00", "verifiedAt": "2020-10-15T06:38:00.000+00:00", "expiresAt": "2020-10-15T06:38:00.000+00:00", + "logPosition": "000000010000000000000003|0\/3000148", "error": "" } }, @@ -92065,7 +93153,7 @@ }, "port": { "type": "integer", - "description": "Branch port.", + "description": "Branch port. Null until the backing reports one.", "x-example": 5432, "format": "int32" }, @@ -92091,7 +93179,7 @@ }, "engine": { "type": "string", - "description": "Database engine. Possible values: postgresql, mysql, mariadb, mongodb.", + "description": "Database engine. Possible values: postgresql, mysql, mongodb.", "x-example": "postgresql" }, "connectionString": { @@ -92185,7 +93273,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb.", "x-example": "postgresql" }, "version": { @@ -92210,7 +93298,7 @@ }, "connectionPort": { "type": "integer", - "description": "Database port for connections.", + "description": "Database port for connections. Derived from the engine when the backing has not reported one yet.", "x-example": 5432, "format": "int32" }, @@ -92320,7 +93408,7 @@ }, "networkMaxConnections": { "type": "integer", - "description": "Maximum concurrent connections.", + "description": "Maximum concurrent client connections. This is the limit a client pool may reach; the engine's own max_connections reported by the status endpoint is a smaller backend limit the pooler multiplexes onto and does not constrain a client pool.", "x-example": 500, "format": "int32" }, @@ -92727,7 +93815,7 @@ }, "engine": { "type": "string", - "description": "Database engine: postgresql, mysql, mariadb, or mongodb.", + "description": "Database engine: postgresql, mysql, or mongodb.", "x-example": "postgresql" }, "version": { @@ -92754,9 +93842,42 @@ } ] }, + "syncMode": { + "type": "string", + "description": "Requested replication sync mode. Possible values: async, sync, quorum. Compare with effectiveSyncMode for what the primary is enforcing.", + "x-example": "async" + }, + "effectiveSyncMode": { + "type": "string", + "description": "Replication sync mode the primary is actually enforcing. Null when high availability is disabled or the state could not be read.", + "x-example": "async", + "nullable": true + }, + "syncDegraded": { + "type": "boolean", + "description": "Whether the enforced replication is weaker than the requested syncMode.", + "x-example": false + }, + "syncAcknowledgements": { + "type": "integer", + "description": "Number of standby acknowledgements the primary waits for before a write is committed.", + "x-example": 1, + "format": "int32" + }, + "syncStandbyCount": { + "type": "integer", + "description": "Number of standbys registered with the primary for synchronous replication.", + "x-example": 2, + "format": "int32" + }, + "syncStateConfirmed": { + "type": "boolean", + "description": "Whether the reported sync state was read from the engine. When false the state could not be confirmed and the other sync fields carry no reading.", + "x-example": true + }, "replicas": { "type": "array", - "description": "List of database replicas and their status.", + "description": "List of database replicas and their status. Every configured member appears, including one the backend has not brought up, which is reported as not healthy.", "items": { "$ref": "#\/components\/schemas\/databaseStatusReplica" }, @@ -92798,6 +93919,11 @@ "version", "uptime", "connections", + "syncMode", + "syncDegraded", + "syncAcknowledgements", + "syncStandbyCount", + "syncStateConfirmed", "replicas", "volumes" ], @@ -92811,6 +93937,12 @@ "current": 12, "max": 100 }, + "syncMode": "async", + "effectiveSyncMode": "async", + "syncDegraded": false, + "syncAcknowledgements": 1, + "syncStandbyCount": 2, + "syncStateConfirmed": true, "replicas": [ { "index": 0, @@ -92898,12 +94030,12 @@ }, "role": { "type": "string", - "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower).", + "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower), unknown (placement not established; reported while a transition is moving or restarting the topology and this member has not been probed, so no member can be named the write target).", "x-example": "replica" }, "status": { "type": "string", - "description": "Member pod status. Possible values: provisioning (pod missing or Pending), starting (Running but not Ready), active (Running and Ready), failed (Failed phase or CrashLoopBackOff container), or the lowercased pod phase reported by the cluster.", + "description": "Member pod status. Possible values: pending (configured but absent from the backend topology, so nothing is bringing it up), provisioning (pod missing or Pending), starting (Running but not Ready), active (Running and Ready), failed (Failed phase or CrashLoopBackOff container), or the lowercased pod phase reported by the cluster.", "x-example": "active" }, "lagSeconds": { @@ -92926,6 +94058,122 @@ "lagSeconds": 0.5 } }, + "dedicatedDatabaseOperation": { + "description": "Operation", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Operation ID.", + "x-example": "5e5ea5c16897e" + }, + "$createdAt": { + "type": "string", + "description": "Operation creation time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "databaseId": { + "type": "string", + "description": "Database ID the operation ran against.", + "x-example": "5e5ea5c16897e" + }, + "type": { + "type": "string", + "description": "Operation type, such as provision, update, restore, pausing, resuming, failover, backup-create or cross-region-enable.", + "x-example": "update" + }, + "status": { + "type": "string", + "description": "Operation status. Possible values: running (in progress), completed (finished successfully), failed (ended in an error).", + "x-example": "completed" + }, + "attempts": { + "type": "integer", + "description": "Number of times this operation has been attempted.", + "x-example": 1, + "format": "int32" + }, + "requestedAt": { + "type": "string", + "description": "Time the operation was requested, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "startedAt": { + "type": "string", + "description": "Time the operation started, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "completedAt": { + "type": "string", + "description": "Time the operation reached a terminal state, in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00", + "nullable": true + }, + "errorCode": { + "type": "string", + "description": "Machine-readable failure code. `LockLost` marks an attempt that was fenced and abandoned because another worker took over the database.", + "x-example": "LockLost" + }, + "errorMessage": { + "type": "string", + "description": "Failure message if the operation failed.", + "x-example": "" + } + }, + "required": [ + "$id", + "$createdAt", + "databaseId", + "type", + "status", + "attempts", + "errorCode", + "errorMessage" + ], + "example": { + "$id": "5e5ea5c16897e", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "databaseId": "5e5ea5c16897e", + "type": "update", + "status": "completed", + "attempts": 1, + "requestedAt": "2020-10-15T06:38:00.000+00:00", + "startedAt": "2020-10-15T06:38:00.000+00:00", + "completedAt": "2020-10-15T06:38:00.000+00:00", + "errorCode": "LockLost", + "errorMessage": "" + } + }, + "dedicatedDatabaseOperationList": { + "description": "OperationList", + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "Total number of operations.", + "x-example": 5, + "format": "int32" + }, + "operations": { + "type": "array", + "description": "List of operations.", + "items": { + "$ref": "#\/components\/schemas\/dedicatedDatabaseOperation" + }, + "x-example": "" + } + }, + "required": [ + "total", + "operations" + ], + "example": { + "total": 5, + "operations": "" + } + }, "dedicatedDatabaseReplicas": { "description": "Replicas", "type": "object", @@ -92938,9 +94186,37 @@ }, "syncMode": { "type": "string", - "description": "Replication sync mode. Possible values: async (asynchronous, fastest), sync (synchronous, strong consistency), quorum (quorum-based, majority of replicas must confirm).", + "description": "Requested replication sync mode. Possible values: async (asynchronous, fastest), sync (synchronous, strong consistency), quorum (quorum-based, majority of replicas must confirm). This is what was asked for; compare it with effectiveSyncMode for what the primary is enforcing.", "x-example": "async" }, + "effectiveSyncMode": { + "type": "string", + "description": "Replication sync mode the primary is actually enforcing. Null when high availability is disabled or the state could not be read. A value below the requested syncMode means writes are being acknowledged with weaker durability than configured.", + "x-example": "async", + "nullable": true + }, + "syncDegraded": { + "type": "boolean", + "description": "Whether the enforced replication is weaker than the requested syncMode.", + "x-example": false + }, + "syncAcknowledgements": { + "type": "integer", + "description": "Number of standby acknowledgements the primary waits for before a write is committed. Zero means writes are acknowledged locally.", + "x-example": 1, + "format": "int32" + }, + "syncStandbyCount": { + "type": "integer", + "description": "Number of standbys registered with the primary for synchronous replication.", + "x-example": 2, + "format": "int32" + }, + "syncStateConfirmed": { + "type": "boolean", + "description": "Whether the reported sync state was read from the engine. When false the state could not be confirmed and the other sync fields carry no reading.", + "x-example": true + }, "members": { "type": "array", "description": "Per-pod statuses for the primary and every replica.", @@ -92953,11 +94229,20 @@ "required": [ "replicas", "syncMode", + "syncDegraded", + "syncAcknowledgements", + "syncStandbyCount", + "syncStateConfirmed", "members" ], "example": { "replicas": 2, "syncMode": "async", + "effectiveSyncMode": "async", + "syncDegraded": false, + "syncAcknowledgements": 1, + "syncStandbyCount": 2, + "syncStateConfirmed": true, "members": [] } }, @@ -93490,7 +94775,7 @@ }, "maxConnections": { "type": "integer", - "description": "Maximum number of pooled connections.", + "description": "Client-connection ceiling the pooler accepts. Enforced on MySQL and MariaDB; on PostgreSQL the pooler has no client cap, so this reports the database's advertised networkMaxConnections and cannot be set here.", "x-example": 200, "format": "int32" }, @@ -93970,7 +95255,7 @@ }, "max": { "type": "integer", - "description": "Maximum allowed connections.", + "description": "The engine's own max_connections. On a pooled database this is the backend limit the pooler multiplexes onto, not the ceiling a client pool may reach \u2014 that is networkMaxConnections on the database resource.", "x-example": 100, "format": "int32" } @@ -93990,13 +95275,13 @@ "properties": { "index": { "type": "integer", - "description": "StatefulSet pod index (0 = primary, 1+ = replicas).", + "description": "Member index within the database. Read `role` for which member accepts writes: a failover moves the primary without renumbering the indexes.", "x-example": 0, "format": "int32" }, "role": { "type": "string", - "description": "Replica role: primary or replica.", + "description": "Member role. Possible values: primary (accepts reads and writes), replica (read-only follower), unknown (placement not established; reported while a transition is moving or restarting the topology, so no member can be named the write target).", "x-example": "primary" }, "healthy": { @@ -95734,6 +97019,164 @@ "config": [] } }, + "wafRuleChallenge": { + "description": "WafRuleChallenge", + "type": "object", + "properties": { + "$id": { + "type": "string", + "description": "Rule ID.", + "x-example": "wafRule1" + }, + "$createdAt": { + "type": "string", + "description": "WAF rule creation time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "$updatedAt": { + "type": "string", + "description": "WAF rule last update time in ISO 8601 format.", + "x-example": "2020-10-15T06:38:00.000+00:00" + }, + "name": { + "type": "string", + "description": "Human friendly rule name.", + "x-example": "Block anonymous POST traffic" + }, + "description": { + "type": "string", + "description": "Optional description for the rule.", + "x-example": "Blocks anonymous POST calls to \/v1\/graphql" + }, + "teamId": { + "type": "string", + "description": "Team ID.", + "x-example": "5e5ea5c16897e" + }, + "projectId": { + "type": "string", + "description": "Project ID.", + "x-example": "cloudConsole" + }, + "resourceType": { + "type": "string", + "description": "Resource type the rule is scoped to.", + "x-example": "functions" + }, + "resourceId": { + "type": "string", + "description": "Resource identifier. Empty for API-wide rules.", + "x-example": "functionId" + }, + "action": { + "type": "string", + "description": "Action performed when the rule matches.", + "x-example": "deny", + "enum": [ + "bypass", + "deny", + "challenge", + "rateLimit", + "redirect" + ], + "x-enum-name": "WafRuleAction" + }, + "priority": { + "type": "integer", + "description": "Evaluation priority. Lower values execute earlier.", + "x-example": 100, + "format": "int32" + }, + "enabled": { + "type": "boolean", + "description": "Whether the rule is active.", + "x-example": true + }, + "conditions": { + "type": "object", + "additionalProperties": true, + "description": "List of conditions evaluated for this rule.", + "x-example": [ + { + "method": "equal", + "attribute": "ip", + "values": [ + "127.0.0.1" + ] + } + ] + }, + "config": { + "type": "object", + "additionalProperties": true, + "description": "Action specific configuration.", + "x-example": [] + }, + "challengeType": { + "type": "string", + "description": "Challenge type enforced when the rule matches.", + "x-example": "compute" + }, + "difficulty": { + "type": "integer", + "description": "Challenge difficulty from 1 (easiest) to 5 (hardest) enforced when the rule matches.", + "x-example": 3, + "format": "int32" + }, + "ttl": { + "type": "integer", + "description": "Seconds a visitor stays cleared after passing the challenge before being challenged again.", + "x-example": 1800, + "format": "int32" + } + }, + "required": [ + "$id", + "$createdAt", + "$updatedAt", + "name", + "description", + "teamId", + "projectId", + "resourceType", + "resourceId", + "action", + "priority", + "enabled", + "conditions", + "config", + "challengeType", + "difficulty", + "ttl" + ], + "example": { + "$id": "wafRule1", + "$createdAt": "2020-10-15T06:38:00.000+00:00", + "$updatedAt": "2020-10-15T06:38:00.000+00:00", + "name": "Block anonymous POST traffic", + "description": "Blocks anonymous POST calls to \/v1\/graphql", + "teamId": "5e5ea5c16897e", + "projectId": "cloudConsole", + "resourceType": "functions", + "resourceId": "functionId", + "action": "deny", + "priority": 100, + "enabled": true, + "conditions": [ + { + "method": "equal", + "attribute": "ip", + "values": [ + "127.0.0.1" + ] + } + ], + "config": [], + "challengeType": "compute", + "difficulty": 3, + "ttl": 1800 + } + }, "wafRuleRateLimit": { "description": "WafRuleRateLimit", "type": "object", @@ -95838,6 +97281,11 @@ "description": "Interval in seconds for the rate limit window.", "x-example": 60, "format": "int32" + }, + "key": { + "type": "string", + "description": "Rate limit key: `ip` limits per client IP, `userId` limits per authenticated user.", + "x-example": "userId" } }, "required": [ @@ -95856,7 +97304,8 @@ "conditions", "config", "limit", - "interval" + "interval", + "key" ], "example": { "$id": "wafRule1", @@ -95882,7 +97331,8 @@ ], "config": [], "limit": 1000, - "interval": 60 + "interval": 60, + "key": "userId" } }, "wafRuleRedirect": { @@ -96534,6 +97984,15 @@ "demo": "" } }, + "Organization": { + "type": "apiKey", + "name": "X-Appwrite-Organization", + "description": "Your organization ID", + "in": "header", + "x-appwrite": { + "demo": "" + } + }, "JWT": { "type": "apiKey", "name": "X-Appwrite-JWT",