Merge pull request #10690 from appwrite/feat-resend

feat: resend adapter
This commit is contained in:
Jake Barnby 2025-10-24 09:13:24 +00:00 committed by GitHub
commit 24bfad100d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 4392 additions and 2143 deletions

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",

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",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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

@ -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.*",

26
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "b48bd33d40081c107b826f78981e0a54",
"content-hash": "6f773bcdf583a863b0f2404958330f98",
"packages": [
{
"name": "adhocore/jwt",
@ -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,22 +4389,22 @@
],
"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",
"version": "1.3.1",
"version": "1.3.2",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/migration.git",
"reference": "b6985b235ab64f07a6b88569e20cf9b2df7d838c"
"reference": "f5c1d2cae764290766a4c2d1546c1d51de95b67f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/b6985b235ab64f07a6b88569e20cf9b2df7d838c",
"reference": "b6985b235ab64f07a6b88569e20cf9b2df7d838c",
"url": "https://api.github.com/repos/utopia-php/migration/zipball/f5c1d2cae764290766a4c2d1546c1d51de95b67f",
"reference": "f5c1d2cae764290766a4c2d1546c1d51de95b67f",
"shasum": ""
},
"require": {
@ -4444,9 +4444,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/migration/issues",
"source": "https://github.com/utopia-php/migration/tree/1.3.1"
"source": "https://github.com/utopia-php/migration/tree/1.3.2"
},
"time": "2025-10-21T08:13:54+00:00"
"time": "2025-10-22T12:30:47+00:00"
},
{
"name": "utopia-php/mongo",

View file

@ -0,0 +1 @@
Create a new Resend provider.

View file

@ -0,0 +1 @@
Update a Resend provider by its unique ID.

View file

@ -16,6 +16,7 @@ use Utopia\DSN\DSN;
use Utopia\Logger\Log;
use Utopia\Messaging\Adapter\Email as EmailAdapter;
use Utopia\Messaging\Adapter\Email\Mailgun;
use Utopia\Messaging\Adapter\Email\Resend;
use Utopia\Messaging\Adapter\Email\Sendgrid;
use Utopia\Messaging\Adapter\Email\SMTP;
use Utopia\Messaging\Adapter\Push\APNS;
@ -506,6 +507,7 @@ class Messaging extends Action
$credentials['isEuRegion'] ?? false
),
'sendgrid' => new Sendgrid($apiKey),
'resend' => new Resend($apiKey),
default => null
};
}

View file

@ -292,6 +292,7 @@ trait Base
// Providers
public const string CREATE_MAILGUN_PROVIDER = 'create_mailgun_provider';
public const string CREATE_SENDGRID_PROVIDER = 'create_sendgrid_provider';
public const string CREATE_RESEND_PROVIDER = 'create_resend_provider';
public const string CREATE_SMTP_PROVIDER = 'create_smtp_provider';
public const string CREATE_TWILIO_PROVIDER = 'create_twilio_provider';
public const string CREATE_TELESIGN_PROVIDER = 'create_telesign_provider';
@ -304,6 +305,7 @@ trait Base
public const string GET_PROVIDER = 'get_provider';
public const string UPDATE_MAILGUN_PROVIDER = 'update_mailgun_provider';
public const string UPDATE_SENDGRID_PROVIDER = 'update_sendgrid_provider';
public const string UPDATE_RESEND_PROVIDER = 'update_resend_provider';
public const string UPDATE_SMTP_PROVIDER = 'update_smtp_provider';
public const string UPDATE_TWILIO_PROVIDER = 'update_twilio_provider';
public const string UPDATE_TELESIGN_PROVIDER = 'update_telesign_provider';
@ -2494,6 +2496,16 @@ trait Base
enabled
}
}';
case self::CREATE_RESEND_PROVIDER:
return 'mutation createResendProvider($providerId: String!, $name: String!, $apiKey: String!, $fromName: String!, $fromEmail: String!, $replyToName: String, $replyToEmail: String) {
messagingCreateResendProvider(providerId: $providerId, name: $name, apiKey: $apiKey, fromName: $fromName, fromEmail: $fromEmail, replyToName: $replyToName, replyToEmail: $replyToEmail) {
_id
name
provider
type
enabled
}
}';
case self::CREATE_SMTP_PROVIDER:
return 'mutation createSmtpProvider($providerId: String!, $name: String!, $host: String!, $port: Int!, $username: String!, $password: String!, $encryption: String!, $autoTLS: Boolean! $fromName: String!, $fromEmail: String!, $replyToName: String, $replyToEmail: String) {
messagingCreateSmtpProvider(providerId: $providerId, name: $name, host: $host, port: $port, username: $username, password: $password, encryption: $encryption, autoTLS: $autoTLS, fromName: $fromName, fromEmail: $fromEmail, replyToName: $replyToName, replyToEmail: $replyToEmail) {
@ -2618,6 +2630,16 @@ trait Base
enabled
}
}';
case self::UPDATE_RESEND_PROVIDER:
return 'mutation messagingUpdateResendProvider($providerId: String!, $name: String!, $apiKey: String!, $enabled: Boolean, $fromName: String, $fromEmail: String, $replyToName: String, $replyToEmail: String) {
messagingUpdateResendProvider(providerId: $providerId, name: $name, apiKey: $apiKey, enabled: $enabled, fromName: $fromName, fromEmail: $fromEmail, replyToName: $replyToName, replyToEmail: $replyToEmail) {
_id
name
provider
type
enabled
}
}';
case self::UPDATE_SMTP_PROVIDER:
return 'mutation updateSmtpProvider($providerId: String!, $name: String!, $host: String!, $port: Int!, $username: String!, $password: String!, $encryption: String!, $autoTLS: Boolean!, $fromName: String, $fromEmail: String, $enabled: Boolean) {
messagingUpdateSmtpProvider(providerId: $providerId, name: $name, host: $host, port: $port, username: $username, password: $password, encryption: $encryption, autoTLS: $autoTLS, fromName: $fromName, fromEmail: $fromEmail, enabled: $enabled) {

View file

@ -26,6 +26,13 @@ class MessagingTest extends Scope
'fromName' => 'Sender Name',
'fromEmail' => 'sender-email@my-domain.com',
],
'Resend' => [
'providerId' => ID::unique(),
'name' => 'Resend1',
'apiKey' => 'my-apikey',
'fromName' => 'Sender Name',
'fromEmail' => 'sender-email@my-domain.com',
],
'Mailgun' => [
'providerId' => ID::unique(),
'name' => 'Mailgun1',
@ -123,45 +130,50 @@ class MessagingTest extends Scope
'name' => 'Sengrid2',
'apiKey' => 'my-apikey',
],
'Mailgun' => [
'Resend' => [
'providerId' => $providers[1]['_id'],
'name' => 'Resend2',
'apiKey' => 'my-apikey',
],
'Mailgun' => [
'providerId' => $providers[2]['_id'],
'name' => 'Mailgun2',
'apiKey' => 'my-apikey',
'domain' => 'my-domain',
],
'Twilio' => [
'providerId' => $providers[2]['_id'],
'providerId' => $providers[3]['_id'],
'name' => 'Twilio2',
'accountSid' => 'my-accountSid',
'authToken' => 'my-authToken',
],
'Telesign' => [
'providerId' => $providers[3]['_id'],
'providerId' => $providers[4]['_id'],
'name' => 'Telesign2',
'customerId' => 'my-username',
'apiKey' => 'my-password',
],
'Textmagic' => [
'providerId' => $providers[4]['_id'],
'providerId' => $providers[5]['_id'],
'name' => 'Textmagic2',
'username' => 'my-username',
'apiKey' => 'my-apikey',
],
'Msg91' => [
'providerId' => $providers[5]['_id'],
'providerId' => $providers[6]['_id'],
'name' => 'Ms91-2',
'senderId' => 'my-senderid',
'authKey' => 'my-authkey',
'templateId' => '123456',
],
'Vonage' => [
'providerId' => $providers[6]['_id'],
'providerId' => $providers[7]['_id'],
'name' => 'Vonage2',
'apiKey' => 'my-apikey',
'apiSecret' => 'my-apisecret',
],
'Fcm' => [
'providerId' => $providers[7]['_id'],
'providerId' => $providers[8]['_id'],
'name' => 'FCM2',
'serviceAccountJSON' => [
'type' => 'service_account',
@ -171,7 +183,7 @@ class MessagingTest extends Scope
]
],
'Apns' => [
'providerId' => $providers[8]['_id'],
'providerId' => $providers[9]['_id'],
'name' => 'APNS2',
'authKey' => 'my-authkey',
'authKeyId' => 'my-authkeyid',
@ -205,7 +217,7 @@ class MessagingTest extends Scope
], [
'query' => $this->getQuery('update_mailgun_provider'),
'variables' => [
'providerId' => $providers[1]['_id'],
'providerId' => $providers[2]['_id'],
'name' => 'Mailgun2',
'apiKey' => 'my-apikey',
'domain' => 'my-domain',
@ -213,7 +225,7 @@ class MessagingTest extends Scope
'enabled' => false,
]
]);
$providers[1] = $response['body']['data']['messagingUpdateMailgunProvider'];
$providers[2] = $response['body']['data']['messagingUpdateMailgunProvider'];
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals('Mailgun2', $response['body']['data']['messagingUpdateMailgunProvider']['name']);
$this->assertEquals(false, $response['body']['data']['messagingUpdateMailgunProvider']['enabled']);

View file

@ -25,6 +25,13 @@ trait MessagingBase
'apiKey' => 'my-apikey',
'from' => 'sender-email@my-domain.com',
],
'resend' => [
'providerId' => ID::unique(),
'name' => 'Resend1',
'apiKey' => 'my-apikey',
'fromName' => 'Sender Name',
'fromEmail' => 'sender-email@my-domain.com',
],
'mailgun' => [
'providerId' => ID::unique(),
'name' => 'Mailgun1',
@ -132,6 +139,10 @@ trait MessagingBase
'name' => 'Sengrid2',
'apiKey' => 'my-apikey',
],
'resend' => [
'name' => 'Resend2',
'apiKey' => 'my-apikey',
],
'mailgun' => [
'name' => 'Mailgun2',
'apiKey' => 'my-apikey',
@ -210,7 +221,7 @@ trait MessagingBase
$providers[$index] = $response['body'];
}
$response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/mailgun/' . $providers[1]['$id'], [
$response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/mailgun/' . $providers[2]['$id'], [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
@ -226,7 +237,7 @@ trait MessagingBase
$this->assertEquals('Mailgun2', $response['body']['name']);
$this->assertEquals(false, $response['body']['enabled']);
$providers[1] = $response['body'];
$providers[2] = $response['body'];
return $providers;
}
@ -269,7 +280,7 @@ trait MessagingBase
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(11, \count($response['body']['providers']));
$this->assertEquals(12, \count($response['body']['providers']));
return $providers;
}