Merge branch '1.6.x' of https://github.com/appwrite/appwrite into release-sdks

This commit is contained in:
loks0n
2024-10-15 13:35:42 +01:00
28 changed files with 2008 additions and 1795 deletions
+2 -4
View File
@@ -30,8 +30,8 @@ jobs:
push: false
tags: ${{ env.IMAGE }}
load: true
cache-from: type=gha,scope=appwrite
cache-to: type=gha,mode=max,scope=appwrite
cache-from: type=gha
cache-to: type=gha,mode=max
outputs: type=docker,dest=/tmp/${{ env.IMAGE }}.tar
build-args: |
DEBUG=false
@@ -42,8 +42,6 @@ jobs:
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
restore-keys: |
appwrite-dev-
path: /tmp/${{ env.IMAGE }}.tar
unit_test:
+22 -22
View File
@@ -4160,28 +4160,6 @@ $projectCollections = array_merge([
'array' => true,
'filters' => [],
],
[
'$id' => ID::custom('resourceId'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('resourceType'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('statusCounters'),
'type' => Database::VAR_STRING,
@@ -4552,6 +4530,28 @@ $consoleCollections = array_merge([
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('pingCount'),
'type' => Database::VAR_INTEGER,
'format' => '',
'size' => 0,
'signed' => false,
'required' => false,
'default' => 0,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('pingedAt'),
'type' => Database::VAR_DATETIME,
'format' => '',
'size' => 0,
'signed' => false,
'required' => false,
'default' => null,
'array' => false,
'filters' => ['datetime'],
]
],
'indexes' => [
[
+15 -10
View File
@@ -3,7 +3,7 @@
const TEMPLATE_RUNTIMES = [
'NODE' => [
'name' => 'node',
'versions' => ['21.0', '20.0', '19.0', '18.0', '16.0', '14.5']
'versions' => ['22', '21.0', '20.0', '19.0', '18.0', '16.0', '14.5']
],
'PYTHON' => [
'name' => 'python',
@@ -11,7 +11,7 @@ const TEMPLATE_RUNTIMES = [
],
'DART' => [
'name' => 'dart',
'versions' => ['3.3', '3.1', '3.0', '2.19', '2.18', '2.17', '2.16', '2.16']
'versions' => ['3.5', '3.3', '3.1', '3.0', '2.19', '2.18', '2.17', '2.16', '2.16']
],
'GO' => [
'name' => 'go',
@@ -21,9 +21,13 @@ const TEMPLATE_RUNTIMES = [
'name' => 'php',
'versions' => ['8.3', '8.2', '8.1', '8.0']
],
'DENO' => [
'name' => 'deno',
'versions' => ['2.0', '1.46', '1.40', '1.35', '1.24', '1.21']
],
'BUN' => [
'name' => 'bun',
'versions' => ['1.0']
'versions' => ['1.1', '1.0']
],
'RUBY' => [
'name' => 'ruby',
@@ -51,7 +55,7 @@ return [
'id' => 'starter',
'name' => 'Starter function',
'tagline' =>
'A simple function to get started. Edit this function to explore endless possibilities with Appwrite Functions.',
'A simple function to get started. Edit this function to explore endless possibilities with Appwrite Functions.',
'permissions' => ['any'],
'events' => [],
'cron' => '',
@@ -73,6 +77,7 @@ return [
'src/index.php',
'php/starter'
),
...getRuntimes(TEMPLATE_RUNTIMES['DENO'], 'deno cache src/main.ts', 'src/main.ts', 'deno/starter'),
...getRuntimes(TEMPLATE_RUNTIMES['BUN'], 'bun install', 'src/main.ts', 'bun/starter'),
...getRuntimes(TEMPLATE_RUNTIMES['RUBY'], 'bundle install', 'lib/main.rb', 'ruby/starter'),
],
@@ -121,7 +126,7 @@ return [
'description' => 'Authentication token to access your Upstash Vector database. <a class="u-bold" target="_blank" href="https://upstash.com/docs/vector/overall/getstarted">Learn more</a>.',
'value' => '',
'placeholder' =>
'oe4wNTbwHVLcDNa6oceZfhBEABsCNYh43ii6Xdq4bKBH7mq7qJkUmc4cs3ABbYyuVKWZTxVQjiNjYgydn2dkhABNes4NAuDpj7qxUAmZYqGJT78',
'oe4wNTbwHVLcDNa6oceZfhBEABsCNYh43ii6Xdq4bKBH7mq7qJkUmc4cs3ABbYyuVKWZTxVQjiNjYgydn2dkhABNes4NAuDpj7qxUAmZYqGJT78',
'required' => true,
'type' => 'password'
]
@@ -227,7 +232,7 @@ return [
'id' => 'query-mongo-atlas',
'name' => 'Query MongoDB Atlas',
'tagline' =>
'Realtime NoSQL document database with geospecial, graph, search, and vector suport.',
'Realtime NoSQL document database with geospecial, graph, search, and vector suport.',
'permissions' => ['any'],
'events' => [],
'cron' => '',
@@ -252,7 +257,7 @@ return [
'description' => 'The endpoint to connect to your Mongo database. <a class="u-bold" target="_blank" href="https://www.mongodb.com/docs/atlas/getting-started/">Learn more</a>.',
'value' => '',
'placeholder' =>
'mongodb+srv://appwrite:Yx42hafg7Q4fgkxe@cluster0.7mslfog.mongodb.net/?retryWrites=true&w=majority&appName=Appwrite',
'mongodb+srv://appwrite:Yx42hafg7Q4fgkxe@cluster0.7mslfog.mongodb.net/?retryWrites=true&w=majority&appName=Appwrite',
'required' => true,
'type' => 'password'
]
@@ -264,7 +269,7 @@ return [
'id' => 'query-neon-postgres',
'name' => 'Query Neon Postgres',
'tagline' =>
'Reliable SQL database with replication, point-in-time recovery, and pgvector support.',
'Reliable SQL database with replication, point-in-time recovery, and pgvector support.',
'permissions' => ['any'],
'events' => [],
'cron' => '',
@@ -491,7 +496,7 @@ return [
'id' => 'censor-with-redact',
'name' => 'Censor with Redact',
'tagline' =>
'Censor sensitive information from a provided text string using Redact API by Pangea.',
'Censor sensitive information from a provided text string using Redact API by Pangea.',
'permissions' => ['any'],
'events' => [],
'cron' => '',
@@ -560,7 +565,7 @@ return [
'id' => 'github-issue-bot',
'name' => 'GitHub issue bot',
'tagline' =>
'Automate the process of responding to newly opened issues in a GitHub repository.',
'Automate the process of responding to newly opened issues in a GitHub repository.',
'permissions' => ['any'],
'events' => [],
'cron' => '',
+2 -2
View File
@@ -199,7 +199,7 @@ return [
[
'key' => 'web',
'name' => 'Console',
'version' => '1.1.0',
'version' => '1.2.1',
'url' => 'https://github.com/appwrite/sdk-for-console',
'package' => '',
'enabled' => true,
@@ -281,7 +281,7 @@ return [
[
'key' => 'php',
'name' => 'PHP',
'version' => '12.0.0',
'version' => '12.1.0',
'url' => 'https://github.com/appwrite/sdk-for-php',
'package' => 'https://packagist.org/packages/appwrite/appwrite',
'enabled' => true,
+96 -96
View File
@@ -43,7 +43,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 8,
"weight": 9,
"cookies": false,
"type": "",
"deprecated": false,
@@ -94,7 +94,7 @@
},
"x-appwrite": {
"method": "create",
"weight": 7,
"weight": 8,
"cookies": false,
"type": "",
"deprecated": false,
@@ -181,7 +181,7 @@
},
"x-appwrite": {
"method": "updateEmail",
"weight": 33,
"weight": 34,
"cookies": false,
"type": "",
"deprecated": false,
@@ -259,7 +259,7 @@
},
"x-appwrite": {
"method": "listIdentities",
"weight": 56,
"weight": 57,
"cookies": false,
"type": "",
"deprecated": false,
@@ -320,7 +320,7 @@
},
"x-appwrite": {
"method": "deleteIdentity",
"weight": 57,
"weight": 58,
"cookies": false,
"type": "",
"deprecated": false,
@@ -385,7 +385,7 @@
},
"x-appwrite": {
"method": "createJWT",
"weight": 28,
"weight": 29,
"cookies": false,
"type": "",
"deprecated": false,
@@ -436,7 +436,7 @@
},
"x-appwrite": {
"method": "listLogs",
"weight": 30,
"weight": 31,
"cookies": false,
"type": "",
"deprecated": false,
@@ -504,7 +504,7 @@
},
"x-appwrite": {
"method": "updateMFA",
"weight": 43,
"weight": 44,
"cookies": false,
"type": "",
"deprecated": false,
@@ -576,7 +576,7 @@
},
"x-appwrite": {
"method": "createMfaAuthenticator",
"weight": 45,
"weight": 46,
"cookies": false,
"type": "",
"deprecated": false,
@@ -644,7 +644,7 @@
},
"x-appwrite": {
"method": "updateMfaAuthenticator",
"weight": 46,
"weight": 47,
"cookies": false,
"type": "",
"deprecated": false,
@@ -724,7 +724,7 @@
},
"x-appwrite": {
"method": "deleteMfaAuthenticator",
"weight": 50,
"weight": 51,
"cookies": false,
"type": "",
"deprecated": false,
@@ -794,7 +794,7 @@
},
"x-appwrite": {
"method": "createMfaChallenge",
"weight": 51,
"weight": 52,
"cookies": false,
"type": "",
"deprecated": false,
@@ -870,7 +870,7 @@
},
"x-appwrite": {
"method": "updateMfaChallenge",
"weight": 52,
"weight": 53,
"cookies": false,
"type": "",
"deprecated": false,
@@ -948,7 +948,7 @@
},
"x-appwrite": {
"method": "listMfaFactors",
"weight": 44,
"weight": 45,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1001,7 +1001,7 @@
},
"x-appwrite": {
"method": "getMfaRecoveryCodes",
"weight": 49,
"weight": 50,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1052,7 +1052,7 @@
},
"x-appwrite": {
"method": "createMfaRecoveryCodes",
"weight": 47,
"weight": 48,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1103,7 +1103,7 @@
},
"x-appwrite": {
"method": "updateMfaRecoveryCodes",
"weight": 48,
"weight": 49,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1156,7 +1156,7 @@
},
"x-appwrite": {
"method": "updateName",
"weight": 31,
"weight": 32,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1228,7 +1228,7 @@
},
"x-appwrite": {
"method": "updatePassword",
"weight": 32,
"weight": 33,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1305,7 +1305,7 @@
},
"x-appwrite": {
"method": "updatePhone",
"weight": 34,
"weight": 35,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1383,7 +1383,7 @@
},
"x-appwrite": {
"method": "getPrefs",
"weight": 29,
"weight": 30,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1434,7 +1434,7 @@
},
"x-appwrite": {
"method": "updatePrefs",
"weight": 35,
"weight": 36,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1506,7 +1506,7 @@
},
"x-appwrite": {
"method": "createRecovery",
"weight": 37,
"weight": 38,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1585,7 +1585,7 @@
},
"x-appwrite": {
"method": "updateRecovery",
"weight": 38,
"weight": 39,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1669,7 +1669,7 @@
},
"x-appwrite": {
"method": "listSessions",
"weight": 10,
"weight": 11,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1713,7 +1713,7 @@
},
"x-appwrite": {
"method": "deleteSessions",
"weight": 11,
"weight": 12,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1766,7 +1766,7 @@
},
"x-appwrite": {
"method": "createAnonymousSession",
"weight": 16,
"weight": 17,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1817,7 +1817,7 @@
},
"x-appwrite": {
"method": "createEmailPasswordSession",
"weight": 15,
"weight": 16,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1893,7 +1893,7 @@
},
"x-appwrite": {
"method": "updateMagicURLSession",
"weight": 25,
"weight": 26,
"cookies": false,
"type": "",
"deprecated": true,
@@ -1962,7 +1962,7 @@
},
"x-appwrite": {
"method": "createOAuth2Session",
"weight": 18,
"weight": 19,
"cookies": false,
"type": "webAuth",
"deprecated": false,
@@ -2105,7 +2105,7 @@
},
"x-appwrite": {
"method": "updatePhoneSession",
"weight": 26,
"weight": 27,
"cookies": false,
"type": "",
"deprecated": true,
@@ -2181,7 +2181,7 @@
},
"x-appwrite": {
"method": "createSession",
"weight": 17,
"weight": 18,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2257,7 +2257,7 @@
},
"x-appwrite": {
"method": "getSession",
"weight": 12,
"weight": 13,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2320,7 +2320,7 @@
},
"x-appwrite": {
"method": "updateSession",
"weight": 14,
"weight": 15,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2376,7 +2376,7 @@
},
"x-appwrite": {
"method": "deleteSession",
"weight": 13,
"weight": 14,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2441,7 +2441,7 @@
},
"x-appwrite": {
"method": "updateStatus",
"weight": 36,
"weight": 37,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2494,7 +2494,7 @@
},
"x-appwrite": {
"method": "createPushTarget",
"weight": 53,
"weight": 54,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2575,7 +2575,7 @@
},
"x-appwrite": {
"method": "updatePushTarget",
"weight": 54,
"weight": 55,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2655,7 +2655,7 @@
},
"x-appwrite": {
"method": "deletePushTarget",
"weight": 55,
"weight": 56,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2718,7 +2718,7 @@
},
"x-appwrite": {
"method": "createEmailToken",
"weight": 24,
"weight": 25,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2799,7 +2799,7 @@
},
"x-appwrite": {
"method": "createMagicURLToken",
"weight": 23,
"weight": 24,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2881,7 +2881,7 @@
},
"x-appwrite": {
"method": "createOAuth2Token",
"weight": 22,
"weight": 23,
"cookies": false,
"type": "webAuth",
"deprecated": false,
@@ -3024,7 +3024,7 @@
},
"x-appwrite": {
"method": "createPhoneToken",
"weight": 27,
"weight": 28,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3103,7 +3103,7 @@
},
"x-appwrite": {
"method": "createVerification",
"weight": 39,
"weight": 40,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3173,7 +3173,7 @@
},
"x-appwrite": {
"method": "updateVerification",
"weight": 40,
"weight": 41,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3251,7 +3251,7 @@
},
"x-appwrite": {
"method": "createPhoneVerification",
"weight": 41,
"weight": 42,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3305,7 +3305,7 @@
},
"x-appwrite": {
"method": "updatePhoneVerification",
"weight": 42,
"weight": 43,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3376,7 +3376,7 @@
},
"x-appwrite": {
"method": "getBrowser",
"weight": 59,
"weight": 60,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3504,7 +3504,7 @@
},
"x-appwrite": {
"method": "getCreditCard",
"weight": 58,
"weight": 59,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3636,7 +3636,7 @@
},
"x-appwrite": {
"method": "getFavicon",
"weight": 62,
"weight": 63,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3696,7 +3696,7 @@
},
"x-appwrite": {
"method": "getFlag",
"weight": 60,
"weight": 61,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4186,7 +4186,7 @@
},
"x-appwrite": {
"method": "getImage",
"weight": 61,
"weight": 62,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4270,7 +4270,7 @@
},
"x-appwrite": {
"method": "getInitials",
"weight": 64,
"weight": 65,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4364,7 +4364,7 @@
},
"x-appwrite": {
"method": "getQR",
"weight": 63,
"weight": 64,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4465,7 +4465,7 @@
},
"x-appwrite": {
"method": "listDocuments",
"weight": 108,
"weight": 109,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4552,7 +4552,7 @@
},
"x-appwrite": {
"method": "createDocument",
"weight": 107,
"weight": 108,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4661,7 +4661,7 @@
},
"x-appwrite": {
"method": "getDocument",
"weight": 109,
"weight": 110,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4758,7 +4758,7 @@
},
"x-appwrite": {
"method": "updateDocument",
"weight": 111,
"weight": 112,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4859,7 +4859,7 @@
},
"x-appwrite": {
"method": "deleteDocument",
"weight": 112,
"weight": 113,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4945,7 +4945,7 @@
},
"x-appwrite": {
"method": "listExecutions",
"weight": 304,
"weight": 305,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5033,7 +5033,7 @@
},
"x-appwrite": {
"method": "createExecution",
"weight": 303,
"weight": 304,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5084,7 +5084,7 @@
"body": {
"type": "string",
"description": "HTTP body of execution. Default value is empty string.",
"x-example": null
"x-example": "<BODY>"
},
"async": {
"type": "boolean",
@@ -5150,7 +5150,7 @@
},
"x-appwrite": {
"method": "getExecution",
"weight": 305,
"weight": 306,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5226,7 +5226,7 @@
},
"x-appwrite": {
"method": "query",
"weight": 329,
"weight": 330,
"cookies": false,
"type": "graphql",
"deprecated": false,
@@ -5280,7 +5280,7 @@
},
"x-appwrite": {
"method": "mutation",
"weight": 328,
"weight": 329,
"cookies": false,
"type": "graphql",
"deprecated": false,
@@ -5334,7 +5334,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 116,
"weight": 117,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5388,7 +5388,7 @@
},
"x-appwrite": {
"method": "listCodes",
"weight": 117,
"weight": 118,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5442,7 +5442,7 @@
},
"x-appwrite": {
"method": "listContinents",
"weight": 121,
"weight": 122,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5496,7 +5496,7 @@
},
"x-appwrite": {
"method": "listCountries",
"weight": 118,
"weight": 119,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5550,7 +5550,7 @@
},
"x-appwrite": {
"method": "listCountriesEU",
"weight": 119,
"weight": 120,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5604,7 +5604,7 @@
},
"x-appwrite": {
"method": "listCountriesPhones",
"weight": 120,
"weight": 121,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5658,7 +5658,7 @@
},
"x-appwrite": {
"method": "listCurrencies",
"weight": 122,
"weight": 123,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5712,7 +5712,7 @@
},
"x-appwrite": {
"method": "listLanguages",
"weight": 123,
"weight": 124,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5766,7 +5766,7 @@
},
"x-appwrite": {
"method": "createSubscriber",
"weight": 380,
"weight": 381,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5851,7 +5851,7 @@
},
"x-appwrite": {
"method": "deleteSubscriber",
"weight": 384,
"weight": 385,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5928,7 +5928,7 @@
},
"x-appwrite": {
"method": "listFiles",
"weight": 206,
"weight": 207,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6016,7 +6016,7 @@
},
"x-appwrite": {
"method": "createFile",
"weight": 205,
"weight": 206,
"cookies": false,
"type": "upload",
"deprecated": false,
@@ -6116,7 +6116,7 @@
},
"x-appwrite": {
"method": "getFile",
"weight": 207,
"weight": 208,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6190,7 +6190,7 @@
},
"x-appwrite": {
"method": "updateFile",
"weight": 212,
"weight": 213,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6281,7 +6281,7 @@
},
"x-appwrite": {
"method": "deleteFile",
"weight": 213,
"weight": 214,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6350,7 +6350,7 @@
},
"x-appwrite": {
"method": "getFileDownload",
"weight": 209,
"weight": 210,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6419,7 +6419,7 @@
},
"x-appwrite": {
"method": "getFilePreview",
"weight": 208,
"weight": 209,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6637,7 +6637,7 @@
},
"x-appwrite": {
"method": "getFileView",
"weight": 210,
"weight": 211,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6713,7 +6713,7 @@
},
"x-appwrite": {
"method": "list",
"weight": 217,
"weight": 218,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6791,7 +6791,7 @@
},
"x-appwrite": {
"method": "create",
"weight": 216,
"weight": 217,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6878,7 +6878,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 218,
"weight": 219,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6942,7 +6942,7 @@
},
"x-appwrite": {
"method": "updateName",
"weight": 220,
"weight": 221,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7018,7 +7018,7 @@
},
"x-appwrite": {
"method": "delete",
"weight": 222,
"weight": 223,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7084,7 +7084,7 @@
},
"x-appwrite": {
"method": "listMemberships",
"weight": 224,
"weight": 225,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7172,7 +7172,7 @@
},
"x-appwrite": {
"method": "createMembership",
"weight": 223,
"weight": 224,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7285,7 +7285,7 @@
},
"x-appwrite": {
"method": "getMembership",
"weight": 225,
"weight": 226,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7359,7 +7359,7 @@
},
"x-appwrite": {
"method": "updateMembership",
"weight": 226,
"weight": 227,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7448,7 +7448,7 @@
},
"x-appwrite": {
"method": "deleteMembership",
"weight": 228,
"weight": 229,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7524,7 +7524,7 @@
},
"x-appwrite": {
"method": "updateMembershipStatus",
"weight": 227,
"weight": 228,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7624,7 +7624,7 @@
},
"x-appwrite": {
"method": "getPrefs",
"weight": 219,
"weight": 220,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7687,7 +7687,7 @@
},
"x-appwrite": {
"method": "updatePrefs",
"weight": 221,
"weight": 222,
"cookies": false,
"type": "",
"deprecated": false,
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+150 -156
View File
@@ -87,7 +87,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 8,
"weight": 9,
"cookies": false,
"type": "",
"deprecated": false,
@@ -140,7 +140,7 @@
},
"x-appwrite": {
"method": "create",
"weight": 7,
"weight": 8,
"cookies": false,
"type": "",
"deprecated": false,
@@ -233,7 +233,7 @@
},
"x-appwrite": {
"method": "updateEmail",
"weight": 33,
"weight": 34,
"cookies": false,
"type": "",
"deprecated": false,
@@ -315,7 +315,7 @@
},
"x-appwrite": {
"method": "listIdentities",
"weight": 56,
"weight": 57,
"cookies": false,
"type": "",
"deprecated": false,
@@ -379,7 +379,7 @@
},
"x-appwrite": {
"method": "deleteIdentity",
"weight": 57,
"weight": 58,
"cookies": false,
"type": "",
"deprecated": false,
@@ -444,7 +444,7 @@
},
"x-appwrite": {
"method": "createJWT",
"weight": 28,
"weight": 29,
"cookies": false,
"type": "",
"deprecated": false,
@@ -497,7 +497,7 @@
},
"x-appwrite": {
"method": "listLogs",
"weight": 30,
"weight": 31,
"cookies": false,
"type": "",
"deprecated": false,
@@ -566,7 +566,7 @@
},
"x-appwrite": {
"method": "updateMFA",
"weight": 43,
"weight": 44,
"cookies": false,
"type": "",
"deprecated": false,
@@ -641,7 +641,7 @@
},
"x-appwrite": {
"method": "createMfaAuthenticator",
"weight": 45,
"weight": 46,
"cookies": false,
"type": "",
"deprecated": false,
@@ -709,7 +709,7 @@
},
"x-appwrite": {
"method": "updateMfaAuthenticator",
"weight": 46,
"weight": 47,
"cookies": false,
"type": "",
"deprecated": false,
@@ -790,7 +790,7 @@
},
"x-appwrite": {
"method": "deleteMfaAuthenticator",
"weight": 50,
"weight": 51,
"cookies": false,
"type": "",
"deprecated": false,
@@ -860,7 +860,7 @@
},
"x-appwrite": {
"method": "createMfaChallenge",
"weight": 51,
"weight": 52,
"cookies": false,
"type": "",
"deprecated": false,
@@ -934,7 +934,7 @@
},
"x-appwrite": {
"method": "updateMfaChallenge",
"weight": 52,
"weight": 53,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1016,7 +1016,7 @@
},
"x-appwrite": {
"method": "listMfaFactors",
"weight": 44,
"weight": 45,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1071,7 +1071,7 @@
},
"x-appwrite": {
"method": "getMfaRecoveryCodes",
"weight": 49,
"weight": 50,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1124,7 +1124,7 @@
},
"x-appwrite": {
"method": "createMfaRecoveryCodes",
"weight": 47,
"weight": 48,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1177,7 +1177,7 @@
},
"x-appwrite": {
"method": "updateMfaRecoveryCodes",
"weight": 48,
"weight": 49,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1232,7 +1232,7 @@
},
"x-appwrite": {
"method": "updateName",
"weight": 31,
"weight": 32,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1307,7 +1307,7 @@
},
"x-appwrite": {
"method": "updatePassword",
"weight": 32,
"weight": 33,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1388,7 +1388,7 @@
},
"x-appwrite": {
"method": "updatePhone",
"weight": 34,
"weight": 35,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1470,7 +1470,7 @@
},
"x-appwrite": {
"method": "getPrefs",
"weight": 29,
"weight": 30,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1523,7 +1523,7 @@
},
"x-appwrite": {
"method": "updatePrefs",
"weight": 35,
"weight": 36,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1598,7 +1598,7 @@
},
"x-appwrite": {
"method": "createRecovery",
"weight": 37,
"weight": 38,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1681,7 +1681,7 @@
},
"x-appwrite": {
"method": "updateRecovery",
"weight": 38,
"weight": 39,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1770,7 +1770,7 @@
},
"x-appwrite": {
"method": "listSessions",
"weight": 10,
"weight": 11,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1818,7 +1818,7 @@
},
"x-appwrite": {
"method": "deleteSessions",
"weight": 11,
"weight": 12,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1873,7 +1873,7 @@
},
"x-appwrite": {
"method": "createAnonymousSession",
"weight": 16,
"weight": 17,
"cookies": false,
"type": "",
"deprecated": false,
@@ -1926,7 +1926,7 @@
},
"x-appwrite": {
"method": "createEmailPasswordSession",
"weight": 15,
"weight": 16,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2006,7 +2006,7 @@
},
"x-appwrite": {
"method": "updateMagicURLSession",
"weight": 25,
"weight": 26,
"cookies": false,
"type": "",
"deprecated": true,
@@ -2083,7 +2083,7 @@
},
"x-appwrite": {
"method": "createOAuth2Session",
"weight": 18,
"weight": 19,
"cookies": false,
"type": "webAuth",
"deprecated": false,
@@ -2221,7 +2221,7 @@
},
"x-appwrite": {
"method": "updatePhoneSession",
"weight": 26,
"weight": 27,
"cookies": false,
"type": "",
"deprecated": true,
@@ -2301,7 +2301,7 @@
},
"x-appwrite": {
"method": "createSession",
"weight": 17,
"weight": 18,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2381,7 +2381,7 @@
},
"x-appwrite": {
"method": "getSession",
"weight": 12,
"weight": 13,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2444,7 +2444,7 @@
},
"x-appwrite": {
"method": "updateSession",
"weight": 14,
"weight": 15,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2502,7 +2502,7 @@
},
"x-appwrite": {
"method": "deleteSession",
"weight": 13,
"weight": 14,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2567,7 +2567,7 @@
},
"x-appwrite": {
"method": "updateStatus",
"weight": 36,
"weight": 37,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2622,7 +2622,7 @@
},
"x-appwrite": {
"method": "createPushTarget",
"weight": 53,
"weight": 54,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2708,7 +2708,7 @@
},
"x-appwrite": {
"method": "updatePushTarget",
"weight": 54,
"weight": 55,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2784,7 +2784,7 @@
},
"x-appwrite": {
"method": "deletePushTarget",
"weight": 55,
"weight": 56,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2847,7 +2847,7 @@
},
"x-appwrite": {
"method": "createEmailToken",
"weight": 24,
"weight": 25,
"cookies": false,
"type": "",
"deprecated": false,
@@ -2933,7 +2933,7 @@
},
"x-appwrite": {
"method": "createMagicURLToken",
"weight": 23,
"weight": 24,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3025,7 +3025,7 @@
},
"x-appwrite": {
"method": "createOAuth2Token",
"weight": 22,
"weight": 23,
"cookies": false,
"type": "webAuth",
"deprecated": false,
@@ -3163,7 +3163,7 @@
},
"x-appwrite": {
"method": "createPhoneToken",
"weight": 27,
"weight": 28,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3246,7 +3246,7 @@
},
"x-appwrite": {
"method": "createVerification",
"weight": 39,
"weight": 40,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3319,7 +3319,7 @@
},
"x-appwrite": {
"method": "updateVerification",
"weight": 40,
"weight": 41,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3401,7 +3401,7 @@
},
"x-appwrite": {
"method": "createPhoneVerification",
"weight": 41,
"weight": 42,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3457,7 +3457,7 @@
},
"x-appwrite": {
"method": "updatePhoneVerification",
"weight": 42,
"weight": 43,
"cookies": false,
"type": "",
"deprecated": false,
@@ -3539,7 +3539,7 @@
},
"x-appwrite": {
"method": "getBrowser",
"weight": 59,
"weight": 60,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3668,7 +3668,7 @@
},
"x-appwrite": {
"method": "getCreditCard",
"weight": 58,
"weight": 59,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3801,7 +3801,7 @@
},
"x-appwrite": {
"method": "getFavicon",
"weight": 62,
"weight": 63,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -3868,7 +3868,7 @@
},
"x-appwrite": {
"method": "getFlag",
"weight": 60,
"weight": 61,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4359,7 +4359,7 @@
},
"x-appwrite": {
"method": "getImage",
"weight": 61,
"weight": 62,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4446,7 +4446,7 @@
},
"x-appwrite": {
"method": "getInitials",
"weight": 64,
"weight": 65,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4541,7 +4541,7 @@
},
"x-appwrite": {
"method": "getQR",
"weight": 63,
"weight": 64,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -4636,7 +4636,7 @@
},
"x-appwrite": {
"method": "listDocuments",
"weight": 108,
"weight": 109,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4720,7 +4720,7 @@
},
"x-appwrite": {
"method": "createDocument",
"weight": 107,
"weight": 108,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4828,7 +4828,7 @@
},
"x-appwrite": {
"method": "getDocument",
"weight": 109,
"weight": 110,
"cookies": false,
"type": "",
"deprecated": false,
@@ -4920,7 +4920,7 @@
},
"x-appwrite": {
"method": "updateDocument",
"weight": 111,
"weight": 112,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5019,7 +5019,7 @@
},
"x-appwrite": {
"method": "deleteDocument",
"weight": 112,
"weight": 113,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5101,7 +5101,7 @@
},
"x-appwrite": {
"method": "listExecutions",
"weight": 304,
"weight": 305,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5167,7 +5167,7 @@
"summary": "Create execution",
"operationId": "functionsCreateExecution",
"consumes": [
"multipart\/form-data"
"application\/json"
],
"produces": [
"multipart\/form-data"
@@ -5186,7 +5186,7 @@
},
"x-appwrite": {
"method": "createExecution",
"weight": 303,
"weight": 304,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5226,65 +5226,59 @@
"in": "path"
},
{
"name": "body",
"description": "HTTP body of execution. Default value is empty string.",
"required": false,
"type": "payload",
"default": "",
"in": "formData"
},
{
"name": "async",
"description": "Execute code in the background. Default value is false.",
"required": false,
"type": "boolean",
"x-example": false,
"default": false,
"in": "formData"
},
{
"name": "path",
"description": "HTTP path of execution. Path can include query params. Default value is \/",
"required": false,
"type": "string",
"x-example": "<PATH>",
"default": "\/",
"in": "formData"
},
{
"name": "method",
"description": "HTTP method of execution. Default value is GET.",
"required": false,
"type": "string",
"x-example": "GET",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"x-enum-name": "ExecutionMethod",
"x-enum-keys": [],
"default": "POST",
"in": "formData"
},
{
"name": "headers",
"description": "HTTP headers of execution. Defaults to empty.",
"required": false,
"type": "object",
"default": [],
"x-example": "{}",
"in": "formData"
},
{
"name": "scheduledAt",
"description": "Scheduled execution time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.",
"required": false,
"type": "string",
"in": "formData"
"name": "payload",
"in": "body",
"schema": {
"type": "object",
"properties": {
"body": {
"type": "string",
"description": "HTTP body of execution. Default value is empty string.",
"default": "",
"x-example": "<BODY>"
},
"async": {
"type": "boolean",
"description": "Execute code in the background. Default value is false.",
"default": false,
"x-example": false
},
"path": {
"type": "string",
"description": "HTTP path of execution. Path can include query params. Default value is \/",
"default": "\/",
"x-example": "<PATH>"
},
"method": {
"type": "string",
"description": "HTTP method of execution. Default value is GET.",
"default": "POST",
"x-example": "GET",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"x-enum-name": "ExecutionMethod",
"x-enum-keys": []
},
"headers": {
"type": "object",
"description": "HTTP headers of execution. Defaults to empty.",
"default": [],
"x-example": "{}"
},
"scheduledAt": {
"type": "string",
"description": "Scheduled execution time in [ISO 8601](https:\/\/www.iso.org\/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.",
"default": null,
"x-example": null
}
}
}
}
]
}
@@ -5313,7 +5307,7 @@
},
"x-appwrite": {
"method": "getExecution",
"weight": 305,
"weight": 306,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5387,7 +5381,7 @@
},
"x-appwrite": {
"method": "query",
"weight": 329,
"weight": 330,
"cookies": false,
"type": "graphql",
"deprecated": false,
@@ -5463,7 +5457,7 @@
},
"x-appwrite": {
"method": "mutation",
"weight": 328,
"weight": 329,
"cookies": false,
"type": "graphql",
"deprecated": false,
@@ -5539,7 +5533,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 116,
"weight": 117,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5595,7 +5589,7 @@
},
"x-appwrite": {
"method": "listCodes",
"weight": 117,
"weight": 118,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5651,7 +5645,7 @@
},
"x-appwrite": {
"method": "listContinents",
"weight": 121,
"weight": 122,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5707,7 +5701,7 @@
},
"x-appwrite": {
"method": "listCountries",
"weight": 118,
"weight": 119,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5763,7 +5757,7 @@
},
"x-appwrite": {
"method": "listCountriesEU",
"weight": 119,
"weight": 120,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5819,7 +5813,7 @@
},
"x-appwrite": {
"method": "listCountriesPhones",
"weight": 120,
"weight": 121,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5875,7 +5869,7 @@
},
"x-appwrite": {
"method": "listCurrencies",
"weight": 122,
"weight": 123,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5931,7 +5925,7 @@
},
"x-appwrite": {
"method": "listLanguages",
"weight": 123,
"weight": 124,
"cookies": false,
"type": "",
"deprecated": false,
@@ -5987,7 +5981,7 @@
},
"x-appwrite": {
"method": "createSubscriber",
"weight": 380,
"weight": 381,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6076,7 +6070,7 @@
},
"x-appwrite": {
"method": "deleteSubscriber",
"weight": 384,
"weight": 385,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6151,7 +6145,7 @@
},
"x-appwrite": {
"method": "listFiles",
"weight": 206,
"weight": 207,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6236,7 +6230,7 @@
},
"x-appwrite": {
"method": "createFile",
"weight": 205,
"weight": 206,
"cookies": false,
"type": "upload",
"deprecated": false,
@@ -6330,7 +6324,7 @@
},
"x-appwrite": {
"method": "getFile",
"weight": 207,
"weight": 208,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6402,7 +6396,7 @@
},
"x-appwrite": {
"method": "updateFile",
"weight": 212,
"weight": 213,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6493,7 +6487,7 @@
},
"x-appwrite": {
"method": "deleteFile",
"weight": 213,
"weight": 214,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6567,7 +6561,7 @@
},
"x-appwrite": {
"method": "getFileDownload",
"weight": 209,
"weight": 210,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6641,7 +6635,7 @@
},
"x-appwrite": {
"method": "getFilePreview",
"weight": 208,
"weight": 209,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6842,7 +6836,7 @@
},
"x-appwrite": {
"method": "getFileView",
"weight": 210,
"weight": 211,
"cookies": false,
"type": "location",
"deprecated": false,
@@ -6916,7 +6910,7 @@
},
"x-appwrite": {
"method": "list",
"weight": 217,
"weight": 218,
"cookies": false,
"type": "",
"deprecated": false,
@@ -6993,7 +6987,7 @@
},
"x-appwrite": {
"method": "create",
"weight": 216,
"weight": 217,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7087,7 +7081,7 @@
},
"x-appwrite": {
"method": "get",
"weight": 218,
"weight": 219,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7151,7 +7145,7 @@
},
"x-appwrite": {
"method": "updateName",
"weight": 220,
"weight": 221,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7228,7 +7222,7 @@
},
"x-appwrite": {
"method": "delete",
"weight": 222,
"weight": 223,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7294,7 +7288,7 @@
},
"x-appwrite": {
"method": "listMemberships",
"weight": 224,
"weight": 225,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7379,7 +7373,7 @@
},
"x-appwrite": {
"method": "createMembership",
"weight": 223,
"weight": 224,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7496,7 +7490,7 @@
},
"x-appwrite": {
"method": "getMembership",
"weight": 225,
"weight": 226,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7568,7 +7562,7 @@
},
"x-appwrite": {
"method": "updateMembership",
"weight": 226,
"weight": 227,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7656,7 +7650,7 @@
},
"x-appwrite": {
"method": "deleteMembership",
"weight": 228,
"weight": 229,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7730,7 +7724,7 @@
},
"x-appwrite": {
"method": "updateMembershipStatus",
"weight": 227,
"weight": 228,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7828,7 +7822,7 @@
},
"x-appwrite": {
"method": "getPrefs",
"weight": 219,
"weight": 220,
"cookies": false,
"type": "",
"deprecated": false,
@@ -7891,7 +7885,7 @@
},
"x-appwrite": {
"method": "updatePrefs",
"weight": 221,
"weight": 222,
"cookies": false,
"type": "",
"deprecated": false,
@@ -9590,7 +9584,7 @@
"format": "int32"
},
"responseBody": {
"type": "payload",
"type": "string",
"description": "HTTP response body. This will return empty unless execution is created as synchronous.",
"x-example": ""
},
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -6
View File
@@ -3656,11 +3656,10 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu
->inject('requestTimestamp')
->inject('response')
->inject('dbForProject')
->inject('queueForDeletes')
->inject('queueForEvents')
->inject('queueForUsage')
->inject('mode')
->action(function (string $databaseId, string $collectionId, string $documentId, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Delete $queueForDeletes, Event $queueForEvents, Usage $queueForUsage, string $mode) {
->action(function (string $databaseId, string $collectionId, string $documentId, ?\DateTime $requestTimestamp, Response $response, Database $dbForProject, Event $queueForEvents, Usage $queueForUsage, string $mode) {
$database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId));
$isAPIKey = Auth::isAppUser(Authorization::getRoles());
@@ -3733,10 +3732,6 @@ App::delete('/v1/databases/:databaseId/collections/:collectionId/documents/:docu
)
);
$queueForDeletes
->setType(DELETE_TYPE_AUDIT)
->setDocument($document);
$queueForEvents
->setParam('databaseId', $databaseId)
->setParam('collectionId', $collection->getId())
+1 -2
View File
@@ -11,7 +11,6 @@ use Appwrite\Event\Validator\FunctionEvent;
use Appwrite\Extend\Exception;
use Appwrite\Extend\Exception as AppwriteException;
use Appwrite\Functions\Validator\Headers;
use Appwrite\Functions\Validator\Payload;
use Appwrite\Functions\Validator\RuntimeSpecification;
use Appwrite\Messaging\Adapter\Realtime;
use Appwrite\Platform\Tasks\ScheduleExecutions;
@@ -1717,7 +1716,7 @@ App::post('/v1/functions/:functionId/executions')
->label('sdk.response.model', Response::MODEL_EXECUTION)
->label('sdk.request.type', Response::CONTENT_TYPE_JSON)
->param('functionId', '', new UID(), 'Function ID.')
->param('body', '', new Payload(10485760, 0), 'HTTP body of execution. Default value is empty string.', true)
->param('body', '', new Text(10485760, 0), 'HTTP body of execution. Default value is empty string.', true)
->param('async', false, new Boolean(true), 'Execute code in the background. Default value is false.', true)
->param('path', '/', new Text(2048), 'HTTP path of execution. Path can include query params. Default value is /', true)
->param('method', 'POST', new Whitelist(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], true), 'HTTP method of execution. Default value is GET.', true)
+52 -10
View File
@@ -6,6 +6,7 @@ use Ahc\Jwt\JWT;
use Appwrite\Auth\Auth;
use Appwrite\Event\Certificate;
use Appwrite\Event\Event;
use Appwrite\Event\Func;
use Appwrite\Event\Usage;
use Appwrite\Extend\Exception as AppwriteException;
use Appwrite\Network\Validator\Origin;
@@ -25,6 +26,7 @@ use Utopia\App;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Document;
use Utopia\Database\Helpers\ID;
use Utopia\Database\Query;
@@ -44,7 +46,7 @@ Config::setParam('domainVerification', false);
Config::setParam('cookieDomain', 'localhost');
Config::setParam('cookieSamesite', Response::COOKIE_SAMESITE_NONE);
function router(App $utopia, Database $dbForConsole, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Event $queueForEvents, Usage $queueForUsage, Reader $geodb)
function router(App $utopia, Database $dbForConsole, callable $getProjectDB, SwooleRequest $swooleRequest, Request $request, Response $response, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb)
{
$utopia->getRoute()?->label('error', __DIR__ . '/../views/general/error.phtml');
@@ -366,7 +368,11 @@ function router(App $utopia, Database $dbForConsole, callable $getProjectDB, Swo
->trigger()
;
$execution = Authorization::skip(fn () => $dbForProject->createDocument('executions', $execution));
$queueForFunctions
->setType(Func::TYPE_ASYNC_WRITE)
->setExecution($execution)
->setProject($project)
->trigger();
}
$execution->setAttribute('logs', '');
@@ -450,7 +456,8 @@ App::init()
->inject('queueForUsage')
->inject('queueForEvents')
->inject('queueForCertificates')
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates) {
->inject('queueForFunctions')
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Document $console, Document $project, Database $dbForConsole, callable $getProjectDB, Locale $locale, array $localeCodes, array $clients, Reader $geodb, Usage $queueForUsage, Event $queueForEvents, Certificate $queueForCertificates, Func $queueForFunctions) {
/*
* Appwrite Router
*/
@@ -458,7 +465,7 @@ App::init()
$mainDomain = System::getEnv('_APP_DOMAIN', '');
// Only run Router when external domain
if ($host !== $mainDomain) {
if (router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $geodb)) {
if (router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb)) {
return;
}
}
@@ -666,8 +673,9 @@ App::options()
->inject('getProjectDB')
->inject('queueForEvents')
->inject('queueForUsage')
->inject('queueForFunctions')
->inject('geodb')
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Reader $geodb) {
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb) {
/*
* Appwrite Router
*/
@@ -675,7 +683,7 @@ App::options()
$mainDomain = System::getEnv('_APP_DOMAIN', '');
// Only run Router when external domain
if ($host !== $mainDomain) {
if (router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $geodb)) {
if (router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb)) {
return;
}
}
@@ -957,8 +965,9 @@ App::get('/robots.txt')
->inject('getProjectDB')
->inject('queueForEvents')
->inject('queueForUsage')
->inject('queueForFunctions')
->inject('geodb')
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Reader $geodb) {
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb) {
$host = $request->getHostname() ?? '';
$mainDomain = System::getEnv('_APP_DOMAIN', '');
@@ -966,7 +975,7 @@ App::get('/robots.txt')
$template = new View(__DIR__ . '/../views/general/robots.phtml');
$response->text($template->render(false));
} else {
router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $geodb);
router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb);
}
});
@@ -982,8 +991,9 @@ App::get('/humans.txt')
->inject('getProjectDB')
->inject('queueForEvents')
->inject('queueForUsage')
->inject('queueForFunctions')
->inject('geodb')
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Reader $geodb) {
->action(function (App $utopia, SwooleRequest $swooleRequest, Request $request, Response $response, Database $dbForConsole, callable $getProjectDB, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb) {
$host = $request->getHostname() ?? '';
$mainDomain = System::getEnv('_APP_DOMAIN', '');
@@ -991,7 +1001,7 @@ App::get('/humans.txt')
$template = new View(__DIR__ . '/../views/general/humans.phtml');
$response->text($template->render(false));
} else {
router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $geodb);
router($utopia, $dbForConsole, $getProjectDB, $swooleRequest, $request, $response, $queueForEvents, $queueForUsage, $queueForFunctions, $geodb);
}
});
@@ -1048,6 +1058,38 @@ App::get('/.well-known/acme-challenge/*')
include_once __DIR__ . '/shared/api.php';
include_once __DIR__ . '/shared/api/auth.php';
App::get('/v1/ping')
->groups(['api', 'general'])
->desc('Test the connection between the Appwrite and the SDK.')
->label('scope', 'global')
->label('event', 'projects.[projectId].ping')
->inject('response')
->inject('project')
->inject('dbForConsole')
->inject('queueForEvents')
->action(function (Response $response, Document $project, Database $dbForConsole, Event $queueForEvents) {
if ($project->isEmpty()) {
throw new AppwriteException(AppwriteException::PROJECT_NOT_FOUND);
}
$pingCount = $project->getAttribute('pingCount', 0) + 1;
$pingedAt = DateTime::now();
$project
->setAttribute('pingCount', $pingCount)
->setAttribute('pingedAt', $pingedAt);
Authorization::skip(function () use ($dbForConsole, $project) {
$dbForConsole->updateDocument('projects', $project->getId(), $project);
});
$queueForEvents
->setParam('projectId', $project->getId())
->setPayload($response->output($project, Response::MODEL_PROJECT));
$response->text('Pong!');
});
App::wildcard()
->groups(['api'])
->label('scope', 'global')
+3 -3
View File
@@ -42,7 +42,7 @@
"ext-openssl": "*",
"ext-zlib": "*",
"ext-sockets": "*",
"appwrite/php-runtimes": "0.15.*",
"appwrite/php-runtimes": "0.16.*",
"appwrite/php-clamav": "2.0.*",
"utopia-php/abuse": "0.43.0",
"utopia-php/analytics": "0.10.*",
@@ -68,7 +68,7 @@
"utopia-php/registry": "0.5.*",
"utopia-php/storage": "0.18.*",
"utopia-php/swoole": "0.8.*",
"utopia-php/system": "0.8.*",
"utopia-php/system": "0.9.*",
"utopia-php/vcs": "0.8.*",
"utopia-php/websocket": "0.1.*",
"matomo/device-detector": "6.1.*",
@@ -82,7 +82,7 @@
},
"require-dev": {
"ext-fileinfo": "*",
"appwrite/sdk-generator": "dev-feat-multipart",
"appwrite/sdk-generator": "dev-master",
"phpunit/phpunit": "9.5.20",
"swoole/ide-helper": "5.1.2",
"textalk/websocket": "1.5.7",
Generated
+53 -52
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "9ac4d1a03584899423f89511c260f3e4",
"content-hash": "865034db0a7ce59cae1c9f9b2c71d7b7",
"packages": [
{
"name": "adhocore/jwt",
@@ -157,21 +157,21 @@
},
{
"name": "appwrite/php-runtimes",
"version": "0.15.0",
"version": "0.16.2",
"source": {
"type": "git",
"url": "https://github.com/appwrite/runtimes.git",
"reference": "68ea5bcc24c513a6d641ddf9412bbab13e5dfb94"
"reference": "c33005e3eaaf2d427e9fd1077d5335e31f4d36f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite/runtimes/zipball/68ea5bcc24c513a6d641ddf9412bbab13e5dfb94",
"reference": "68ea5bcc24c513a6d641ddf9412bbab13e5dfb94",
"url": "https://api.github.com/repos/appwrite/runtimes/zipball/c33005e3eaaf2d427e9fd1077d5335e31f4d36f9",
"reference": "c33005e3eaaf2d427e9fd1077d5335e31f4d36f9",
"shasum": ""
},
"require": {
"php": ">=8.0",
"utopia-php/system": "0.8.*"
"utopia-php/system": "0.9.*"
},
"require-dev": {
"laravel/pint": "^1.15",
@@ -206,9 +206,9 @@
],
"support": {
"issues": "https://github.com/appwrite/runtimes/issues",
"source": "https://github.com/appwrite/runtimes/tree/0.15.0"
"source": "https://github.com/appwrite/runtimes/tree/0.16.2"
},
"time": "2024-08-21T10:23:45+00:00"
"time": "2024-10-09T15:02:52+00:00"
},
{
"name": "beberlei/assert",
@@ -2070,16 +2070,16 @@
},
{
"name": "utopia-php/logger",
"version": "0.6.1",
"version": "0.6.2",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/logger.git",
"reference": "7e8ff512c6f04577aba1df67c7b9628971946f9c"
"reference": "25b5bd2ad8bb51292f76332faa7034644fd0941d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/logger/zipball/7e8ff512c6f04577aba1df67c7b9628971946f9c",
"reference": "7e8ff512c6f04577aba1df67c7b9628971946f9c",
"url": "https://api.github.com/repos/utopia-php/logger/zipball/25b5bd2ad8bb51292f76332faa7034644fd0941d",
"reference": "25b5bd2ad8bb51292f76332faa7034644fd0941d",
"shasum": ""
},
"require": {
@@ -2118,22 +2118,22 @@
],
"support": {
"issues": "https://github.com/utopia-php/logger/issues",
"source": "https://github.com/utopia-php/logger/tree/0.6.1"
"source": "https://github.com/utopia-php/logger/tree/0.6.2"
},
"time": "2024-09-20T14:02:12+00:00"
"time": "2024-10-14T16:02:49+00:00"
},
{
"name": "utopia-php/messaging",
"version": "0.12.0",
"version": "0.12.1",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/messaging.git",
"reference": "6e466d3511981291843c6ebf9ce3f44fc75e37b0"
"reference": "b9dfafb5efc1d12cbee01d03dc98853ef026e35b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/messaging/zipball/6e466d3511981291843c6ebf9ce3f44fc75e37b0",
"reference": "6e466d3511981291843c6ebf9ce3f44fc75e37b0",
"url": "https://api.github.com/repos/utopia-php/messaging/zipball/b9dfafb5efc1d12cbee01d03dc98853ef026e35b",
"reference": "b9dfafb5efc1d12cbee01d03dc98853ef026e35b",
"shasum": ""
},
"require": {
@@ -2169,22 +2169,22 @@
],
"support": {
"issues": "https://github.com/utopia-php/messaging/issues",
"source": "https://github.com/utopia-php/messaging/tree/0.12.0"
"source": "https://github.com/utopia-php/messaging/tree/0.12.1"
},
"time": "2024-05-30T14:58:25+00:00"
"time": "2024-10-09T08:17:07+00:00"
},
{
"name": "utopia-php/migration",
"version": "0.6.5",
"version": "0.6.8",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/migration.git",
"reference": "7b2d40d526b82e9b92a17ea681b8103222e3c86a"
"reference": "c3740de52c1b616aa7f054d0fadb9207895b5279"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/7b2d40d526b82e9b92a17ea681b8103222e3c86a",
"reference": "7b2d40d526b82e9b92a17ea681b8103222e3c86a",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/c3740de52c1b616aa7f054d0fadb9207895b5279",
"reference": "c3740de52c1b616aa7f054d0fadb9207895b5279",
"shasum": ""
},
"require": {
@@ -2225,9 +2225,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/migration/issues",
"source": "https://github.com/utopia-php/migration/tree/0.6.5"
"source": "https://github.com/utopia-php/migration/tree/0.6.8"
},
"time": "2024-10-07T08:54:05+00:00"
"time": "2024-10-10T08:09:19+00:00"
},
{
"name": "utopia-php/mongo",
@@ -2714,16 +2714,16 @@
},
{
"name": "utopia-php/system",
"version": "0.8.0",
"version": "0.9.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/system.git",
"reference": "a2cbfb3c69b9ecb8b6f06c5774f3cf279ea7665e"
"reference": "8e4a7edaf2dfeb4c9524e9f766d27754f2c4b64d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/system/zipball/a2cbfb3c69b9ecb8b6f06c5774f3cf279ea7665e",
"reference": "a2cbfb3c69b9ecb8b6f06c5774f3cf279ea7665e",
"url": "https://api.github.com/repos/utopia-php/system/zipball/8e4a7edaf2dfeb4c9524e9f766d27754f2c4b64d",
"reference": "8e4a7edaf2dfeb4c9524e9f766d27754f2c4b64d",
"shasum": ""
},
"require": {
@@ -2764,9 +2764,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/system/issues",
"source": "https://github.com/utopia-php/system/tree/0.8.0"
"source": "https://github.com/utopia-php/system/tree/0.9.0"
},
"time": "2024-04-01T10:22:28+00:00"
"time": "2024-10-09T14:44:01+00:00"
},
{
"name": "utopia-php/vcs",
@@ -3002,16 +3002,16 @@
"packages-dev": [
{
"name": "appwrite/sdk-generator",
"version": "dev-feat-multipart",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/appwrite/sdk-generator.git",
"reference": "0dbf8fddd8a866bd29bfa9428a38fa6c83c8b80e"
"reference": "a810403a7e37c43523663e9537e070fe62ceb3e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/0dbf8fddd8a866bd29bfa9428a38fa6c83c8b80e",
"reference": "0dbf8fddd8a866bd29bfa9428a38fa6c83c8b80e",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/a810403a7e37c43523663e9537e070fe62ceb3e7",
"reference": "a810403a7e37c43523663e9537e070fe62ceb3e7",
"shasum": ""
},
"require": {
@@ -3020,14 +3020,14 @@
"ext-mbstring": "*",
"matthiasmullie/minify": "1.3.*",
"php": ">=8.0",
"twig/twig": "3.14.*",
"utopia-php/fetch": "^0.2.1"
"twig/twig": "3.14.*"
},
"require-dev": {
"brianium/paratest": "7.*",
"phpunit/phpunit": "11.*",
"squizlabs/php_codesniffer": "3.*"
},
"default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
@@ -3048,9 +3048,9 @@
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
"support": {
"issues": "https://github.com/appwrite/sdk-generator/issues",
"source": "https://github.com/appwrite/sdk-generator/tree/feat-multipart"
"source": "https://github.com/appwrite/sdk-generator/tree/master"
},
"time": "2024-10-08T10:06:20+00:00"
"time": "2024-10-14T16:51:18+00:00"
},
{
"name": "doctrine/annotations",
@@ -3574,16 +3574,16 @@
},
{
"name": "nikic/php-parser",
"version": "v5.3.0",
"version": "v5.3.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a"
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a",
"reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b",
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b",
"shasum": ""
},
"require": {
@@ -3626,9 +3626,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0"
"source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1"
},
"time": "2024-09-29T13:56:26+00:00"
"time": "2024-10-08T18:51:32+00:00"
},
{
"name": "phar-io/manifest",
@@ -3848,6 +3848,7 @@
"issues": "https://github.com/phpbench/dom/issues",
"source": "https://github.com/phpbench/dom/tree/0.3.3"
},
"abandoned": true,
"time": "2023-03-06T23:46:57+00:00"
},
{
@@ -4195,16 +4196,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "1.32.0",
"version": "1.33.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4"
"reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
"reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140",
"reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140",
"shasum": ""
},
"require": {
@@ -4236,9 +4237,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0"
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0"
},
"time": "2024-09-26T07:23:32+00:00"
"time": "2024-10-13T11:25:22+00:00"
},
{
"name": "phpunit/php-code-coverage",
+2
View File
@@ -8,6 +8,8 @@ use Utopia\Queue\Connection;
class Func extends Event
{
public const TYPE_ASYNC_WRITE = 'async_write';
protected string $jwt = '';
protected string $type = '';
protected string $body = '';
@@ -270,6 +270,12 @@ class Realtime extends Adapter
$projectId = 'console';
$roles = [Role::team($project->getAttribute('teamId'))->toString()];
break;
case 'projects':
$channels[] = 'console';
$channels[] = 'projects.' . $parts[1];
$projectId = 'console';
$roles = [Role::team($project->getAttribute('teamId'))->toString()];
break;
case 'teams':
if ($parts[2] === 'memberships') {
$permissionsChanged = $parts[4] ?? false;
@@ -5,7 +5,6 @@ namespace Appwrite\Platform\Workers;
use Appwrite\Event\Event;
use Appwrite\Messaging\Adapter\Realtime;
use Exception;
use Utopia\Audit\Audit;
use Utopia\CLI\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
@@ -492,8 +491,6 @@ class Databases extends Action
});
$dbForProject->deleteCollection('database_' . $database->getInternalId());
$this->deleteAuditLogsByResource('database/' . $database->getId(), $project, $dbForProject);
}
/**
@@ -549,23 +546,8 @@ class Databases extends Action
Query::equal('databaseInternalId', [$databaseInternalId]),
Query::equal('collectionInternalId', [$collectionInternalId])
], $dbForProject);
$this->deleteAuditLogsByResource('database/' . $databaseId . '/collection/' . $collectionId, $project, $dbForProject);
}
/**
* @param string $resource
* @param Document $project
* @param Database $dbForProject
* @return void
* @throws Exception
*/
protected function deleteAuditLogsByResource(string $resource, Document $project, Database $dbForProject): void
{
$this->deleteByGroup(Audit::COLLECTION, [
Query::equal('resource', [$resource])
], $dbForProject);
}
/**
* @param string $collection collectionID
-20
View File
@@ -119,10 +119,6 @@ class Deletes extends Action
if (!$project->isEmpty()) {
$this->deleteAuditLogs($project, $getProjectDB, $auditRetention);
}
if (!$document->isEmpty()) {
$this->deleteAuditLogsByResource($getProjectDB, 'document/' . $document->getId(), $project);
}
break;
case DELETE_TYPE_ABUSE:
$this->deleteAbuseLogs($project, $getProjectDB, $abuseRetention);
@@ -733,22 +729,6 @@ class Deletes extends Action
}
}
/**
* @param callable $getProjectDB
* @param string $resource
* @param Document $project
* @return void
* @throws Exception
*/
private function deleteAuditLogsByResource(callable $getProjectDB, string $resource, Document $project): void
{
$dbForProject = $getProjectDB($project);
$this->deleteByGroup(Audit::COLLECTION, [
Query::equal('resource', [$resource])
], $dbForProject);
}
/**
* @param callable $getProjectDB
* @param Device $deviceForFunctions
@@ -72,6 +72,14 @@ class Functions extends Action
}
$type = $payload['type'] ?? '';
// Short-term solution to offhand write operation from API contianer
if ($type === Func::TYPE_ASYNC_WRITE) {
$execution = new Document($payload['execution'] ?? []);
$execution = $dbForProject->createDocument('executions', $execution);
return;
}
$events = $payload['events'] ?? [];
$data = $payload['body'] ?? '';
$eventData = $payload['payload'] ?? '';
@@ -399,6 +399,11 @@ class Migrations extends Action
throw new Exception('Migration failed');
}
if ($migration->getAttribute('status', '') === 'completed') {
$destination->success();
$source->success();
}
}
}
}
@@ -81,7 +81,7 @@ class Execution extends Model
'example' => 200,
])
->addRule('responseBody', [
'type' => self::TYPE_PAYLOAD,
'type' => self::TYPE_STRING,
'description' => 'HTTP response body. This will return empty unless execution is created as synchronous.',
'default' => '',
])
@@ -18,7 +18,7 @@ class Migration extends Model
])
->addRule('$createdAt', [
'type' => self::TYPE_DATETIME,
'description' => 'Variable creation date in ISO 8601 format.',
'description' => 'Migration creation date in ISO 8601 format.',
'default' => '',
'example' => self::TYPE_DATETIME_EXAMPLE,
])
@@ -234,6 +234,18 @@ class Project extends Model
'default' => '',
'example' => 'tls',
])
->addRule('pingCount', [
'type' => self::TYPE_INTEGER,
'description' => 'Number of times the ping was received for this project.',
'default' => 0,
'example' => 1,
])
->addRule('pingedAt', [
'type' => self::TYPE_DATETIME,
'description' => 'Last ping datetime in ISO 8601 format.',
'default' => '',
'example' => self::TYPE_DATETIME_EXAMPLE,
])
;
$services = Config::getParam('services', []);
+55
View File
@@ -0,0 +1,55 @@
<?php
namespace Tests\E2E\General;
use Tests\E2E\Client;
use Tests\E2E\Scopes\ProjectCustom;
use Tests\E2E\Scopes\Scope;
use Tests\E2E\Scopes\SideClient;
class PingTest extends Scope
{
use ProjectCustom;
use SideClient;
public function testPing()
{
/**
* Test for SUCCESS
*/
// Without user session
$response = $this->client->call(Client::METHOD_GET, '/ping', [
'x-appwrite-project' => $this->getProject()['$id'],
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals('Pong!', $response['body']);
// With user session
$response = $this->client->call(Client::METHOD_GET, '/ping', array_merge([
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()));
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals('Pong!', $response['body']);
// With API key
$response = $this->client->call(Client::METHOD_GET, '/ping', [
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals('Pong!', $response['body']);
/**
* Test for FAILURE
*/
// Fake project ID
$response = $this->client->call(Client::METHOD_GET, '/ping', \array_merge([
'x-appwrite-project' => 'fake-project-id',
], $this->getHeaders()));
$this->assertEquals(404, $response['headers']['status-code']);
$this->assertNotContains('Pong!', $response['body']);
}
}
@@ -258,12 +258,14 @@ class FunctionsCustomClientTest extends Scope
'x-appwrite-user-id' => "OVERRIDDEN",
'x-appwrite-user-jwt' => "OVERRIDDEN",
]);
$output = json_decode($execution['body']['responseBody'], true);
$this->assertNotEquals('OVERRIDDEN', $output['APPWRITE_FUNCTION_JWT']);
$this->assertNotEquals('OVERRIDDEN', $output['APPWRITE_FUNCTION_EVENT']);
$this->assertNotEquals('OVERRIDDEN', $output['APPWRITE_FUNCTION_TRIGGER']);
$this->assertNotEquals('OVERRIDDEN', $output['APPWRITE_FUNCTION_USER_ID']);
$this->cleanupFunction($functionId);
}
@@ -1675,6 +1675,17 @@ class FunctionsCustomServerTest extends Scope
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals($cookie, $response['body']);
// Async execution document creation
$this->assertEventually(function () use ($functionId) {
$executions = $this->client->call(Client::METHOD_GET, '/functions/' . $functionId . '/executions', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), []);
$this->assertEquals(200, $executions['headers']['status-code']);
$this->assertEquals(1, count($executions['body']['executions']));
});
// Await Aggregation
sleep(System::getEnv('_APP_USAGE_AGGREGATION_INTERVAL', 30));
@@ -478,6 +478,44 @@ class RealtimeConsoleClientTest extends Scope
$client->close();
}
public function testPing()
{
$client = $this->getWebsocket(['console'], [
'origin' => 'http://localhost',
'cookie' => 'a_session_console=' . $this->getRoot()['session'],
], 'console');
$response = json_decode($client->receive(), true);
$this->assertArrayHasKey('type', $response);
$this->assertEquals('connected', $response['type']);
$pong = $this->client->call(Client::METHOD_GET, '/ping', [
'origin' => 'http://localhost',
'x-appwrite-project' => $this->getProject()['$id'],
]);
$this->assertEquals(200, $pong['headers']['status-code']);
$this->assertEquals('Pong!', $pong['body']);
$response = json_decode($client->receive(), true);
$this->assertArrayHasKey('type', $response);
$this->assertEquals('event', $response['type']);
$this->assertNotEmpty($response['data']);
$this->assertArrayHasKey('timestamp', $response['data']);
$this->assertCount(2, $response['data']['channels']);
$this->assertContains('console', $response['data']['channels']);
$this->assertContains("projects.{$this->getProject()['$id']}", $response['data']['channels']);
$this->assertContains("projects.{$this->getProject()['$id']}.ping", $response['data']['events']);
$this->assertNotEmpty($response['data']['payload']);
$this->assertArrayHasKey('pingCount', $response['data']['payload']);
$this->assertArrayHasKey('pingedAt', $response['data']['payload']);
$this->assertEquals(1, $response['data']['payload']['pingCount']);
$client->close();
}
public function testCreateDeployment()
{
$response1 = $this->client->call(Client::METHOD_POST, '/functions', array_merge([