Merge branch '1.8.x' into refactor-auth-single-instance

This commit is contained in:
Shimon Newman 2025-10-27 16:24:08 +02:00 committed by GitHub
commit a0b21a0bd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
250 changed files with 5810 additions and 2403 deletions

View file

@ -202,6 +202,31 @@ return [
]
]
],
'tanstack-start' => [
'key' => 'tanstack-start',
'name' => 'TanStack Start',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/tanstack-start/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/tanstack-start/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/tanstack-start/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/client',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'remix' => [
'key' => 'remix',
'name' => 'Remix',

View file

@ -2,6 +2,38 @@
<html>
<head>
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<style type="text/css">
:root {
color-scheme: light dark;
supported-color-schemes: light dark;
}
@media (prefers-color-scheme: dark ) {
body {
color: #616b7c !important;
background-color: #ffffff !important;
}
a {
color: currentColor !important;
}
a.button {
color: #ffffff !important;
background-color: #2D2D31 !important;
border-color: #414146 !important;
}
h1, h2, h3 {
color: #373b4d !important;
}
h4 {
color: #4f5769 !important;
}
p.security-phrase:not(:empty), hr {
border-color: #e8e9f0 !important;
}
}
</style>
<style>
@font-face {
font-family: 'Inter';
@ -37,7 +69,6 @@
font-family: "Inter", sans-serif;
background-color: #ffffff;
margin: 0;
padding: 0;
}
a {
color: currentColor;

View file

@ -2,6 +2,38 @@
<html>
<head>
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<style type="text/css">
:root {
color-scheme: light dark;
supported-color-schemes: light dark;
}
@media (prefers-color-scheme: dark ) {
body {
color: #616b7c !important;
background-color: #ffffff !important;
}
a {
color: currentColor !important;
}
a.button {
color: #ffffff !important;
background-color: #2D2D31 !important;
border-color: #414146 !important;
}
h1, h2, h3 {
color: #373b4d !important;
}
h4 {
color: #4f5769 !important;
}
p.security-phrase:not(:empty), hr {
border-color: #e8e9f0 !important;
}
}
</style>
<style>
@font-face {
font-family: 'Inter';

View file

@ -11,7 +11,7 @@ return [
[
'key' => 'web',
'name' => 'Web',
'version' => '21.2.1',
'version' => '21.3.0',
'url' => 'https://github.com/appwrite/sdk-for-web',
'package' => 'https://www.npmjs.com/package/appwrite',
'enabled' => true,
@ -226,7 +226,7 @@ return [
[
'key' => 'cli',
'name' => 'Command Line',
'version' => '10.2.2',
'version' => '10.2.3',
'url' => 'https://github.com/appwrite/sdk-for-cli',
'package' => 'https://www.npmjs.com/package/appwrite-cli',
'enabled' => true,

View file

@ -4934,7 +4934,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 376,
"weight": 378,
"cookies": false,
"type": "",
"demo": "databases\/list-transactions.md",
@ -4999,7 +4999,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 372,
"weight": 374,
"cookies": false,
"type": "",
"demo": "databases\/create-transaction.md",
@ -5067,7 +5067,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 373,
"weight": 375,
"cookies": false,
"type": "",
"demo": "databases\/get-transaction.md",
@ -5129,7 +5129,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 374,
"weight": 376,
"cookies": false,
"type": "",
"demo": "databases\/update-transaction.md",
@ -5205,7 +5205,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 375,
"weight": 377,
"cookies": false,
"type": "",
"demo": "databases\/delete-transaction.md",
@ -5269,7 +5269,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 377,
"weight": 379,
"cookies": false,
"type": "",
"demo": "databases\/create-operations.md",
@ -5352,7 +5352,7 @@
"x-appwrite": {
"method": "listDocuments",
"group": "documents",
"weight": 335,
"weight": 337,
"cookies": false,
"type": "",
"demo": "databases\/list-documents.md",
@ -5451,7 +5451,7 @@
"x-appwrite": {
"method": "createDocument",
"group": "documents",
"weight": 327,
"weight": 329,
"cookies": false,
"type": "",
"demo": "databases\/create-document.md",
@ -5607,7 +5607,7 @@
"x-appwrite": {
"method": "getDocument",
"group": "documents",
"weight": 328,
"weight": 330,
"cookies": false,
"type": "",
"demo": "databases\/get-document.md",
@ -5716,7 +5716,7 @@
"x-appwrite": {
"method": "upsertDocument",
"group": "documents",
"weight": 331,
"weight": 333,
"cookies": false,
"type": "",
"demo": "databases\/upsert-document.md",
@ -5870,7 +5870,7 @@
"x-appwrite": {
"method": "updateDocument",
"group": "documents",
"weight": 329,
"weight": 331,
"cookies": false,
"type": "",
"demo": "databases\/update-document.md",
@ -5978,7 +5978,7 @@
"x-appwrite": {
"method": "deleteDocument",
"group": "documents",
"weight": 333,
"weight": 335,
"cookies": false,
"type": "",
"demo": "databases\/delete-document.md",
@ -6082,7 +6082,7 @@
"x-appwrite": {
"method": "decrementDocumentAttribute",
"group": "documents",
"weight": 338,
"weight": 340,
"cookies": false,
"type": "",
"demo": "databases\/decrement-document-attribute.md",
@ -6206,7 +6206,7 @@
"x-appwrite": {
"method": "incrementDocumentAttribute",
"group": "documents",
"weight": 337,
"weight": 339,
"cookies": false,
"type": "",
"demo": "databases\/increment-document-attribute.md",
@ -6330,7 +6330,7 @@
"x-appwrite": {
"method": "listExecutions",
"group": "executions",
"weight": 468,
"weight": 470,
"cookies": false,
"type": "",
"demo": "functions\/list-executions.md",
@ -6405,7 +6405,7 @@
"x-appwrite": {
"method": "createExecution",
"group": "executions",
"weight": 466,
"weight": 468,
"cookies": false,
"type": "",
"demo": "functions\/create-execution.md",
@ -6521,7 +6521,7 @@
"x-appwrite": {
"method": "getExecution",
"group": "executions",
"weight": 467,
"weight": 469,
"cookies": false,
"type": "",
"demo": "functions\/get-execution.md",
@ -7115,7 +7115,7 @@
"x-appwrite": {
"method": "createSubscriber",
"group": "subscribers",
"weight": 296,
"weight": 298,
"cookies": false,
"type": "",
"demo": "messaging\/create-subscriber.md",
@ -7198,7 +7198,7 @@
"x-appwrite": {
"method": "deleteSubscriber",
"group": "subscribers",
"weight": 300,
"weight": 302,
"cookies": false,
"type": "",
"demo": "messaging\/delete-subscriber.md",
@ -8076,7 +8076,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 441,
"weight": 443,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-transactions.md",
@ -8084,7 +8084,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client",
@ -8141,7 +8144,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 437,
"weight": 439,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-transaction.md",
@ -8149,7 +8152,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8209,7 +8215,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 438,
"weight": 440,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-transaction.md",
@ -8217,7 +8223,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client",
@ -8271,7 +8280,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 439,
"weight": 441,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-transaction.md",
@ -8279,7 +8288,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8347,7 +8359,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 440,
"weight": 442,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-transaction.md",
@ -8355,7 +8367,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8411,7 +8426,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 442,
"weight": 444,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-operations.md",
@ -8419,7 +8434,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8494,7 +8512,7 @@
"x-appwrite": {
"method": "listRows",
"group": "rows",
"weight": 433,
"weight": 435,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-rows.md",
@ -8592,7 +8610,7 @@
"x-appwrite": {
"method": "createRow",
"group": "rows",
"weight": 425,
"weight": 427,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-row.md",
@ -8743,7 +8761,7 @@
"x-appwrite": {
"method": "getRow",
"group": "rows",
"weight": 426,
"weight": 428,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-row.md",
@ -8851,7 +8869,7 @@
"x-appwrite": {
"method": "upsertRow",
"group": "rows",
"weight": 429,
"weight": 431,
"cookies": false,
"type": "",
"demo": "tablesdb\/upsert-row.md",
@ -8996,7 +9014,7 @@
"x-appwrite": {
"method": "updateRow",
"group": "rows",
"weight": 427,
"weight": 429,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-row.md",
@ -9103,7 +9121,7 @@
"x-appwrite": {
"method": "deleteRow",
"group": "rows",
"weight": 431,
"weight": 433,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-row.md",
@ -9206,7 +9224,7 @@
"x-appwrite": {
"method": "decrementRowColumn",
"group": "rows",
"weight": 436,
"weight": 438,
"cookies": false,
"type": "",
"demo": "tablesdb\/decrement-row-column.md",
@ -9329,7 +9347,7 @@
"x-appwrite": {
"method": "incrementRowColumn",
"group": "rows",
"weight": 435,
"weight": 437,
"cookies": false,
"type": "",
"demo": "tablesdb\/increment-row-column.md",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -4934,7 +4934,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 376,
"weight": 378,
"cookies": false,
"type": "",
"demo": "databases\/list-transactions.md",
@ -4999,7 +4999,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 372,
"weight": 374,
"cookies": false,
"type": "",
"demo": "databases\/create-transaction.md",
@ -5067,7 +5067,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 373,
"weight": 375,
"cookies": false,
"type": "",
"demo": "databases\/get-transaction.md",
@ -5129,7 +5129,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 374,
"weight": 376,
"cookies": false,
"type": "",
"demo": "databases\/update-transaction.md",
@ -5205,7 +5205,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 375,
"weight": 377,
"cookies": false,
"type": "",
"demo": "databases\/delete-transaction.md",
@ -5269,7 +5269,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 377,
"weight": 379,
"cookies": false,
"type": "",
"demo": "databases\/create-operations.md",
@ -5352,7 +5352,7 @@
"x-appwrite": {
"method": "listDocuments",
"group": "documents",
"weight": 335,
"weight": 337,
"cookies": false,
"type": "",
"demo": "databases\/list-documents.md",
@ -5451,7 +5451,7 @@
"x-appwrite": {
"method": "createDocument",
"group": "documents",
"weight": 327,
"weight": 329,
"cookies": false,
"type": "",
"demo": "databases\/create-document.md",
@ -5607,7 +5607,7 @@
"x-appwrite": {
"method": "getDocument",
"group": "documents",
"weight": 328,
"weight": 330,
"cookies": false,
"type": "",
"demo": "databases\/get-document.md",
@ -5716,7 +5716,7 @@
"x-appwrite": {
"method": "upsertDocument",
"group": "documents",
"weight": 331,
"weight": 333,
"cookies": false,
"type": "",
"demo": "databases\/upsert-document.md",
@ -5870,7 +5870,7 @@
"x-appwrite": {
"method": "updateDocument",
"group": "documents",
"weight": 329,
"weight": 331,
"cookies": false,
"type": "",
"demo": "databases\/update-document.md",
@ -5978,7 +5978,7 @@
"x-appwrite": {
"method": "deleteDocument",
"group": "documents",
"weight": 333,
"weight": 335,
"cookies": false,
"type": "",
"demo": "databases\/delete-document.md",
@ -6082,7 +6082,7 @@
"x-appwrite": {
"method": "decrementDocumentAttribute",
"group": "documents",
"weight": 338,
"weight": 340,
"cookies": false,
"type": "",
"demo": "databases\/decrement-document-attribute.md",
@ -6206,7 +6206,7 @@
"x-appwrite": {
"method": "incrementDocumentAttribute",
"group": "documents",
"weight": 337,
"weight": 339,
"cookies": false,
"type": "",
"demo": "databases\/increment-document-attribute.md",
@ -6330,7 +6330,7 @@
"x-appwrite": {
"method": "listExecutions",
"group": "executions",
"weight": 468,
"weight": 470,
"cookies": false,
"type": "",
"demo": "functions\/list-executions.md",
@ -6405,7 +6405,7 @@
"x-appwrite": {
"method": "createExecution",
"group": "executions",
"weight": 466,
"weight": 468,
"cookies": false,
"type": "",
"demo": "functions\/create-execution.md",
@ -6521,7 +6521,7 @@
"x-appwrite": {
"method": "getExecution",
"group": "executions",
"weight": 467,
"weight": 469,
"cookies": false,
"type": "",
"demo": "functions\/get-execution.md",
@ -7115,7 +7115,7 @@
"x-appwrite": {
"method": "createSubscriber",
"group": "subscribers",
"weight": 296,
"weight": 298,
"cookies": false,
"type": "",
"demo": "messaging\/create-subscriber.md",
@ -7198,7 +7198,7 @@
"x-appwrite": {
"method": "deleteSubscriber",
"group": "subscribers",
"weight": 300,
"weight": 302,
"cookies": false,
"type": "",
"demo": "messaging\/delete-subscriber.md",
@ -8076,7 +8076,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 441,
"weight": 443,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-transactions.md",
@ -8084,7 +8084,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client",
@ -8141,7 +8144,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 437,
"weight": 439,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-transaction.md",
@ -8149,7 +8152,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8209,7 +8215,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 438,
"weight": 440,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-transaction.md",
@ -8217,7 +8223,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client",
@ -8271,7 +8280,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 439,
"weight": 441,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-transaction.md",
@ -8279,7 +8288,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8347,7 +8359,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 440,
"weight": 442,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-transaction.md",
@ -8355,7 +8367,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8411,7 +8426,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 442,
"weight": 444,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-operations.md",
@ -8419,7 +8434,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client",
@ -8494,7 +8512,7 @@
"x-appwrite": {
"method": "listRows",
"group": "rows",
"weight": 433,
"weight": 435,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-rows.md",
@ -8592,7 +8610,7 @@
"x-appwrite": {
"method": "createRow",
"group": "rows",
"weight": 425,
"weight": 427,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-row.md",
@ -8743,7 +8761,7 @@
"x-appwrite": {
"method": "getRow",
"group": "rows",
"weight": 426,
"weight": 428,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-row.md",
@ -8851,7 +8869,7 @@
"x-appwrite": {
"method": "upsertRow",
"group": "rows",
"weight": 429,
"weight": 431,
"cookies": false,
"type": "",
"demo": "tablesdb\/upsert-row.md",
@ -8996,7 +9014,7 @@
"x-appwrite": {
"method": "updateRow",
"group": "rows",
"weight": 427,
"weight": 429,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-row.md",
@ -9103,7 +9121,7 @@
"x-appwrite": {
"method": "deleteRow",
"group": "rows",
"weight": 431,
"weight": 433,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-row.md",
@ -9206,7 +9224,7 @@
"x-appwrite": {
"method": "decrementRowColumn",
"group": "rows",
"weight": 436,
"weight": 438,
"cookies": false,
"type": "",
"demo": "tablesdb\/decrement-row-column.md",
@ -9329,7 +9347,7 @@
"x-appwrite": {
"method": "incrementRowColumn",
"group": "rows",
"weight": 435,
"weight": 437,
"cookies": false,
"type": "",
"demo": "tablesdb\/increment-row-column.md",
@ -12496,13 +12514,14 @@
},
"status": {
"type": "string",
"description": "The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.",
"description": "The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, `failed`, or `scheduled`.",
"x-example": "processing",
"enum": [
"waiting",
"processing",
"completed",
"failed"
"failed",
"scheduled"
]
},
"requestMethod": {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5076,7 +5076,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 376,
"weight": 378,
"cookies": false,
"type": "",
"demo": "databases\/list-transactions.md",
@ -5141,7 +5141,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 372,
"weight": 374,
"cookies": false,
"type": "",
"demo": "databases\/create-transaction.md",
@ -5209,7 +5209,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 373,
"weight": 375,
"cookies": false,
"type": "",
"demo": "databases\/get-transaction.md",
@ -5270,7 +5270,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 374,
"weight": 376,
"cookies": false,
"type": "",
"demo": "databases\/update-transaction.md",
@ -5347,7 +5347,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 375,
"weight": 377,
"cookies": false,
"type": "",
"demo": "databases\/delete-transaction.md",
@ -5410,7 +5410,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 377,
"weight": 379,
"cookies": false,
"type": "",
"demo": "databases\/create-operations.md",
@ -5489,7 +5489,7 @@
"x-appwrite": {
"method": "listDocuments",
"group": "documents",
"weight": 335,
"weight": 337,
"cookies": false,
"type": "",
"demo": "databases\/list-documents.md",
@ -5582,7 +5582,7 @@
"x-appwrite": {
"method": "createDocument",
"group": "documents",
"weight": 327,
"weight": 329,
"cookies": false,
"type": "",
"demo": "databases\/create-document.md",
@ -5736,7 +5736,7 @@
"x-appwrite": {
"method": "getDocument",
"group": "documents",
"weight": 328,
"weight": 330,
"cookies": false,
"type": "",
"demo": "databases\/get-document.md",
@ -5837,7 +5837,7 @@
"x-appwrite": {
"method": "upsertDocument",
"group": "documents",
"weight": 331,
"weight": 333,
"cookies": false,
"type": "",
"demo": "databases\/upsert-document.md",
@ -5987,7 +5987,7 @@
"x-appwrite": {
"method": "updateDocument",
"group": "documents",
"weight": 329,
"weight": 331,
"cookies": false,
"type": "",
"demo": "databases\/update-document.md",
@ -6093,7 +6093,7 @@
"x-appwrite": {
"method": "deleteDocument",
"group": "documents",
"weight": 333,
"weight": 335,
"cookies": false,
"type": "",
"demo": "databases\/delete-document.md",
@ -6191,7 +6191,7 @@
"x-appwrite": {
"method": "decrementDocumentAttribute",
"group": "documents",
"weight": 338,
"weight": 340,
"cookies": false,
"type": "",
"demo": "databases\/decrement-document-attribute.md",
@ -6309,7 +6309,7 @@
"x-appwrite": {
"method": "incrementDocumentAttribute",
"group": "documents",
"weight": 337,
"weight": 339,
"cookies": false,
"type": "",
"demo": "databases\/increment-document-attribute.md",
@ -6425,7 +6425,7 @@
"x-appwrite": {
"method": "listExecutions",
"group": "executions",
"weight": 468,
"weight": 470,
"cookies": false,
"type": "",
"demo": "functions\/list-executions.md",
@ -6498,7 +6498,7 @@
"x-appwrite": {
"method": "createExecution",
"group": "executions",
"weight": 466,
"weight": 468,
"cookies": false,
"type": "",
"demo": "functions\/create-execution.md",
@ -6615,7 +6615,7 @@
"x-appwrite": {
"method": "getExecution",
"group": "executions",
"weight": 467,
"weight": 469,
"cookies": false,
"type": "",
"demo": "functions\/get-execution.md",
@ -7240,7 +7240,7 @@
"x-appwrite": {
"method": "createSubscriber",
"group": "subscribers",
"weight": 296,
"weight": 298,
"cookies": false,
"type": "",
"demo": "messaging\/create-subscriber.md",
@ -7324,7 +7324,7 @@
"x-appwrite": {
"method": "deleteSubscriber",
"group": "subscribers",
"weight": 300,
"weight": 302,
"cookies": false,
"type": "",
"demo": "messaging\/delete-subscriber.md",
@ -8153,7 +8153,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 441,
"weight": 443,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-transactions.md",
@ -8161,7 +8161,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client"
@ -8218,7 +8221,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 437,
"weight": 439,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-transaction.md",
@ -8226,7 +8229,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8286,7 +8292,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 438,
"weight": 440,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-transaction.md",
@ -8294,7 +8300,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client"
@ -8347,7 +8356,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 439,
"weight": 441,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-transaction.md",
@ -8355,7 +8364,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8424,7 +8436,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 440,
"weight": 442,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-transaction.md",
@ -8432,7 +8444,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8487,7 +8502,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 442,
"weight": 444,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-operations.md",
@ -8495,7 +8510,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8566,7 +8584,7 @@
"x-appwrite": {
"method": "listRows",
"group": "rows",
"weight": 433,
"weight": 435,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-rows.md",
@ -8658,7 +8676,7 @@
"x-appwrite": {
"method": "createRow",
"group": "rows",
"weight": 425,
"weight": 427,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-row.md",
@ -8807,7 +8825,7 @@
"x-appwrite": {
"method": "getRow",
"group": "rows",
"weight": 426,
"weight": 428,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-row.md",
@ -8907,7 +8925,7 @@
"x-appwrite": {
"method": "upsertRow",
"group": "rows",
"weight": 429,
"weight": 431,
"cookies": false,
"type": "",
"demo": "tablesdb\/upsert-row.md",
@ -9048,7 +9066,7 @@
"x-appwrite": {
"method": "updateRow",
"group": "rows",
"weight": 427,
"weight": 429,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-row.md",
@ -9153,7 +9171,7 @@
"x-appwrite": {
"method": "deleteRow",
"group": "rows",
"weight": 431,
"weight": 433,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-row.md",
@ -9250,7 +9268,7 @@
"x-appwrite": {
"method": "decrementRowColumn",
"group": "rows",
"weight": 436,
"weight": 438,
"cookies": false,
"type": "",
"demo": "tablesdb\/decrement-row-column.md",
@ -9367,7 +9385,7 @@
"x-appwrite": {
"method": "incrementRowColumn",
"group": "rows",
"weight": 435,
"weight": 437,
"cookies": false,
"type": "",
"demo": "tablesdb\/increment-row-column.md",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5076,7 +5076,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 376,
"weight": 378,
"cookies": false,
"type": "",
"demo": "databases\/list-transactions.md",
@ -5141,7 +5141,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 372,
"weight": 374,
"cookies": false,
"type": "",
"demo": "databases\/create-transaction.md",
@ -5209,7 +5209,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 373,
"weight": 375,
"cookies": false,
"type": "",
"demo": "databases\/get-transaction.md",
@ -5270,7 +5270,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 374,
"weight": 376,
"cookies": false,
"type": "",
"demo": "databases\/update-transaction.md",
@ -5347,7 +5347,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 375,
"weight": 377,
"cookies": false,
"type": "",
"demo": "databases\/delete-transaction.md",
@ -5410,7 +5410,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 377,
"weight": 379,
"cookies": false,
"type": "",
"demo": "databases\/create-operations.md",
@ -5489,7 +5489,7 @@
"x-appwrite": {
"method": "listDocuments",
"group": "documents",
"weight": 335,
"weight": 337,
"cookies": false,
"type": "",
"demo": "databases\/list-documents.md",
@ -5582,7 +5582,7 @@
"x-appwrite": {
"method": "createDocument",
"group": "documents",
"weight": 327,
"weight": 329,
"cookies": false,
"type": "",
"demo": "databases\/create-document.md",
@ -5736,7 +5736,7 @@
"x-appwrite": {
"method": "getDocument",
"group": "documents",
"weight": 328,
"weight": 330,
"cookies": false,
"type": "",
"demo": "databases\/get-document.md",
@ -5837,7 +5837,7 @@
"x-appwrite": {
"method": "upsertDocument",
"group": "documents",
"weight": 331,
"weight": 333,
"cookies": false,
"type": "",
"demo": "databases\/upsert-document.md",
@ -5987,7 +5987,7 @@
"x-appwrite": {
"method": "updateDocument",
"group": "documents",
"weight": 329,
"weight": 331,
"cookies": false,
"type": "",
"demo": "databases\/update-document.md",
@ -6093,7 +6093,7 @@
"x-appwrite": {
"method": "deleteDocument",
"group": "documents",
"weight": 333,
"weight": 335,
"cookies": false,
"type": "",
"demo": "databases\/delete-document.md",
@ -6191,7 +6191,7 @@
"x-appwrite": {
"method": "decrementDocumentAttribute",
"group": "documents",
"weight": 338,
"weight": 340,
"cookies": false,
"type": "",
"demo": "databases\/decrement-document-attribute.md",
@ -6309,7 +6309,7 @@
"x-appwrite": {
"method": "incrementDocumentAttribute",
"group": "documents",
"weight": 337,
"weight": 339,
"cookies": false,
"type": "",
"demo": "databases\/increment-document-attribute.md",
@ -6425,7 +6425,7 @@
"x-appwrite": {
"method": "listExecutions",
"group": "executions",
"weight": 468,
"weight": 470,
"cookies": false,
"type": "",
"demo": "functions\/list-executions.md",
@ -6498,7 +6498,7 @@
"x-appwrite": {
"method": "createExecution",
"group": "executions",
"weight": 466,
"weight": 468,
"cookies": false,
"type": "",
"demo": "functions\/create-execution.md",
@ -6615,7 +6615,7 @@
"x-appwrite": {
"method": "getExecution",
"group": "executions",
"weight": 467,
"weight": 469,
"cookies": false,
"type": "",
"demo": "functions\/get-execution.md",
@ -7240,7 +7240,7 @@
"x-appwrite": {
"method": "createSubscriber",
"group": "subscribers",
"weight": 296,
"weight": 298,
"cookies": false,
"type": "",
"demo": "messaging\/create-subscriber.md",
@ -7324,7 +7324,7 @@
"x-appwrite": {
"method": "deleteSubscriber",
"group": "subscribers",
"weight": 300,
"weight": 302,
"cookies": false,
"type": "",
"demo": "messaging\/delete-subscriber.md",
@ -8153,7 +8153,7 @@
"x-appwrite": {
"method": "listTransactions",
"group": "transactions",
"weight": 441,
"weight": 443,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-transactions.md",
@ -8161,7 +8161,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client"
@ -8218,7 +8221,7 @@
"x-appwrite": {
"method": "createTransaction",
"group": "transactions",
"weight": 437,
"weight": 439,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-transaction.md",
@ -8226,7 +8229,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8286,7 +8292,7 @@
"x-appwrite": {
"method": "getTransaction",
"group": "transactions",
"weight": 438,
"weight": 440,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-transaction.md",
@ -8294,7 +8300,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.read",
"scope": [
"documents.read",
"rows.read"
],
"platforms": [
"server",
"client"
@ -8347,7 +8356,7 @@
"x-appwrite": {
"method": "updateTransaction",
"group": "transactions",
"weight": 439,
"weight": 441,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-transaction.md",
@ -8355,7 +8364,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8424,7 +8436,7 @@
"x-appwrite": {
"method": "deleteTransaction",
"group": "transactions",
"weight": 440,
"weight": 442,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-transaction.md",
@ -8432,7 +8444,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8487,7 +8502,7 @@
"x-appwrite": {
"method": "createOperations",
"group": "transactions",
"weight": 442,
"weight": 444,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-operations.md",
@ -8495,7 +8510,10 @@
"rate-limit": 0,
"rate-time": 3600,
"rate-key": "url:{url},ip:{ip}",
"scope": "rows.write",
"scope": [
"documents.write",
"rows.write"
],
"platforms": [
"server",
"client"
@ -8566,7 +8584,7 @@
"x-appwrite": {
"method": "listRows",
"group": "rows",
"weight": 433,
"weight": 435,
"cookies": false,
"type": "",
"demo": "tablesdb\/list-rows.md",
@ -8658,7 +8676,7 @@
"x-appwrite": {
"method": "createRow",
"group": "rows",
"weight": 425,
"weight": 427,
"cookies": false,
"type": "",
"demo": "tablesdb\/create-row.md",
@ -8807,7 +8825,7 @@
"x-appwrite": {
"method": "getRow",
"group": "rows",
"weight": 426,
"weight": 428,
"cookies": false,
"type": "",
"demo": "tablesdb\/get-row.md",
@ -8907,7 +8925,7 @@
"x-appwrite": {
"method": "upsertRow",
"group": "rows",
"weight": 429,
"weight": 431,
"cookies": false,
"type": "",
"demo": "tablesdb\/upsert-row.md",
@ -9048,7 +9066,7 @@
"x-appwrite": {
"method": "updateRow",
"group": "rows",
"weight": 427,
"weight": 429,
"cookies": false,
"type": "",
"demo": "tablesdb\/update-row.md",
@ -9153,7 +9171,7 @@
"x-appwrite": {
"method": "deleteRow",
"group": "rows",
"weight": 431,
"weight": 433,
"cookies": false,
"type": "",
"demo": "tablesdb\/delete-row.md",
@ -9250,7 +9268,7 @@
"x-appwrite": {
"method": "decrementRowColumn",
"group": "rows",
"weight": 436,
"weight": 438,
"cookies": false,
"type": "",
"demo": "tablesdb\/decrement-row-column.md",
@ -9367,7 +9385,7 @@
"x-appwrite": {
"method": "incrementRowColumn",
"group": "rows",
"weight": 435,
"weight": 437,
"cookies": false,
"type": "",
"demo": "tablesdb\/increment-row-column.md",
@ -12486,13 +12504,14 @@
},
"status": {
"type": "string",
"description": "The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.",
"description": "The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, `failed`, or `scheduled`.",
"x-example": "processing",
"enum": [
"waiting",
"processing",
"completed",
"failed"
"failed",
"scheduled"
]
},
"requestMethod": {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -9,6 +9,11 @@ use Utopia\System\System;
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
$hostname = System::getEnv('_APP_DOMAIN', '');
// Temporary fix until we can set _APP_DOMAIN to "localhost" instead of "traefik"
if (System::getEnv('_APP_ENV', 'development') === 'development') {
$hostname = 'localhost';
}
$url = $protocol . '://' . $hostname;
class UseCases
@ -111,6 +116,16 @@ const TEMPLATE_FRAMEWORKS = [
'outputDirectory' => './dist',
'fallbackFile' => '+not-found.html',
],
'TANSTACK_START' => [
'key' => 'tanstack-start',
'name' => 'TanStack Start',
'installCommand' => 'npm install',
'buildCommand' => 'npm run build',
'outputDirectory' => './dist',
'buildRuntime' => 'node-22',
'adapter' => 'ssr',
'fallbackFile' => '',
],
'ANGULAR' => [
'key' => 'angular',
'name' => 'Angular',
@ -950,6 +965,50 @@ return [
],
]
],
[
'key' => 'starter-for-tanstack-start',
'name' => 'TanStack Start starter',
'useCases' => [UseCases::STARTER],
'tagline' => 'Simple TanStack Start application integrated with Appwrite SDK.',
'score' => 6, // 0 to 10 based on looks of screenshot (avoid 1,2,3,8,9,10 if possible)
'screenshotDark' => $url . '/images/sites/templates/starter-for-tanstack-start-dark.png',
'screenshotLight' => $url . '/images/sites/templates/starter-for-tanstack-start-light.png',
'frameworks' => [
getFramework('TANSTACK_START', [
'providerRootDirectory' => './',
]),
],
'vcsProvider' => 'github',
'providerRepositoryId' => 'starter-for-tanstack-start',
'providerOwner' => 'appwrite',
'providerVersion' => '0.1.*',
'variables' => [
[
'name' => 'VITE_APPWRITE_ENDPOINT',
'description' => 'Endpoint of Appwrite server',
'value' => '{apiEndpoint}',
'placeholder' => '{apiEndpoint}',
'required' => true,
'type' => 'text'
],
[
'name' => 'VITE_APPWRITE_PROJECT_ID',
'description' => 'Your Appwrite project ID',
'value' => '{projectId}',
'placeholder' => '{projectId}',
'required' => true,
'type' => 'text'
],
[
'name' => 'VITE_APPWRITE_PROJECT_NAME',
'description' => 'Your Appwrite project name',
'value' => '{projectName}',
'placeholder' => '{projectName}',
'required' => true,
'type' => 'text'
],
]
],
[
'key' => 'starter-for-nuxt',
'name' => 'Nuxt starter',
@ -1327,6 +1386,25 @@ return [
'providerVersion' => '0.3.*',
'variables' => [],
],
[
'key' => 'playground-for-tanstack-start',
'name' => 'TanStack Start playground',
'tagline' => 'A basic TanStack Start website without Appwrite SDK integration.',
'score' => 1, // 0 to 10 based on looks of screenshot (avoid 1,2,3,8,9,10 if possible)
'useCases' => [UseCases::STARTER],
'screenshotDark' => $url . '/images/sites/templates/playground-for-tanstack-start-dark.png',
'screenshotLight' => $url . '/images/sites/templates/playground-for-tanstack-start-light.png',
'frameworks' => [
getFramework('TANSTACK_START', [
'providerRootDirectory' => './tanstack-start/starter',
]),
],
'vcsProvider' => 'github',
'providerRepositoryId' => 'templates-for-sites',
'providerOwner' => 'appwrite',
'providerVersion' => '0.5.*',
'variables' => [],
],
[
'key' => 'playground-for-react-native',
'name' => 'React Native playground',

View file

@ -231,6 +231,88 @@ App::post('/v1/messaging/providers/sendgrid')
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/resend')
->desc('Create Resend provider')
->groups(['api', 'messaging'])
->label('audits.event', 'provider.create')
->label('audits.resource', 'provider/{response.$id}')
->label('event', 'providers.[providerId].create')
->label('scope', 'providers.write')
->label('resourceType', RESOURCE_TYPE_PROVIDERS)
->label('sdk', new Method(
namespace: 'messaging',
group: 'providers',
name: 'createResendProvider',
description: '/docs/references/messaging/create-resend-provider.md',
auth: [AuthType::ADMIN, AuthType::KEY],
responses: [
new SDKResponse(
code: Response::STATUS_CODE_CREATED,
model: Response::MODEL_PROVIDER,
)
]
))
->param('providerId', '', new CustomId(), 'Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. 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.')
->param('name', '', new Text(128), 'Provider name.')
->param('apiKey', '', new Text(0), 'Resend API key.', true)
->param('fromName', '', new Text(128, 0), 'Sender Name.', true)
->param('fromEmail', '', new Email(), 'Sender email address.', true)
->param('replyToName', '', new Text(128, 0), 'Name set in the reply to field for the mail. Default value is sender name.', true)
->param('replyToEmail', '', new Email(), 'Email set in the reply to field for the mail. Default value is sender email.', true)
->param('enabled', null, new Boolean(), 'Set as enabled.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('response')
->action(function (string $providerId, string $name, string $apiKey, string $fromName, string $fromEmail, string $replyToName, string $replyToEmail, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) {
$providerId = $providerId == 'unique()' ? ID::unique() : $providerId;
$credentials = [];
if (!empty($apiKey)) {
$credentials['apiKey'] = $apiKey;
}
$options = [
'fromName' => $fromName,
'fromEmail' => $fromEmail,
'replyToName' => $replyToName,
'replyToEmail' => $replyToEmail,
];
if (
$enabled === true
&& !empty($fromEmail)
&& \array_key_exists('apiKey', $credentials)
) {
$enabled = true;
} else {
$enabled = false;
}
$provider = new Document([
'$id' => $providerId,
'name' => $name,
'provider' => 'resend',
'type' => MESSAGE_TYPE_EMAIL,
'enabled' => $enabled,
'credentials' => $credentials,
'options' => $options,
]);
try {
$provider = $dbForProject->createDocument('providers', $provider);
} catch (DuplicateException) {
throw new Exception(Exception::PROVIDER_ALREADY_EXISTS);
}
$queueForEvents
->setParam('providerId', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/smtp')
->desc('Create SMTP provider')
->groups(['api', 'messaging'])
@ -1372,6 +1454,104 @@ App::patch('/v1/messaging/providers/sendgrid/:providerId')
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::patch('/v1/messaging/providers/resend/:providerId')
->desc('Update Resend provider')
->groups(['api', 'messaging'])
->label('audits.event', 'provider.update')
->label('audits.resource', 'provider/{response.$id}')
->label('event', 'providers.[providerId].update')
->label('scope', 'providers.write')
->label('resourceType', RESOURCE_TYPE_PROVIDERS)
->label('sdk', new Method(
namespace: 'messaging',
group: 'providers',
name: 'updateResendProvider',
description: '/docs/references/messaging/update-resend-provider.md',
auth: [AuthType::ADMIN, AuthType::KEY],
responses: [
new SDKResponse(
code: Response::STATUS_CODE_OK,
model: Response::MODEL_PROVIDER,
)
]
))
->param('providerId', '', new UID(), 'Provider ID.')
->param('name', '', new Text(128), 'Provider name.', true)
->param('enabled', null, new Boolean(), 'Set as enabled.', true)
->param('apiKey', '', new Text(0), 'Resend API key.', true)
->param('fromName', '', new Text(128), 'Sender Name.', true)
->param('fromEmail', '', new Email(), 'Sender email address.', true)
->param('replyToName', '', new Text(128), 'Name set in the Reply To field for the mail. Default value is Sender Name.', true)
->param('replyToEmail', '', new Text(128), 'Email set in the Reply To field for the mail. Default value is Sender Email.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('response')
->action(function (string $providerId, string $name, ?bool $enabled, string $apiKey, string $fromName, string $fromEmail, string $replyToName, string $replyToEmail, Event $queueForEvents, Database $dbForProject, Response $response) {
$provider = $dbForProject->getDocument('providers', $providerId);
if ($provider->isEmpty()) {
throw new Exception(Exception::PROVIDER_NOT_FOUND);
}
$providerAttr = $provider->getAttribute('provider');
if ($providerAttr !== 'resend') {
throw new Exception(Exception::PROVIDER_INCORRECT_TYPE);
}
if (!empty($name)) {
$provider->setAttribute('name', $name);
}
$options = $provider->getAttribute('options');
if (!empty($fromName)) {
$options['fromName'] = $fromName;
}
if (!empty($fromEmail)) {
$options['fromEmail'] = $fromEmail;
}
if (!empty($replyToName)) {
$options['replyToName'] = $replyToName;
}
if (!empty($replyToEmail)) {
$options['replyToEmail'] = $replyToEmail;
}
$provider->setAttribute('options', $options);
if (!empty($apiKey)) {
$provider->setAttribute('credentials', [
'apiKey' => $apiKey,
]);
}
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('apiKey', $provider->getAttribute('credentials')) &&
\array_key_exists('fromEmail', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$provider->setAttribute('enabled', false);
}
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
$queueForEvents
->setParam('providerId', $provider->getId());
$response
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::patch('/v1/messaging/providers/smtp/:providerId')
->desc('Update SMTP provider')
->groups(['api', 'messaging'])

View file

@ -28,12 +28,20 @@ use Utopia\Database\Helpers\Permission;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Query;
use Utopia\Database\Validator\Query\Cursor;
use Utopia\Detector\Detection\Framework\Analog;
use Utopia\Detector\Detection\Framework\Angular;
use Utopia\Detector\Detection\Framework\Astro;
use Utopia\Detector\Detection\Framework\Flutter;
use Utopia\Detector\Detection\Framework\Lynx;
use Utopia\Detector\Detection\Framework\NextJs;
use Utopia\Detector\Detection\Framework\Nuxt;
use Utopia\Detector\Detection\Framework\React;
use Utopia\Detector\Detection\Framework\ReactNative;
use Utopia\Detector\Detection\Framework\Remix;
use Utopia\Detector\Detection\Framework\Svelte;
use Utopia\Detector\Detection\Framework\SvelteKit;
use Utopia\Detector\Detection\Framework\TanStackStart;
use Utopia\Detector\Detection\Framework\Vue;
use Utopia\Detector\Detection\Packager\NPM;
use Utopia\Detector\Detection\Packager\PNPM;
use Utopia\Detector\Detection\Packager\Yarn;
@ -57,6 +65,7 @@ use Utopia\Validator\Boolean;
use Utopia\Validator\Text;
use Utopia\Validator\WhiteList;
use Utopia\VCS\Adapter\Git\GitHub;
use Utopia\VCS\Exception\FileNotFound;
use Utopia\VCS\Exception\RepositoryNotFound;
use function Swoole\Coroutine\batch;
@ -165,7 +174,7 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
$latestCommentId = \strval($github->updateComment($owner, $repositoryName, $latestCommentId, $comment->generateComment()));
} finally {
$dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId);
Authorization::skip(fn () => $dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId));
}
}
} else {
@ -236,7 +245,7 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
$latestCommentId = \strval($github->updateComment($owner, $repositoryName, $latestCommentId, $comment->generateComment()));
} finally {
$dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId);
Authorization::skip(fn () => $dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId));
}
}
}
@ -457,7 +466,7 @@ $createGitDeployments = function (GitHub $github, string $providerInstallationId
$github->updateComment($owner, $repositoryName, $latestCommentId, $comment->generateComment());
}
} finally {
$dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId);
Authorization::skip(fn () => $dbForPlatform->deleteDocument('vcsCommentLocks', $latestCommentId));
}
}
}
@ -817,7 +826,10 @@ App::post('/v1/vcs/github/installations/:installationId/detections')
$files = \array_column($files, 'name');
$languages = $github->listRepositoryLanguages($owner, $repositoryName);
$detector = new Packager($files);
$detector = new Packager();
foreach ($files as $file) {
$detector->addInput($file);
}
$detector
->addOption(new Yarn())
->addOption(new PNPM())
@ -827,6 +839,14 @@ App::post('/v1/vcs/github/installations/:installationId/detections')
$packager = !\is_null($detection) ? $detection->getName() : 'npm';
if ($type === 'framework') {
$packages = '';
try {
$contentResponse = $github->getRepositoryContent($owner, $repositoryName, \rtrim($providerRootDirectory, '/') . '/package.json');
$packages = $contentResponse['content'] ?? '';
} catch (FileNotFound $e) {
// Continue detection without package.json
}
$output = new Document([
'framework' => '',
'installCommand' => '',
@ -834,14 +854,27 @@ App::post('/v1/vcs/github/installations/:installationId/detections')
'outputDirectory' => '',
]);
$detector = new Framework($files, $packager);
$detector = new Framework($packager);
$detector->addInput($packages, Framework::INPUT_PACKAGES);
foreach ($files as $file) {
$detector->addInput($file, Framework::INPUT_FILE);
}
$detector
->addOption(new Flutter())
->addOption(new Nuxt())
->addOption(new Analog())
->addOption(new Angular())
->addOption(new Astro())
->addOption(new SvelteKit())
->addOption(new Flutter())
->addOption(new Lynx())
->addOption(new NextJs())
->addOption(new Remix());
->addOption(new Nuxt())
->addOption(new React())
->addOption(new ReactNative())
->addOption(new Remix())
->addOption(new Svelte())
->addOption(new SvelteKit())
->addOption(new TanStackStart())
->addOption(new Vue());
$framework = $detector->detect();
@ -876,7 +909,18 @@ App::post('/v1/vcs/github/installations/:installationId/detections')
];
foreach ($strategies as $strategy) {
$detector = new Runtime($strategy === Strategy::LANGUAGES ? $languages : $files, $strategy, $packager);
$detector = new Runtime($strategy, $packager);
if ($strategy === Strategy::LANGUAGES) {
foreach ($languages as $language) {
$detector->addInput($language);
}
} else {
foreach ($files as $file) {
$detector->addInput($file);
}
}
$detector
->addOption(new Node())
->addOption(new Bun())
@ -983,7 +1027,10 @@ App::get('/v1/vcs/github/installations/:installationId/providerRepositories')
$files = $github->listRepositoryContents($repo['organization'], $repo['name'], '');
$files = \array_column($files, 'name');
$detector = new Packager($files);
$detector = new Packager();
foreach ($files as $file) {
$detector->addInput($file);
}
$detector
->addOption(new Yarn())
->addOption(new PNPM())
@ -993,14 +1040,35 @@ App::get('/v1/vcs/github/installations/:installationId/providerRepositories')
$packager = !\is_null($detection) ? $detection->getName() : 'npm';
if ($type === 'framework') {
$frameworkDetector = new Framework($files, $packager);
$packages = '';
try {
$contentResponse = $github->getRepositoryContent($repo['organization'], $repo['name'], 'package.json');
$packages = $contentResponse['content'] ?? '';
} catch (FileNotFound $e) {
// Continue detection without package.json
}
$frameworkDetector = new Framework($packager);
$frameworkDetector->addInput($packages, Framework::INPUT_PACKAGES);
foreach ($files as $file) {
$frameworkDetector->addInput($file, Framework::INPUT_FILE);
}
$frameworkDetector
->addOption(new Flutter())
->addOption(new Nuxt())
->addOption(new Analog())
->addOption(new Angular())
->addOption(new Astro())
->addOption(new SvelteKit())
->addOption(new Flutter())
->addOption(new Lynx())
->addOption(new NextJs())
->addOption(new Remix());
->addOption(new Nuxt())
->addOption(new React())
->addOption(new ReactNative())
->addOption(new Remix())
->addOption(new Svelte())
->addOption(new SvelteKit())
->addOption(new TanStackStart())
->addOption(new Vue());
$detectedFramework = $frameworkDetector->detect();
@ -1025,7 +1093,16 @@ App::get('/v1/vcs/github/installations/:installationId/providerRepositories')
];
foreach ($strategies as $strategy) {
$detector = new Runtime($strategy === Strategy::LANGUAGES ? $languages : $files, $strategy, $packager);
$detector = new Runtime($strategy, $packager);
if ($strategy === Strategy::LANGUAGES) {
foreach ($languages as $language) {
$detector->addInput($language);
}
} else {
foreach ($files as $file) {
$detector->addInput($file);
}
}
$detector
->addOption(new Node())
->addOption(new Bun())
@ -1373,7 +1450,7 @@ App::post('/v1/vcs/github/events')
$dbForProject->getAuthorization()->skip(fn () => $dbForPlatform->deleteDocument('repositories', $repository->getId()));
}
$dbForPlatform->deleteDocument('installations', $installation->getId());
Authorization::skip(fn () => $dbForPlatform->deleteDocument('installations', $installation->getId()));
}
}
} elseif ($event == $github::EVENT_PULL_REQUEST) {

View file

@ -90,6 +90,7 @@ const APP_PLATFORM_CLIENT = 'client';
const APP_PLATFORM_CONSOLE = 'console';
const APP_VCS_GITHUB_USERNAME = 'Appwrite';
const APP_VCS_GITHUB_EMAIL = 'team@appwrite.io';
const APP_VCS_GITHUB_URL = 'https://github.com/TeamAppwrite';
const APP_BRANDED_EMAIL_BASE_TEMPLATE = 'email-base-styled';
// Database Reconnect

View file

@ -62,7 +62,7 @@
"utopia-php/image": "0.8.*",
"utopia-php/locale": "0.8.*",
"utopia-php/logger": "0.6.*",
"utopia-php/messaging": "0.19.*",
"utopia-php/messaging": "0.20.*",
"utopia-php/migration": "1.*",
"utopia-php/orchestration": "0.9.*",
"utopia-php/platform": "0.7.*",
@ -74,7 +74,7 @@
"utopia-php/swoole": "0.8.*",
"utopia-php/system": "0.9.*",
"utopia-php/telemetry": "0.1.*",
"utopia-php/vcs": "0.11.*",
"utopia-php/vcs": "0.12.*",
"utopia-php/websocket": "0.3.*",
"matomo/device-detector": "6.4.*",
"dragonmantank/cron-expression": "3.4.*",

36
composer.lock generated
View file

@ -3898,16 +3898,16 @@
},
{
"name": "utopia-php/detector",
"version": "0.1.5",
"version": "0.2.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/detector.git",
"reference": "b5d6ba51352485b524589bc0ee8d07a9efafe718"
"reference": "795ed56169af833fd6a4ea58a6c747e05ccc7ba6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/detector/zipball/b5d6ba51352485b524589bc0ee8d07a9efafe718",
"reference": "b5d6ba51352485b524589bc0ee8d07a9efafe718",
"url": "https://api.github.com/repos/utopia-php/detector/zipball/795ed56169af833fd6a4ea58a6c747e05ccc7ba6",
"reference": "795ed56169af833fd6a4ea58a6c747e05ccc7ba6",
"shasum": ""
},
"require": {
@ -3937,9 +3937,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/detector/issues",
"source": "https://github.com/utopia-php/detector/tree/0.1.5"
"source": "https://github.com/utopia-php/detector/tree/0.2.0"
},
"time": "2025-05-19T11:01:28+00:00"
"time": "2025-10-21T13:57:30+00:00"
},
{
"name": "utopia-php/dns",
@ -4344,16 +4344,16 @@
},
{
"name": "utopia-php/messaging",
"version": "0.19.0",
"version": "0.20.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/messaging.git",
"reference": "0b866d54e70c792a3c4f5ca9c12a6d358a31f4b8"
"reference": "6c5be4588d97e3732a1907ecb13cd8a098eade96"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/messaging/zipball/0b866d54e70c792a3c4f5ca9c12a6d358a31f4b8",
"reference": "0b866d54e70c792a3c4f5ca9c12a6d358a31f4b8",
"url": "https://api.github.com/repos/utopia-php/messaging/zipball/6c5be4588d97e3732a1907ecb13cd8a098eade96",
"reference": "6c5be4588d97e3732a1907ecb13cd8a098eade96",
"shasum": ""
},
"require": {
@ -4389,9 +4389,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/messaging/issues",
"source": "https://github.com/utopia-php/messaging/tree/0.19.0"
"source": "https://github.com/utopia-php/messaging/tree/0.20.0"
},
"time": "2025-10-14T11:46:49+00:00"
"time": "2025-10-22T04:27:37+00:00"
},
{
"name": "utopia-php/migration",
@ -5095,16 +5095,16 @@
},
{
"name": "utopia-php/vcs",
"version": "0.11.0",
"version": "0.12.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/vcs.git",
"reference": "0e665eaa7d906168525bf6aac50b6bcc3e4fe528"
"reference": "28457cf347972c4ec95d3ca77776a4921364a665"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/vcs/zipball/0e665eaa7d906168525bf6aac50b6bcc3e4fe528",
"reference": "0e665eaa7d906168525bf6aac50b6bcc3e4fe528",
"url": "https://api.github.com/repos/utopia-php/vcs/zipball/28457cf347972c4ec95d3ca77776a4921364a665",
"reference": "28457cf347972c4ec95d3ca77776a4921364a665",
"shasum": ""
},
"require": {
@ -5138,9 +5138,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/vcs/issues",
"source": "https://github.com/utopia-php/vcs/tree/0.11.0"
"source": "https://github.com/utopia-php/vcs/tree/0.12.0"
},
"time": "2025-07-23T13:54:58+00:00"
"time": "2025-10-22T12:58:29+00:00"
},
{
"name": "utopia-php/websocket",

View file

@ -967,7 +967,7 @@ services:
hostname: exc1
<<: *x-logging
stop_signal: SIGINT
image: openruntimes/executor:0.11.0
image: openruntimes/executor:0.11.4
restart: unless-stopped
networks:
- appwrite

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Databases;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -19,7 +21,7 @@ databases.createDocument(
"age" to 30,
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Databases;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,7 +15,7 @@ databases.updateDocument(
"<COLLECTION_ID>", // collectionId
"<DOCUMENT_ID>", // documentId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Databases;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,7 +15,7 @@ databases.upsertDocument(
"<COLLECTION_ID>", // collectionId
"<DOCUMENT_ID>", // documentId
mapOf( "a" to "b" ), // data
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -2,6 +2,8 @@ import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.models.InputFile;
import io.appwrite.services.Storage;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,7 +15,7 @@ storage.createFile(
"<BUCKET_ID>", // bucketId
"<FILE_ID>", // fileId
InputFile.fromPath("file.png"), // file
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Storage;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -12,7 +14,7 @@ storage.updateFile(
"<BUCKET_ID>", // bucketId
"<FILE_ID>", // fileId
"<NAME>", // name (optional)
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDB;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -19,7 +21,7 @@ tablesDB.createRow(
"age" to 30,
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDB;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,7 +15,7 @@ tablesDB.updateRow(
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -1,6 +1,8 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDB;
import io.appwrite.Permission;
import io.appwrite.Role;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,7 +15,7 @@ tablesDB.upsertRow(
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
listOf(Permission.read(Role.any())), // permissions (optional)
"<TRANSACTION_ID>", // transactionId (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Databases
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -19,6 +21,6 @@ val result = databases.createDocument(
"age" to 30,
"isAdmin" to false
),
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Databases
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,6 +15,6 @@ val result = databases.updateDocument(
collectionId = "<COLLECTION_ID>",
documentId = "<DOCUMENT_ID>",
data = mapOf( "a" to "b" ), // (optional)
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Databases
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,6 +15,6 @@ val result = databases.upsertDocument(
collectionId = "<COLLECTION_ID>",
documentId = "<DOCUMENT_ID>",
data = mapOf( "a" to "b" ),
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -2,6 +2,8 @@ import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.models.InputFile
import io.appwrite.services.Storage
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,5 +15,5 @@ val result = storage.createFile(
bucketId = "<BUCKET_ID>",
fileId = "<FILE_ID>",
file = InputFile.fromPath("file.png"),
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Storage
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -12,5 +14,5 @@ val result = storage.updateFile(
bucketId = "<BUCKET_ID>",
fileId = "<FILE_ID>",
name = "<NAME>", // (optional)
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDB
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -19,6 +21,6 @@ val result = tablesDB.createRow(
"age" to 30,
"isAdmin" to false
),
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDB
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,6 +15,6 @@ val result = tablesDB.updateRow(
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ), // (optional)
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -1,6 +1,8 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDB
import io.appwrite.Permission
import io.appwrite.Role
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
@ -13,6 +15,6 @@ val result = tablesDB.upsertRow(
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ), // (optional)
permissions = listOf("read("any")"), // (optional)
permissions = listOf(Permission.read(Role.any())), // (optional)
transactionId = "<TRANSACTION_ID>", // (optional)
)

View file

@ -17,7 +17,7 @@ let document = try await databases.createDocument(
"age": 30,
"isAdmin": false
],
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -11,7 +11,7 @@ let document = try await databases.updateDocument(
collectionId: "<COLLECTION_ID>",
documentId: "<DOCUMENT_ID>",
data: [:], // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -11,7 +11,7 @@ let document = try await databases.upsertDocument(
collectionId: "<COLLECTION_ID>",
documentId: "<DOCUMENT_ID>",
data: [:],
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -10,6 +10,6 @@ let file = try await storage.createFile(
bucketId: "<BUCKET_ID>",
fileId: "<FILE_ID>",
file: InputFile.fromPath("file.png"),
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
)

View file

@ -10,6 +10,6 @@ let file = try await storage.updateFile(
bucketId: "<BUCKET_ID>",
fileId: "<FILE_ID>",
name: "<NAME>", // optional
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
)

View file

@ -17,7 +17,7 @@ let row = try await tablesDB.createRow(
"age": 30,
"isAdmin": false
],
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -11,7 +11,7 @@ let row = try await tablesDB.updateRow(
tableId: "<TABLE_ID>",
rowId: "<ROW_ID>",
data: [:], // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -11,7 +11,7 @@ let row = try await tablesDB.upsertRow(
tableId: "<TABLE_ID>",
rowId: "<ROW_ID>",
data: [:], // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: "<TRANSACTION_ID>" // optional
)

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,6 +19,6 @@ Document result = await databases.createDocument(
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,6 +13,6 @@ Document result = await databases.updateDocument(
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,6 +13,6 @@ Document result = await databases.upsertDocument(
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,5 +1,7 @@
import 'dart:io';
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,5 +13,5 @@ File result = await storage.createFile(
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
file: InputFile(path: './path-to-files/image.jpg', filename: 'image.jpg'),
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,5 +12,5 @@ File result = await storage.updateFile(
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
name: '<NAME>', // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,6 +19,6 @@ Row result = await tablesDB.createRow(
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,6 +13,6 @@ Row result = await tablesDB.updateRow(
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,4 +1,6 @@
import 'package:appwrite/appwrite.dart';
import 'package:appwrite/permission.dart';
import 'package:appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,6 +13,6 @@ Row result = await tablesDB.upsertRow(
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>', // optional
);

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "react-native-appwrite";
import { Client, Databases, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "react-native-appwrite";
import { Client, Databases, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "react-native-appwrite";
import { Client, Databases, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "react-native-appwrite";
import { Client, Storage, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "react-native-appwrite";
import { Client, Storage, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "react-native-appwrite";
import { Client, TablesDB, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "react-native-appwrite";
import { Client, TablesDB, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "react-native-appwrite";
import { Client, TablesDB, Permission, Role } from "react-native-appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "appwrite";
import { Client, Databases, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,7 +17,7 @@ const result = await databases.createDocument({
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "appwrite";
import { Client, Databases, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await databases.updateDocument({
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "appwrite";
import { Client, Databases, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await databases.upsertDocument({
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "appwrite";
import { Client, Storage, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await storage.createFile({
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
file: document.getElementById('uploader').files[0],
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
});
console.log(result);

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "appwrite";
import { Client, Storage, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await storage.updateFile({
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
name: '<NAME>', // optional
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
});
console.log(result);

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "appwrite";
import { Client, TablesDB, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,7 +17,7 @@ const result = await tablesDB.createRow({
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "appwrite";
import { Client, TablesDB, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await tablesDB.updateRow({
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "appwrite";
import { Client, TablesDB, Permission, Role } from "appwrite";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await tablesDB.upsertRow({
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -0,0 +1,3 @@
appwrite messaging create-resend-provider \
--provider-id <PROVIDER_ID> \
--name <NAME>

View file

@ -0,0 +1,2 @@
appwrite messaging update-resend-provider \
--provider-id <PROVIDER_ID>

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "@appwrite.io/console";
import { Client, Databases, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await databases.createCollection({
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
documentSecurity: false, // optional
enabled: false // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "@appwrite.io/console";
import { Client, Databases, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,7 +17,7 @@ const result = await databases.createDocument({
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "@appwrite.io/console";
import { Client, Databases, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await databases.updateCollection({
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
documentSecurity: false, // optional
enabled: false // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "@appwrite.io/console";
import { Client, Databases, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await databases.updateDocument({
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, Databases } from "@appwrite.io/console";
import { Client, Databases, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await databases.upsertDocument({
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -0,0 +1,20 @@
import { Client, Messaging } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
const messaging = new Messaging(client);
const result = await messaging.createResendProvider({
providerId: '<PROVIDER_ID>',
name: '<NAME>',
apiKey: '<API_KEY>', // optional
fromName: '<FROM_NAME>', // optional
fromEmail: 'email@example.com', // optional
replyToName: '<REPLY_TO_NAME>', // optional
replyToEmail: 'email@example.com', // optional
enabled: false // optional
});
console.log(result);

View file

@ -0,0 +1,20 @@
import { Client, Messaging } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
const messaging = new Messaging(client);
const result = await messaging.updateResendProvider({
providerId: '<PROVIDER_ID>',
name: '<NAME>', // optional
enabled: false, // optional
apiKey: '<API_KEY>', // optional
fromName: '<FROM_NAME>', // optional
fromEmail: 'email@example.com', // optional
replyToName: '<REPLY_TO_NAME>', // optional
replyToEmail: '<REPLY_TO_EMAIL>' // optional
});
console.log(result);

View file

@ -1,4 +1,4 @@
import { Client, Storage, } from "@appwrite.io/console";
import { Client, Storage, , Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -9,7 +9,7 @@ const storage = new Storage(client);
const result = await storage.createBucket({
bucketId: '<BUCKET_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
fileSecurity: false, // optional
enabled: false, // optional
maximumFileSize: 1, // optional

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "@appwrite.io/console";
import { Client, Storage, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await storage.createFile({
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
file: document.getElementById('uploader').files[0],
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
});
console.log(result);

View file

@ -1,4 +1,4 @@
import { Client, Storage, } from "@appwrite.io/console";
import { Client, Storage, , Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -9,7 +9,7 @@ const storage = new Storage(client);
const result = await storage.updateBucket({
bucketId: '<BUCKET_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
fileSecurity: false, // optional
enabled: false, // optional
maximumFileSize: 1, // optional

View file

@ -1,4 +1,4 @@
import { Client, Storage } from "@appwrite.io/console";
import { Client, Storage, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await storage.updateFile({
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
name: '<NAME>', // optional
permissions: ["read("any")"] // optional
permissions: [Permission.read(Role.any())] // optional
});
console.log(result);

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "@appwrite.io/console";
import { Client, TablesDB, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -17,7 +17,7 @@ const result = await tablesDB.createRow({
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "@appwrite.io/console";
import { Client, TablesDB, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await tablesDB.createTable({
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
rowSecurity: false, // optional
enabled: false // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "@appwrite.io/console";
import { Client, TablesDB, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await tablesDB.updateRow({
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "@appwrite.io/console";
import { Client, TablesDB, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +10,7 @@ const result = await tablesDB.updateTable({
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
name: '<NAME>',
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
rowSecurity: false, // optional
enabled: false // optional
});

View file

@ -1,4 +1,4 @@
import { Client, TablesDB } from "@appwrite.io/console";
import { Client, TablesDB, Permission, Role } from "@appwrite.io/console";
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +11,7 @@ const result = await tablesDB.upsertRow({
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
permissions: [Permission.read(Role.any())], // optional
transactionId: '<TRANSACTION_ID>' // optional
});

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +13,7 @@ Collection result = await databases.createCollection(
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
name: '<NAME>',
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
documentSecurity: false, // (optional)
enabled: false, // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -18,6 +20,6 @@ Document result = await databases.createDocument(
"age": 30,
"isAdmin": false
},
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
transactionId: '<TRANSACTION_ID>', // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,7 +13,7 @@ Collection result = await databases.updateCollection(
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
name: '<NAME>',
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
documentSecurity: false, // (optional)
enabled: false, // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -12,6 +14,6 @@ Document result = await databases.updateDocument(
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {}, // (optional)
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
transactionId: '<TRANSACTION_ID>', // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -12,6 +14,6 @@ Document result = await databases.upsertDocument(
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
data: {},
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
transactionId: '<TRANSACTION_ID>', // (optional)
);

View file

@ -0,0 +1,19 @@
import 'package:dart_appwrite/dart_appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>') // Your project ID
.setKey('<YOUR_API_KEY>'); // Your secret API key
Messaging messaging = Messaging(client);
Provider result = await messaging.createResendProvider(
providerId: '<PROVIDER_ID>',
name: '<NAME>',
apiKey: '<API_KEY>', // (optional)
fromName: '<FROM_NAME>', // (optional)
fromEmail: 'email@example.com', // (optional)
replyToName: '<REPLY_TO_NAME>', // (optional)
replyToEmail: 'email@example.com', // (optional)
enabled: false, // (optional)
);

View file

@ -0,0 +1,19 @@
import 'package:dart_appwrite/dart_appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>') // Your project ID
.setKey('<YOUR_API_KEY>'); // Your secret API key
Messaging messaging = Messaging(client);
Provider result = await messaging.updateResendProvider(
providerId: '<PROVIDER_ID>',
name: '<NAME>', // (optional)
enabled: false, // (optional)
apiKey: '<API_KEY>', // (optional)
fromName: '<FROM_NAME>', // (optional)
fromEmail: 'email@example.com', // (optional)
replyToName: '<REPLY_TO_NAME>', // (optional)
replyToEmail: '<REPLY_TO_EMAIL>', // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +12,7 @@ Storage storage = Storage(client);
Bucket result = await storage.createBucket(
bucketId: '<BUCKET_ID>',
name: '<NAME>',
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
fileSecurity: false, // (optional)
enabled: false, // (optional)
maximumFileSize: 1, // (optional)

View file

@ -1,5 +1,7 @@
import 'dart:io';
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -12,5 +14,5 @@ File result = await storage.createFile(
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
file: InputFile(path: './path-to-files/image.jpg', filename: 'image.jpg'),
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
);

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -10,7 +12,7 @@ Storage storage = Storage(client);
Bucket result = await storage.updateBucket(
bucketId: '<BUCKET_ID>',
name: '<NAME>',
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
fileSecurity: false, // (optional)
enabled: false, // (optional)
maximumFileSize: 1, // (optional)

View file

@ -1,4 +1,6 @@
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/permission.dart';
import 'package:dart_appwrite/role.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
@ -11,5 +13,5 @@ File result = await storage.updateFile(
bucketId: '<BUCKET_ID>',
fileId: '<FILE_ID>',
name: '<NAME>', // (optional)
permissions: ["read("any")"], // (optional)
permissions: [Permission.read(Role.any())], // (optional)
);

Some files were not shown because too many files have changed in this diff Show more