mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge branch '1.8.x' into feat-health-module
This commit is contained in:
@@ -1103,7 +1103,6 @@ return [
|
||||
'name' => Exception::RULE_VERIFICATION_FAILED,
|
||||
'description' => 'Domain verification failed. Please check if your DNS records are correct and try again.',
|
||||
'code' => 400,
|
||||
'publish' => true
|
||||
],
|
||||
Exception::PROJECT_SMTP_CONFIG_INVALID => [
|
||||
'name' => Exception::PROJECT_SMTP_CONFIG_INVALID,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"version": "1.8.0",
|
||||
"version": "1.8.1",
|
||||
"title": "Appwrite",
|
||||
"description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)",
|
||||
"termsOfService": "https:\/\/appwrite.io\/policy\/terms",
|
||||
@@ -7318,7 +7318,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listExecutions",
|
||||
"group": "executions",
|
||||
"weight": 454,
|
||||
"weight": 455,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-executions.md",
|
||||
@@ -7405,7 +7405,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createExecution",
|
||||
"group": "executions",
|
||||
"weight": 452,
|
||||
"weight": 453,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-execution.md",
|
||||
@@ -7523,7 +7523,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getExecution",
|
||||
"group": "executions",
|
||||
"weight": 453,
|
||||
"weight": 454,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-execution.md",
|
||||
@@ -8298,7 +8298,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFiles",
|
||||
"group": "files",
|
||||
"weight": 525,
|
||||
"weight": 526,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-files.md",
|
||||
@@ -8397,7 +8397,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFile",
|
||||
"group": "files",
|
||||
"weight": 523,
|
||||
"weight": 524,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "storage\/create-file.md",
|
||||
@@ -8498,7 +8498,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFile",
|
||||
"group": "files",
|
||||
"weight": 524,
|
||||
"weight": 525,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-file.md",
|
||||
@@ -8572,7 +8572,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFile",
|
||||
"group": "files",
|
||||
"weight": 526,
|
||||
"weight": 527,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-file.md",
|
||||
@@ -8664,7 +8664,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteFile",
|
||||
"group": "files",
|
||||
"weight": 527,
|
||||
"weight": 528,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-file.md",
|
||||
@@ -8733,7 +8733,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileDownload",
|
||||
"group": "files",
|
||||
"weight": 529,
|
||||
"weight": 530,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-download.md",
|
||||
@@ -8813,7 +8813,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFilePreview",
|
||||
"group": "files",
|
||||
"weight": 528,
|
||||
"weight": 529,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-preview.md",
|
||||
@@ -9043,7 +9043,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileView",
|
||||
"group": "files",
|
||||
"weight": 530,
|
||||
"weight": 531,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-view.md",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"version": "1.8.0",
|
||||
"version": "1.8.1",
|
||||
"title": "Appwrite",
|
||||
"description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)",
|
||||
"termsOfService": "https:\/\/appwrite.io\/policy\/terms",
|
||||
@@ -12355,7 +12355,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "functions",
|
||||
"weight": 438,
|
||||
"weight": 439,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list.md",
|
||||
@@ -12441,7 +12441,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "create",
|
||||
"group": "functions",
|
||||
"weight": 435,
|
||||
"weight": 436,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create.md",
|
||||
@@ -12737,7 +12737,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listRuntimes",
|
||||
"group": "runtimes",
|
||||
"weight": 440,
|
||||
"weight": 441,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-runtimes.md",
|
||||
@@ -12788,7 +12788,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listSpecifications",
|
||||
"group": "runtimes",
|
||||
"weight": 441,
|
||||
"weight": 442,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-specifications.md",
|
||||
@@ -12839,7 +12839,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "functions",
|
||||
"weight": 436,
|
||||
"weight": 437,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get.md",
|
||||
@@ -12900,7 +12900,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "functions",
|
||||
"weight": 437,
|
||||
"weight": 438,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update.md",
|
||||
@@ -13193,7 +13193,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "functions",
|
||||
"weight": 439,
|
||||
"weight": 440,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete.md",
|
||||
@@ -13256,7 +13256,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFunctionDeployment",
|
||||
"group": "functions",
|
||||
"weight": 444,
|
||||
"weight": 445,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-function-deployment.md",
|
||||
@@ -13338,7 +13338,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listDeployments",
|
||||
"group": "deployments",
|
||||
"weight": 445,
|
||||
"weight": 446,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-deployments.md",
|
||||
@@ -13434,7 +13434,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 442,
|
||||
"weight": 443,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "functions\/create-deployment.md",
|
||||
@@ -13534,7 +13534,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDuplicateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 450,
|
||||
"weight": 451,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-duplicate-deployment.md",
|
||||
@@ -13621,7 +13621,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createTemplateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 447,
|
||||
"weight": 448,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-template-deployment.md",
|
||||
@@ -13739,7 +13739,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVcsDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 448,
|
||||
"weight": 449,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-vcs-deployment.md",
|
||||
@@ -13838,7 +13838,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 443,
|
||||
"weight": 444,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-deployment.md",
|
||||
@@ -13902,7 +13902,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 446,
|
||||
"weight": 447,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-deployment.md",
|
||||
@@ -13968,7 +13968,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeploymentDownload",
|
||||
"group": "deployments",
|
||||
"weight": 449,
|
||||
"weight": 450,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "functions\/get-deployment-download.md",
|
||||
@@ -14060,7 +14060,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateDeploymentStatus",
|
||||
"group": "deployments",
|
||||
"weight": 451,
|
||||
"weight": 452,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-deployment-status.md",
|
||||
@@ -14133,7 +14133,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listExecutions",
|
||||
"group": "executions",
|
||||
"weight": 454,
|
||||
"weight": 455,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-executions.md",
|
||||
@@ -14222,7 +14222,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createExecution",
|
||||
"group": "executions",
|
||||
"weight": 452,
|
||||
"weight": 453,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-execution.md",
|
||||
@@ -14342,7 +14342,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getExecution",
|
||||
"group": "executions",
|
||||
"weight": 453,
|
||||
"weight": 454,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-execution.md",
|
||||
@@ -14410,7 +14410,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteExecution",
|
||||
"group": "executions",
|
||||
"weight": 455,
|
||||
"weight": 456,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-execution.md",
|
||||
@@ -14483,7 +14483,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listVariables",
|
||||
"group": "variables",
|
||||
"weight": 460,
|
||||
"weight": 461,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-variables.md",
|
||||
@@ -14544,7 +14544,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVariable",
|
||||
"group": "variables",
|
||||
"weight": 458,
|
||||
"weight": 459,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-variable.md",
|
||||
@@ -14637,7 +14637,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getVariable",
|
||||
"group": "variables",
|
||||
"weight": 459,
|
||||
"weight": 460,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-variable.md",
|
||||
@@ -14708,7 +14708,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateVariable",
|
||||
"group": "variables",
|
||||
"weight": 461,
|
||||
"weight": 462,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-variable.md",
|
||||
@@ -14803,7 +14803,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteVariable",
|
||||
"group": "variables",
|
||||
"weight": 462,
|
||||
"weight": 463,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-variable.md",
|
||||
@@ -22240,7 +22240,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "sites",
|
||||
"weight": 467,
|
||||
"weight": 468,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list.md",
|
||||
@@ -22326,7 +22326,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "create",
|
||||
"group": "sites",
|
||||
"weight": 465,
|
||||
"weight": 466,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create.md",
|
||||
@@ -22580,7 +22580,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFrameworks",
|
||||
"group": "frameworks",
|
||||
"weight": 470,
|
||||
"weight": 471,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-frameworks.md",
|
||||
@@ -22631,7 +22631,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listSpecifications",
|
||||
"group": "frameworks",
|
||||
"weight": 493,
|
||||
"weight": 494,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-specifications.md",
|
||||
@@ -22682,7 +22682,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "sites",
|
||||
"weight": 466,
|
||||
"weight": 467,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get.md",
|
||||
@@ -22743,7 +22743,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "sites",
|
||||
"weight": 468,
|
||||
"weight": 469,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update.md",
|
||||
@@ -22993,7 +22993,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "sites",
|
||||
"weight": 469,
|
||||
"weight": 470,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete.md",
|
||||
@@ -23056,7 +23056,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateSiteDeployment",
|
||||
"group": "sites",
|
||||
"weight": 476,
|
||||
"weight": 477,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-site-deployment.md",
|
||||
@@ -23138,7 +23138,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listDeployments",
|
||||
"group": "deployments",
|
||||
"weight": 475,
|
||||
"weight": 476,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-deployments.md",
|
||||
@@ -23234,7 +23234,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 471,
|
||||
"weight": 472,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "sites\/create-deployment.md",
|
||||
@@ -23340,7 +23340,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDuplicateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 479,
|
||||
"weight": 480,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-duplicate-deployment.md",
|
||||
@@ -23422,7 +23422,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createTemplateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 472,
|
||||
"weight": 473,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-template-deployment.md",
|
||||
@@ -23540,7 +23540,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVcsDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 473,
|
||||
"weight": 474,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-vcs-deployment.md",
|
||||
@@ -23640,7 +23640,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 474,
|
||||
"weight": 475,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-deployment.md",
|
||||
@@ -23704,7 +23704,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 477,
|
||||
"weight": 478,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-deployment.md",
|
||||
@@ -23770,7 +23770,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeploymentDownload",
|
||||
"group": "deployments",
|
||||
"weight": 478,
|
||||
"weight": 479,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "sites\/get-deployment-download.md",
|
||||
@@ -23862,7 +23862,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateDeploymentStatus",
|
||||
"group": "deployments",
|
||||
"weight": 480,
|
||||
"weight": 481,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-deployment-status.md",
|
||||
@@ -23935,7 +23935,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listLogs",
|
||||
"group": "logs",
|
||||
"weight": 482,
|
||||
"weight": 483,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-logs.md",
|
||||
@@ -24022,7 +24022,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getLog",
|
||||
"group": "logs",
|
||||
"weight": 481,
|
||||
"weight": 482,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-log.md",
|
||||
@@ -24086,7 +24086,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteLog",
|
||||
"group": "logs",
|
||||
"weight": 483,
|
||||
"weight": 484,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-log.md",
|
||||
@@ -24159,7 +24159,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listVariables",
|
||||
"group": "variables",
|
||||
"weight": 486,
|
||||
"weight": 487,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-variables.md",
|
||||
@@ -24220,7 +24220,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVariable",
|
||||
"group": "variables",
|
||||
"weight": 484,
|
||||
"weight": 485,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-variable.md",
|
||||
@@ -24313,7 +24313,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getVariable",
|
||||
"group": "variables",
|
||||
"weight": 485,
|
||||
"weight": 486,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-variable.md",
|
||||
@@ -24384,7 +24384,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateVariable",
|
||||
"group": "variables",
|
||||
"weight": 487,
|
||||
"weight": 488,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-variable.md",
|
||||
@@ -24479,7 +24479,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteVariable",
|
||||
"group": "variables",
|
||||
"weight": 488,
|
||||
"weight": 489,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-variable.md",
|
||||
@@ -24552,7 +24552,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listBuckets",
|
||||
"group": "buckets",
|
||||
"weight": 520,
|
||||
"weight": 521,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-buckets.md",
|
||||
@@ -24639,7 +24639,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createBucket",
|
||||
"group": "buckets",
|
||||
"weight": 518,
|
||||
"weight": 519,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/create-bucket.md",
|
||||
@@ -24715,7 +24715,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"description": "Compression algorithm chosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"x-example": "none",
|
||||
"enum": [
|
||||
"none",
|
||||
@@ -24775,7 +24775,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getBucket",
|
||||
"group": "buckets",
|
||||
"weight": 519,
|
||||
"weight": 520,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-bucket.md",
|
||||
@@ -24837,7 +24837,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateBucket",
|
||||
"group": "buckets",
|
||||
"weight": 521,
|
||||
"weight": 522,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-bucket.md",
|
||||
@@ -24920,7 +24920,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"description": "Compression algorithm chosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"x-example": "none",
|
||||
"enum": [
|
||||
"none",
|
||||
@@ -24970,7 +24970,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteBucket",
|
||||
"group": "buckets",
|
||||
"weight": 522,
|
||||
"weight": 523,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-bucket.md",
|
||||
@@ -25034,7 +25034,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFiles",
|
||||
"group": "files",
|
||||
"weight": 525,
|
||||
"weight": 526,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-files.md",
|
||||
@@ -25135,7 +25135,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFile",
|
||||
"group": "files",
|
||||
"weight": 523,
|
||||
"weight": 524,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "storage\/create-file.md",
|
||||
@@ -25238,7 +25238,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFile",
|
||||
"group": "files",
|
||||
"weight": 524,
|
||||
"weight": 525,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-file.md",
|
||||
@@ -25314,7 +25314,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFile",
|
||||
"group": "files",
|
||||
"weight": 526,
|
||||
"weight": 527,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-file.md",
|
||||
@@ -25408,7 +25408,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteFile",
|
||||
"group": "files",
|
||||
"weight": 527,
|
||||
"weight": 528,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-file.md",
|
||||
@@ -25479,7 +25479,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileDownload",
|
||||
"group": "files",
|
||||
"weight": 529,
|
||||
"weight": 530,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-download.md",
|
||||
@@ -25561,7 +25561,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFilePreview",
|
||||
"group": "files",
|
||||
"weight": 528,
|
||||
"weight": 529,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-preview.md",
|
||||
@@ -25793,7 +25793,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileView",
|
||||
"group": "files",
|
||||
"weight": 530,
|
||||
"weight": 531,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-view.md",
|
||||
@@ -33532,7 +33532,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "files",
|
||||
"weight": 515,
|
||||
"weight": 516,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/list.md",
|
||||
@@ -33627,7 +33627,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFileToken",
|
||||
"group": "files",
|
||||
"weight": 513,
|
||||
"weight": 514,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/create-file-token.md",
|
||||
@@ -33717,7 +33717,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "tokens",
|
||||
"weight": 514,
|
||||
"weight": 515,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/get.md",
|
||||
@@ -33778,7 +33778,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "tokens",
|
||||
"weight": 516,
|
||||
"weight": 517,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/update.md",
|
||||
@@ -33849,7 +33849,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "tokens",
|
||||
"weight": 517,
|
||||
"weight": 518,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/delete.md",
|
||||
@@ -43220,7 +43220,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).",
|
||||
"description": "Compression algorithm chosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).",
|
||||
"x-example": "gzip"
|
||||
},
|
||||
"encryption": {
|
||||
@@ -43237,6 +43237,12 @@
|
||||
"type": "boolean",
|
||||
"description": "Image transformations are enabled.",
|
||||
"x-example": false
|
||||
},
|
||||
"totalSize": {
|
||||
"type": "integer",
|
||||
"description": "Total size of this bucket in bytes.",
|
||||
"x-example": 128,
|
||||
"format": "int32"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -43252,7 +43258,8 @@
|
||||
"compression",
|
||||
"encryption",
|
||||
"antivirus",
|
||||
"transformations"
|
||||
"transformations",
|
||||
"totalSize"
|
||||
],
|
||||
"example": {
|
||||
"$id": "5e5ea5c16897e",
|
||||
@@ -43272,7 +43279,8 @@
|
||||
"compression": "gzip",
|
||||
"encryption": false,
|
||||
"antivirus": false,
|
||||
"transformations": false
|
||||
"transformations": false,
|
||||
"totalSize": 128
|
||||
}
|
||||
},
|
||||
"resourceToken": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.8.0",
|
||||
"version": "1.8.1",
|
||||
"title": "Appwrite",
|
||||
"description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)",
|
||||
"termsOfService": "https:\/\/appwrite.io\/policy\/terms",
|
||||
@@ -7375,7 +7375,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listExecutions",
|
||||
"group": "executions",
|
||||
"weight": 454,
|
||||
"weight": 455,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-executions.md",
|
||||
@@ -7458,7 +7458,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createExecution",
|
||||
"group": "executions",
|
||||
"weight": 452,
|
||||
"weight": 453,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-execution.md",
|
||||
@@ -7577,7 +7577,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getExecution",
|
||||
"group": "executions",
|
||||
"weight": 453,
|
||||
"weight": 454,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-execution.md",
|
||||
@@ -8379,7 +8379,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFiles",
|
||||
"group": "files",
|
||||
"weight": 525,
|
||||
"weight": 526,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-files.md",
|
||||
@@ -8472,7 +8472,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFile",
|
||||
"group": "files",
|
||||
"weight": 523,
|
||||
"weight": 524,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "storage\/create-file.md",
|
||||
@@ -8563,7 +8563,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFile",
|
||||
"group": "files",
|
||||
"weight": 524,
|
||||
"weight": 525,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-file.md",
|
||||
@@ -8634,7 +8634,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFile",
|
||||
"group": "files",
|
||||
"weight": 526,
|
||||
"weight": 527,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-file.md",
|
||||
@@ -8725,7 +8725,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteFile",
|
||||
"group": "files",
|
||||
"weight": 527,
|
||||
"weight": 528,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-file.md",
|
||||
@@ -8796,7 +8796,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileDownload",
|
||||
"group": "files",
|
||||
"weight": 529,
|
||||
"weight": 530,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-download.md",
|
||||
@@ -8876,7 +8876,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFilePreview",
|
||||
"group": "files",
|
||||
"weight": 528,
|
||||
"weight": 529,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-preview.md",
|
||||
@@ -9084,7 +9084,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileView",
|
||||
"group": "files",
|
||||
"weight": 530,
|
||||
"weight": 531,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-view.md",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.8.0",
|
||||
"version": "1.8.1",
|
||||
"title": "Appwrite",
|
||||
"description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)",
|
||||
"termsOfService": "https:\/\/appwrite.io\/policy\/terms",
|
||||
@@ -12308,7 +12308,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "functions",
|
||||
"weight": 438,
|
||||
"weight": 439,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list.md",
|
||||
@@ -12391,7 +12391,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "create",
|
||||
"group": "functions",
|
||||
"weight": 435,
|
||||
"weight": 436,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create.md",
|
||||
@@ -12705,7 +12705,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listRuntimes",
|
||||
"group": "runtimes",
|
||||
"weight": 440,
|
||||
"weight": 441,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-runtimes.md",
|
||||
@@ -12756,7 +12756,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listSpecifications",
|
||||
"group": "runtimes",
|
||||
"weight": 441,
|
||||
"weight": 442,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-specifications.md",
|
||||
@@ -12807,7 +12807,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "functions",
|
||||
"weight": 436,
|
||||
"weight": 437,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get.md",
|
||||
@@ -12868,7 +12868,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "functions",
|
||||
"weight": 437,
|
||||
"weight": 438,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update.md",
|
||||
@@ -13178,7 +13178,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "functions",
|
||||
"weight": 439,
|
||||
"weight": 440,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete.md",
|
||||
@@ -13241,7 +13241,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFunctionDeployment",
|
||||
"group": "functions",
|
||||
"weight": 444,
|
||||
"weight": 445,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-function-deployment.md",
|
||||
@@ -13320,7 +13320,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listDeployments",
|
||||
"group": "deployments",
|
||||
"weight": 445,
|
||||
"weight": 446,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-deployments.md",
|
||||
@@ -13411,7 +13411,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 442,
|
||||
"weight": 443,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "functions\/create-deployment.md",
|
||||
@@ -13505,7 +13505,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDuplicateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 450,
|
||||
"weight": 451,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-duplicate-deployment.md",
|
||||
@@ -13592,7 +13592,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createTemplateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 447,
|
||||
"weight": 448,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-template-deployment.md",
|
||||
@@ -13714,7 +13714,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVcsDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 448,
|
||||
"weight": 449,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-vcs-deployment.md",
|
||||
@@ -13812,7 +13812,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 443,
|
||||
"weight": 444,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-deployment.md",
|
||||
@@ -13876,7 +13876,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 446,
|
||||
"weight": 447,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-deployment.md",
|
||||
@@ -13945,7 +13945,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeploymentDownload",
|
||||
"group": "deployments",
|
||||
"weight": 449,
|
||||
"weight": 450,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "functions\/get-deployment-download.md",
|
||||
@@ -14032,7 +14032,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateDeploymentStatus",
|
||||
"group": "deployments",
|
||||
"weight": 451,
|
||||
"weight": 452,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-deployment-status.md",
|
||||
@@ -14101,7 +14101,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listExecutions",
|
||||
"group": "executions",
|
||||
"weight": 454,
|
||||
"weight": 455,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-executions.md",
|
||||
@@ -14186,7 +14186,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createExecution",
|
||||
"group": "executions",
|
||||
"weight": 452,
|
||||
"weight": 453,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-execution.md",
|
||||
@@ -14307,7 +14307,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getExecution",
|
||||
"group": "executions",
|
||||
"weight": 453,
|
||||
"weight": 454,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-execution.md",
|
||||
@@ -14374,7 +14374,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteExecution",
|
||||
"group": "executions",
|
||||
"weight": 455,
|
||||
"weight": 456,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-execution.md",
|
||||
@@ -14443,7 +14443,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listVariables",
|
||||
"group": "variables",
|
||||
"weight": 460,
|
||||
"weight": 461,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/list-variables.md",
|
||||
@@ -14504,7 +14504,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVariable",
|
||||
"group": "variables",
|
||||
"weight": 458,
|
||||
"weight": 459,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/create-variable.md",
|
||||
@@ -14596,7 +14596,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getVariable",
|
||||
"group": "variables",
|
||||
"weight": 459,
|
||||
"weight": 460,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/get-variable.md",
|
||||
@@ -14665,7 +14665,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateVariable",
|
||||
"group": "variables",
|
||||
"weight": 461,
|
||||
"weight": 462,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/update-variable.md",
|
||||
@@ -14761,7 +14761,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteVariable",
|
||||
"group": "variables",
|
||||
"weight": 462,
|
||||
"weight": 463,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "functions\/delete-variable.md",
|
||||
@@ -22376,7 +22376,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "sites",
|
||||
"weight": 467,
|
||||
"weight": 468,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list.md",
|
||||
@@ -22459,7 +22459,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "create",
|
||||
"group": "sites",
|
||||
"weight": 465,
|
||||
"weight": 466,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create.md",
|
||||
@@ -22731,7 +22731,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFrameworks",
|
||||
"group": "frameworks",
|
||||
"weight": 470,
|
||||
"weight": 471,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-frameworks.md",
|
||||
@@ -22782,7 +22782,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listSpecifications",
|
||||
"group": "frameworks",
|
||||
"weight": 493,
|
||||
"weight": 494,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-specifications.md",
|
||||
@@ -22833,7 +22833,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "sites",
|
||||
"weight": 466,
|
||||
"weight": 467,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get.md",
|
||||
@@ -22894,7 +22894,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "sites",
|
||||
"weight": 468,
|
||||
"weight": 469,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update.md",
|
||||
@@ -23161,7 +23161,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "sites",
|
||||
"weight": 469,
|
||||
"weight": 470,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete.md",
|
||||
@@ -23224,7 +23224,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateSiteDeployment",
|
||||
"group": "sites",
|
||||
"weight": 476,
|
||||
"weight": 477,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-site-deployment.md",
|
||||
@@ -23303,7 +23303,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listDeployments",
|
||||
"group": "deployments",
|
||||
"weight": 475,
|
||||
"weight": 476,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-deployments.md",
|
||||
@@ -23394,7 +23394,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 471,
|
||||
"weight": 472,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "sites\/create-deployment.md",
|
||||
@@ -23496,7 +23496,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createDuplicateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 479,
|
||||
"weight": 480,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-duplicate-deployment.md",
|
||||
@@ -23577,7 +23577,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createTemplateDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 472,
|
||||
"weight": 473,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-template-deployment.md",
|
||||
@@ -23699,7 +23699,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVcsDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 473,
|
||||
"weight": 474,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-vcs-deployment.md",
|
||||
@@ -23798,7 +23798,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 474,
|
||||
"weight": 475,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-deployment.md",
|
||||
@@ -23862,7 +23862,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteDeployment",
|
||||
"group": "deployments",
|
||||
"weight": 477,
|
||||
"weight": 478,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-deployment.md",
|
||||
@@ -23931,7 +23931,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getDeploymentDownload",
|
||||
"group": "deployments",
|
||||
"weight": 478,
|
||||
"weight": 479,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "sites\/get-deployment-download.md",
|
||||
@@ -24018,7 +24018,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateDeploymentStatus",
|
||||
"group": "deployments",
|
||||
"weight": 480,
|
||||
"weight": 481,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-deployment-status.md",
|
||||
@@ -24087,7 +24087,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listLogs",
|
||||
"group": "logs",
|
||||
"weight": 482,
|
||||
"weight": 483,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-logs.md",
|
||||
@@ -24169,7 +24169,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getLog",
|
||||
"group": "logs",
|
||||
"weight": 481,
|
||||
"weight": 482,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-log.md",
|
||||
@@ -24235,7 +24235,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteLog",
|
||||
"group": "logs",
|
||||
"weight": 483,
|
||||
"weight": 484,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-log.md",
|
||||
@@ -24304,7 +24304,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listVariables",
|
||||
"group": "variables",
|
||||
"weight": 486,
|
||||
"weight": 487,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/list-variables.md",
|
||||
@@ -24365,7 +24365,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createVariable",
|
||||
"group": "variables",
|
||||
"weight": 484,
|
||||
"weight": 485,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/create-variable.md",
|
||||
@@ -24457,7 +24457,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getVariable",
|
||||
"group": "variables",
|
||||
"weight": 485,
|
||||
"weight": 486,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/get-variable.md",
|
||||
@@ -24526,7 +24526,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateVariable",
|
||||
"group": "variables",
|
||||
"weight": 487,
|
||||
"weight": 488,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/update-variable.md",
|
||||
@@ -24622,7 +24622,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteVariable",
|
||||
"group": "variables",
|
||||
"weight": 488,
|
||||
"weight": 489,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "sites\/delete-variable.md",
|
||||
@@ -24691,7 +24691,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listBuckets",
|
||||
"group": "buckets",
|
||||
"weight": 520,
|
||||
"weight": 521,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-buckets.md",
|
||||
@@ -24775,7 +24775,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createBucket",
|
||||
"group": "buckets",
|
||||
"weight": 518,
|
||||
"weight": 519,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/create-bucket.md",
|
||||
@@ -24859,7 +24859,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"description": "Compression algorithm chosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"default": "none",
|
||||
"x-example": "none",
|
||||
"enum": [
|
||||
@@ -24922,7 +24922,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getBucket",
|
||||
"group": "buckets",
|
||||
"weight": 519,
|
||||
"weight": 520,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-bucket.md",
|
||||
@@ -24984,7 +24984,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateBucket",
|
||||
"group": "buckets",
|
||||
"weight": 521,
|
||||
"weight": 522,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-bucket.md",
|
||||
@@ -25070,7 +25070,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"description": "Compression algorithm chosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled",
|
||||
"default": "none",
|
||||
"x-example": "none",
|
||||
"enum": [
|
||||
@@ -25127,7 +25127,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteBucket",
|
||||
"group": "buckets",
|
||||
"weight": 522,
|
||||
"weight": 523,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-bucket.md",
|
||||
@@ -25189,7 +25189,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "listFiles",
|
||||
"group": "files",
|
||||
"weight": 525,
|
||||
"weight": 526,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/list-files.md",
|
||||
@@ -25284,7 +25284,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFile",
|
||||
"group": "files",
|
||||
"weight": 523,
|
||||
"weight": 524,
|
||||
"cookies": false,
|
||||
"type": "upload",
|
||||
"demo": "storage\/create-file.md",
|
||||
@@ -25377,7 +25377,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFile",
|
||||
"group": "files",
|
||||
"weight": 524,
|
||||
"weight": 525,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/get-file.md",
|
||||
@@ -25450,7 +25450,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "updateFile",
|
||||
"group": "files",
|
||||
"weight": 526,
|
||||
"weight": 527,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/update-file.md",
|
||||
@@ -25543,7 +25543,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "deleteFile",
|
||||
"group": "files",
|
||||
"weight": 527,
|
||||
"weight": 528,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "storage\/delete-file.md",
|
||||
@@ -25616,7 +25616,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileDownload",
|
||||
"group": "files",
|
||||
"weight": 529,
|
||||
"weight": 530,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-download.md",
|
||||
@@ -25698,7 +25698,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFilePreview",
|
||||
"group": "files",
|
||||
"weight": 528,
|
||||
"weight": 529,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-preview.md",
|
||||
@@ -25908,7 +25908,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "getFileView",
|
||||
"group": "files",
|
||||
"weight": 530,
|
||||
"weight": 531,
|
||||
"cookies": false,
|
||||
"type": "location",
|
||||
"demo": "storage\/get-file-view.md",
|
||||
@@ -33457,7 +33457,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"group": "files",
|
||||
"weight": 515,
|
||||
"weight": 516,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/list.md",
|
||||
@@ -33547,7 +33547,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "createFileToken",
|
||||
"group": "files",
|
||||
"weight": 513,
|
||||
"weight": 514,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/create-file-token.md",
|
||||
@@ -33632,7 +33632,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"group": "tokens",
|
||||
"weight": 514,
|
||||
"weight": 515,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/get.md",
|
||||
@@ -33693,7 +33693,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "update",
|
||||
"group": "tokens",
|
||||
"weight": 516,
|
||||
"weight": 517,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/update.md",
|
||||
@@ -33765,7 +33765,7 @@
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"group": "tokens",
|
||||
"weight": 517,
|
||||
"weight": 518,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"demo": "tokens\/delete.md",
|
||||
@@ -43148,7 +43148,7 @@
|
||||
},
|
||||
"compression": {
|
||||
"type": "string",
|
||||
"description": "Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).",
|
||||
"description": "Compression algorithm chosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).",
|
||||
"x-example": "gzip"
|
||||
},
|
||||
"encryption": {
|
||||
@@ -43165,6 +43165,12 @@
|
||||
"type": "boolean",
|
||||
"description": "Image transformations are enabled.",
|
||||
"x-example": false
|
||||
},
|
||||
"totalSize": {
|
||||
"type": "integer",
|
||||
"description": "Total size of this bucket in bytes.",
|
||||
"x-example": 128,
|
||||
"format": "int32"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -43180,7 +43186,8 @@
|
||||
"compression",
|
||||
"encryption",
|
||||
"antivirus",
|
||||
"transformations"
|
||||
"transformations",
|
||||
"totalSize"
|
||||
],
|
||||
"example": {
|
||||
"$id": "5e5ea5c16897e",
|
||||
@@ -43200,7 +43207,8 @@
|
||||
"compression": "gzip",
|
||||
"encryption": false,
|
||||
"antivirus": false,
|
||||
"transformations": false
|
||||
"transformations": false,
|
||||
"totalSize": 128
|
||||
}
|
||||
},
|
||||
"resourceToken": {
|
||||
|
||||
@@ -1328,6 +1328,86 @@ App::error()
|
||||
$log->addExtra('trace', $error->getTraceAsString());
|
||||
$log->addExtra('roles', Authorization::getRoles());
|
||||
|
||||
try {
|
||||
/* add queries to log */
|
||||
$queries = $request->getParam('queries', []);
|
||||
if (!empty($queries) && is_array($queries)) {
|
||||
$parsedQueries = Query::parseQueries($queries);
|
||||
|
||||
// format query by removing sensitive values
|
||||
$formatQuery = function (array $queryArray) use (&$formatQuery): ?array {
|
||||
$method = $queryArray['method'] ?? '';
|
||||
$values = $queryArray['values'] ?? [];
|
||||
$attribute = $queryArray['attribute'] ?? '';
|
||||
|
||||
if (!is_string($method) || $method === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
// logical queries - recursively format nested queries
|
||||
if (in_array($method, [Query::TYPE_AND, Query::TYPE_OR], true)) {
|
||||
$nested = [];
|
||||
foreach ($values as $nestedArray) {
|
||||
if (is_array($nestedArray)) {
|
||||
$formatted = $formatQuery($nestedArray);
|
||||
if ($formatted !== null) {
|
||||
$nested[] = $formatted;
|
||||
}
|
||||
}
|
||||
}
|
||||
return empty($nested) ? null : [$method => $nested];
|
||||
}
|
||||
|
||||
// select - show selected attributes
|
||||
if ($method === Query::TYPE_SELECT) {
|
||||
$attributes = array_values(array_filter($values, 'is_string'));
|
||||
return [$method => $attributes];
|
||||
}
|
||||
|
||||
// pagination
|
||||
if (in_array($method, [
|
||||
Query::TYPE_LIMIT,
|
||||
Query::TYPE_OFFSET,
|
||||
Query::TYPE_CURSOR_AFTER,
|
||||
Query::TYPE_CURSOR_BEFORE
|
||||
], true)) {
|
||||
return [$method => []];
|
||||
}
|
||||
|
||||
// orders
|
||||
if (in_array($method, [
|
||||
Query::TYPE_ORDER_DESC,
|
||||
Query::TYPE_ORDER_ASC,
|
||||
Query::TYPE_ORDER_RANDOM
|
||||
], true)) {
|
||||
return [$method => !empty($attribute) ? [$attribute] : []];
|
||||
}
|
||||
|
||||
// filter
|
||||
if (!empty($attribute)) {
|
||||
return [$method => [$attribute]];
|
||||
}
|
||||
|
||||
// fallback
|
||||
return [$method => []];
|
||||
};
|
||||
|
||||
$formattedQueries = [];
|
||||
foreach ($parsedQueries as $query) {
|
||||
$formatted = $formatQuery($query->toArray());
|
||||
if ($formatted !== null) {
|
||||
$formattedQueries[] = $formatted;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($formattedQueries)) {
|
||||
$log->addExtra('queries', $formattedQueries);
|
||||
}
|
||||
}
|
||||
} catch (Throwable $_) {
|
||||
// don't fail the error handler
|
||||
}
|
||||
|
||||
$action = 'UNKNOWN_NAMESPACE.UNKNOWN.METHOD';
|
||||
if (!empty($sdk)) {
|
||||
/** @var \Appwrite\SDK\Method $sdk */
|
||||
|
||||
@@ -544,9 +544,4 @@ $worker
|
||||
Console::error('[Error] Line: ' . $error->getLine());
|
||||
});
|
||||
|
||||
$worker->workerStart()
|
||||
->action(function () use ($workerName) {
|
||||
Console::info("Worker $workerName started");
|
||||
});
|
||||
|
||||
$worker->start();
|
||||
|
||||
+9
-3
@@ -64,12 +64,12 @@
|
||||
"utopia-php/locale": "0.8.*",
|
||||
"utopia-php/logger": "0.6.*",
|
||||
"utopia-php/messaging": "0.20.*",
|
||||
"utopia-php/migration": "1.*.*",
|
||||
"utopia-php/migration": "1.3.*",
|
||||
"utopia-php/orchestration": "0.9.*",
|
||||
"utopia-php/platform": "0.7.*",
|
||||
"utopia-php/pools": "0.8.*",
|
||||
"utopia-php/preloader": "0.2.*",
|
||||
"utopia-php/queue": "0.11.*",
|
||||
"utopia-php/queue": "0.15.*",
|
||||
"utopia-php/registry": "0.5.*",
|
||||
"utopia-php/storage": "0.18.*",
|
||||
"utopia-php/swoole": "0.8.*",
|
||||
@@ -100,6 +100,12 @@
|
||||
"provide": {
|
||||
"ext-phpiredis": "*"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/utopia-php/migration.git"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "8.3"
|
||||
@@ -109,4 +115,4 @@
|
||||
"tbachert/spi": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+42
-24
@@ -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": "9bac4d8946e35357efa46fd087c9484e",
|
||||
"content-hash": "aecb99247e6e5090561afd7134c247f9",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adhocore/jwt",
|
||||
@@ -4516,16 +4516,16 @@
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/migration",
|
||||
"version": "1.3.10",
|
||||
"version": "1.3.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/migration.git",
|
||||
"reference": "cb357c42a5a5614605b546effbea1204ed64c6b0"
|
||||
"reference": "1b8d5519c50630e4c0b6a79be615b70d5f23d2e4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/migration/zipball/cb357c42a5a5614605b546effbea1204ed64c6b0",
|
||||
"reference": "cb357c42a5a5614605b546effbea1204ed64c6b0",
|
||||
"url": "https://api.github.com/repos/utopia-php/migration/zipball/1b8d5519c50630e4c0b6a79be615b70d5f23d2e4",
|
||||
"reference": "1b8d5519c50630e4c0b6a79be615b70d5f23d2e4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4551,7 +4551,25 @@
|
||||
"Utopia\\Migration\\": "src/Migration"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Utopia\\Tests\\": "tests/Migration"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": [
|
||||
"./vendor/bin/phpunit"
|
||||
],
|
||||
"lint": [
|
||||
"./vendor/bin/pint --test"
|
||||
],
|
||||
"format": [
|
||||
"./vendor/bin/pint"
|
||||
],
|
||||
"check": [
|
||||
"./vendor/bin/phpstan analyse --level 3 src tests --memory-limit 2G"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
@@ -4564,10 +4582,10 @@
|
||||
"utopia"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/migration/issues",
|
||||
"source": "https://github.com/utopia-php/migration/tree/1.3.10"
|
||||
"source": "https://github.com/utopia-php/migration/tree/1.3.12",
|
||||
"issues": "https://github.com/utopia-php/migration/issues"
|
||||
},
|
||||
"time": "2026-01-06T10:47:11+00:00"
|
||||
"time": "2026-01-07T06:07:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/mongo",
|
||||
@@ -4682,16 +4700,16 @@
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/platform",
|
||||
"version": "0.7.13",
|
||||
"version": "0.7.14",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/platform.git",
|
||||
"reference": "77a863a920122e2c6a6bc6ee5548d366a3f4c6c7"
|
||||
"reference": "9f18ce63f1425ae2dae57468200e4a5d1239d57b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/platform/zipball/77a863a920122e2c6a6bc6ee5548d366a3f4c6c7",
|
||||
"reference": "77a863a920122e2c6a6bc6ee5548d366a3f4c6c7",
|
||||
"url": "https://api.github.com/repos/utopia-php/platform/zipball/9f18ce63f1425ae2dae57468200e4a5d1239d57b",
|
||||
"reference": "9f18ce63f1425ae2dae57468200e4a5d1239d57b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4700,7 +4718,7 @@
|
||||
"php": ">=8.0",
|
||||
"utopia-php/cli": "0.15.*",
|
||||
"utopia-php/framework": "0.33.*",
|
||||
"utopia-php/queue": "0.11.*"
|
||||
"utopia-php/queue": "0.15.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/pint": "1.*",
|
||||
@@ -4727,9 +4745,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/platform/issues",
|
||||
"source": "https://github.com/utopia-php/platform/tree/0.7.13"
|
||||
"source": "https://github.com/utopia-php/platform/tree/0.7.14"
|
||||
},
|
||||
"time": "2025-12-08T10:02:40+00:00"
|
||||
"time": "2026-01-06T15:39:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/pools",
|
||||
@@ -4838,22 +4856,22 @@
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/queue",
|
||||
"version": "0.11.3",
|
||||
"version": "0.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/queue.git",
|
||||
"reference": "f3b2623efe87595c9ed907b3efd587e77c622d3d"
|
||||
"reference": "6abb268ba7ec00dea4e5201b007776ea1bce9242"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/queue/zipball/f3b2623efe87595c9ed907b3efd587e77c622d3d",
|
||||
"reference": "f3b2623efe87595c9ed907b3efd587e77c622d3d",
|
||||
"url": "https://api.github.com/repos/utopia-php/queue/zipball/6abb268ba7ec00dea4e5201b007776ea1bce9242",
|
||||
"reference": "6abb268ba7ec00dea4e5201b007776ea1bce9242",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.3",
|
||||
"php-amqplib/php-amqplib": "^3.7",
|
||||
"utopia-php/cli": "0.15.*",
|
||||
"utopia-php/console": "0.0.*",
|
||||
"utopia-php/fetch": "0.5.*",
|
||||
"utopia-php/framework": "0.33.*",
|
||||
"utopia-php/pools": "0.8.*",
|
||||
@@ -4898,9 +4916,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/queue/issues",
|
||||
"source": "https://github.com/utopia-php/queue/tree/0.11.3"
|
||||
"source": "https://github.com/utopia-php/queue/tree/0.15.0"
|
||||
},
|
||||
"time": "2025-12-19T10:56:22+00:00"
|
||||
"time": "2026-01-06T12:41:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/registry",
|
||||
@@ -8971,5 +8989,5 @@
|
||||
"platform-overrides": {
|
||||
"php": "8.3"
|
||||
},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ class Create extends Action
|
||||
->param('enabled', true, new Boolean(true), 'Is bucket enabled? When set to \'disabled\', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.', true)
|
||||
->param('maximumFileSize', fn (array $plan) => empty($plan['fileSize']) ? (int) System::getEnv('_APP_STORAGE_LIMIT', 0) : $plan['fileSize'] * 1000 * 1000, fn (array $plan) => new Range(1, empty($plan['fileSize']) ? (int) System::getEnv('_APP_STORAGE_LIMIT', 0) : $plan['fileSize'] * 1000 * 1000), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human(System::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '.', true, ['plan'])
|
||||
->param('allowedFileExtensions', [], new ArrayList(new Text(64), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Allowed file extensions. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' extensions are allowed, each 64 characters long.', true)
|
||||
->param('compression', Compression::NONE, new WhiteList([Compression::NONE, Compression::GZIP, Compression::ZSTD], true), 'Compression algorithm choosen for compression. Can be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true)
|
||||
->param('compression', Compression::NONE, new WhiteList([Compression::NONE, Compression::GZIP, Compression::ZSTD], true), 'Compression algorithm chosen for compression. Can be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true)
|
||||
->param('encryption', true, new Boolean(true), 'Is encryption enabled? For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' encryption is skipped even if it\'s enabled', true)
|
||||
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
||||
->param('transformations', true, new Boolean(true), 'Are image transformations enabled?', true)
|
||||
|
||||
@@ -8,6 +8,9 @@ use Appwrite\SDK\Method;
|
||||
use Appwrite\SDK\Response as SDKResponse;
|
||||
use Appwrite\Utopia\Response;
|
||||
use Utopia\Database\Database;
|
||||
use Utopia\Database\Document;
|
||||
use Utopia\Database\Query;
|
||||
use Utopia\Database\Validator\Authorization;
|
||||
use Utopia\Database\Validator\UID;
|
||||
use Utopia\Platform\Action;
|
||||
use Utopia\Platform\Scope\HTTP;
|
||||
@@ -46,20 +49,48 @@ class Get extends Action
|
||||
->param('bucketId', '', new UID(), 'Bucket unique ID.')
|
||||
->inject('response')
|
||||
->inject('dbForProject')
|
||||
->inject('project')
|
||||
->inject('getLogsDB')
|
||||
->callback($this->action(...));
|
||||
}
|
||||
|
||||
public function action(
|
||||
string $bucketId,
|
||||
Response $response,
|
||||
Database $dbForProject
|
||||
) {
|
||||
Database $dbForProject,
|
||||
Document $project,
|
||||
callable $getLogsDB
|
||||
): void {
|
||||
$bucket = $dbForProject->getDocument('buckets', $bucketId);
|
||||
|
||||
if ($bucket->isEmpty()) {
|
||||
throw new Exception(Exception::STORAGE_BUCKET_NOT_FOUND);
|
||||
}
|
||||
|
||||
$metric = str_replace(
|
||||
'{bucketInternalId}',
|
||||
$bucket->getSequence(),
|
||||
METRIC_BUCKET_ID_FILES_STORAGE
|
||||
);
|
||||
|
||||
$statsDocId = md5('_inf_' . $metric);
|
||||
|
||||
$dbForLogs = call_user_func($getLogsDB, $project);
|
||||
$storageStats = Authorization::skip(
|
||||
fn () => $dbForLogs->getDocument(
|
||||
'stats',
|
||||
$statsDocId,
|
||||
[Query::select(['value'])]
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* The value can be 0 if stats were not aggregated when this request was made!
|
||||
*/
|
||||
$totalSize = $storageStats->isEmpty() ? 0 : $storageStats->getAttribute('value', 0);
|
||||
|
||||
$bucket->setAttribute('totalSize', $totalSize);
|
||||
|
||||
$response->dynamic($bucket, Response::MODEL_BUCKET);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class Update extends Action
|
||||
->param('enabled', true, new Boolean(true), 'Is bucket enabled? When set to \'disabled\', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled.', true)
|
||||
->param('maximumFileSize', fn (array $plan) => empty($plan['fileSize']) ? (int) System::getEnv('_APP_STORAGE_LIMIT', 0) : $plan['fileSize'] * 1000 * 1000, fn (array $plan) => new Range(1, empty($plan['fileSize']) ? (int) System::getEnv('_APP_STORAGE_LIMIT', 0) : $plan['fileSize'] * 1000 * 1000), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human(System::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '.', true, ['plan'])
|
||||
->param('allowedFileExtensions', [], new ArrayList(new Text(64), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Allowed file extensions. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' extensions are allowed, each 64 characters long.', true)
|
||||
->param('compression', Compression::NONE, new WhiteList([Compression::NONE, Compression::GZIP, Compression::ZSTD], true), 'Compression algorithm choosen for compression. Can be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true)
|
||||
->param('compression', Compression::NONE, new WhiteList([Compression::NONE, Compression::GZIP, Compression::ZSTD], true), 'Compression algorithm chosen for compression. Can be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true)
|
||||
->param('encryption', true, new Boolean(true), 'Is encryption enabled? For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' encryption is skipped even if it\'s enabled', true)
|
||||
->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true)
|
||||
->param('transformations', true, new Boolean(true), 'Are image transformations enabled?', true)
|
||||
|
||||
@@ -13,6 +13,7 @@ use Utopia\Database\Document;
|
||||
use Utopia\Database\Exception\Order as OrderException;
|
||||
use Utopia\Database\Exception\Query as QueryException;
|
||||
use Utopia\Database\Query;
|
||||
use Utopia\Database\Validator\Authorization;
|
||||
use Utopia\Database\Validator\Query\Cursor;
|
||||
use Utopia\Platform\Action;
|
||||
use Utopia\Platform\Scope\HTTP;
|
||||
@@ -55,6 +56,8 @@ class XList extends Action
|
||||
->param('total', true, new Boolean(true), 'When set to false, the total count returned will be 0 and will not be calculated.', true)
|
||||
->inject('response')
|
||||
->inject('dbForProject')
|
||||
->inject('project')
|
||||
->inject('getLogsDB')
|
||||
->callback($this->action(...));
|
||||
}
|
||||
|
||||
@@ -63,7 +66,9 @@ class XList extends Action
|
||||
string $search,
|
||||
bool $includeTotal,
|
||||
Response $response,
|
||||
Database $dbForProject
|
||||
Database $dbForProject,
|
||||
Document $project,
|
||||
callable $getLogsDB
|
||||
) {
|
||||
try {
|
||||
$queries = Query::parseQueries($queries);
|
||||
@@ -109,6 +114,45 @@ class XList extends Action
|
||||
} catch (QueryException $e) {
|
||||
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||
}
|
||||
|
||||
if (!empty($buckets)) {
|
||||
$bucketByStatsId = [];
|
||||
$dbForLogs = call_user_func($getLogsDB, $project);
|
||||
|
||||
foreach ($buckets as $bucket) {
|
||||
$metric = str_replace(
|
||||
'{bucketInternalId}',
|
||||
$bucket->getSequence(),
|
||||
METRIC_BUCKET_ID_FILES_STORAGE
|
||||
);
|
||||
|
||||
$statId = md5('_inf_' . $metric);
|
||||
|
||||
$bucketByStatsId[$statId] = $bucket;
|
||||
|
||||
// set a default
|
||||
$bucket->setAttribute('totalSize', 0);
|
||||
}
|
||||
|
||||
/* @type Document[] $stats */
|
||||
$stats = Authorization::skip(function () use ($dbForLogs, $bucketByStatsId) {
|
||||
$statsIds = array_keys($bucketByStatsId);
|
||||
|
||||
return $dbForLogs->find('stats', [
|
||||
Query::equal('$id', $statsIds),
|
||||
Query::select(['value']),
|
||||
]);
|
||||
});
|
||||
|
||||
foreach ($stats as $stat) {
|
||||
$bucket = $bucketByStatsId[$stat->getId()];
|
||||
|
||||
if ($bucket) {
|
||||
$bucket->setAttribute('totalSize', $stat->getAttribute('value', 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$response->dynamic(new Document([
|
||||
'buckets' => $buckets,
|
||||
'total' => $total,
|
||||
|
||||
@@ -187,7 +187,7 @@ class Deletes extends Action
|
||||
case DELETE_TYPE_MAINTENANCE:
|
||||
$this->deleteExpiredTargets($project, $getProjectDB);
|
||||
$this->deleteExecutionLogs($project, $getProjectDB, $executionRetention);
|
||||
$this->deleteAuditLogs($project, $getProjectDB, $auditRetention);
|
||||
$this->deleteAuditLogs($project, $getAudit, $auditRetention);
|
||||
$this->deleteUsageStats($project, $getProjectDB, $getLogsDB, $hourlyUsageRetentionDatetime);
|
||||
$this->deleteExpiredSessions($project, $getProjectDB);
|
||||
$this->deleteExpiredTransactions($project, $getProjectDB);
|
||||
|
||||
@@ -110,10 +110,18 @@ class Migrations extends Action
|
||||
$events = $payload['events'] ?? [];
|
||||
$migration = new Document($payload['migration'] ?? []);
|
||||
|
||||
if ($migration->isEmpty()) {
|
||||
throw new \Exception('Migration not found');
|
||||
}
|
||||
|
||||
if ($project->getId() === 'console') {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($project->isEmpty()) {
|
||||
throw new \Exception('Project not found');
|
||||
}
|
||||
|
||||
$this->dbForProject = $dbForProject;
|
||||
$this->dbForPlatform = $dbForPlatform;
|
||||
$this->project = $project;
|
||||
@@ -312,7 +320,8 @@ class Migrations extends Action
|
||||
Mail $queueForMails,
|
||||
array $platform,
|
||||
): void {
|
||||
$project = $this->dbForPlatform->getDocument('projects', $this->project->getId());
|
||||
$project = $this->project;
|
||||
|
||||
$tempAPIKey = $this->generateAPIKey($project);
|
||||
|
||||
$transfer = $source = $destination = null;
|
||||
@@ -386,62 +395,59 @@ class Migrations extends Action
|
||||
Console::error('Line: ' . $th->getLine());
|
||||
Console::error($th->getTraceAsString());
|
||||
|
||||
if (! $migration->isEmpty()) {
|
||||
$migration->setAttribute('status', 'failed');
|
||||
$migration->setAttribute('stage', 'finished');
|
||||
$migration->setAttribute('status', 'failed');
|
||||
$migration->setAttribute('stage', 'finished');
|
||||
|
||||
call_user_func($this->logError, $th, 'appwrite-worker', 'appwrite-queue-'.self::getName(), [
|
||||
'migrationId' => $migration->getId(),
|
||||
'source' => $migration->getAttribute('source') ?? '',
|
||||
'destination' => $migration->getAttribute('destination') ?? '',
|
||||
]);
|
||||
call_user_func($this->logError, $th, 'appwrite-worker', 'appwrite-queue-'.self::getName(), [
|
||||
'migrationId' => $migration->getId(),
|
||||
'source' => $migration->getAttribute('source') ?? '',
|
||||
'destination' => $migration->getAttribute('destination') ?? '',
|
||||
]);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($transfer) {
|
||||
$sourceErrors = $source->getErrors();
|
||||
$destinationErrors = $destination->getErrors();
|
||||
$migration->setAttribute('errors', $this->sanitizeErrors($sourceErrors, $destinationErrors));
|
||||
}
|
||||
} finally {
|
||||
$this->updateMigrationDocument($migration, $project, $queueForRealtime);
|
||||
try {
|
||||
$this->updateMigrationDocument($migration, $project, $queueForRealtime);
|
||||
|
||||
if ($migration->getAttribute('status', '') === 'failed') {
|
||||
Console::error('Migration('.$migration->getSequence().':'.$migration->getId().') failed, Project('.$this->project->getSequence().':'.$this->project->getId().')');
|
||||
if ($migration->getAttribute('status', '') === 'failed') {
|
||||
Console::error('Migration('.$migration->getSequence().':'.$migration->getId().') failed, Project('.$this->project->getSequence().':'.$this->project->getId().')');
|
||||
|
||||
$sourceErrors = $source?->getErrors() ?? [];
|
||||
$destinationErrors = $destination?->getErrors() ?? [];
|
||||
$sourceErrors = $source?->getErrors() ?? [];
|
||||
$destinationErrors = $destination?->getErrors() ?? [];
|
||||
|
||||
foreach ([...$sourceErrors, ...$destinationErrors] as $error) {
|
||||
/** @var MigrationException $error */
|
||||
if ($error->getCode() === 0 || $error->getCode() >= 500) {
|
||||
($this->logError)($error, 'appwrite-worker', 'appwrite-queue-' . self::getName(), [
|
||||
'migrationId' => $migration->getId(),
|
||||
'source' => $migration->getAttribute('source') ?? '',
|
||||
'destination' => $migration->getAttribute('destination') ?? '',
|
||||
'resourceName' => $error->getResourceName(),
|
||||
'resourceGroup' => $error->getResourceGroup(),
|
||||
]);
|
||||
foreach ([...$sourceErrors, ...$destinationErrors] as $error) {
|
||||
/** @var MigrationException $error */
|
||||
if ($error->getCode() === 0 || $error->getCode() >= 500) {
|
||||
($this->logError)($error, 'appwrite-worker', 'appwrite-queue-' . self::getName(), [
|
||||
'migrationId' => $migration->getId(),
|
||||
'source' => $migration->getAttribute('source') ?? '',
|
||||
'destination' => $migration->getAttribute('destination') ?? '',
|
||||
'resourceName' => $error->getResourceName(),
|
||||
'resourceGroup' => $error->getResourceGroup(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$source?->error();
|
||||
$destination?->error();
|
||||
}
|
||||
|
||||
if ($migration->getAttribute('status', '') === 'completed') {
|
||||
$destination?->success();
|
||||
$source?->success();
|
||||
|
||||
// todo: Move to CSV hook
|
||||
if ($migration->getAttribute('destination') === DestinationCSV::getName()) {
|
||||
$this->handleCSVExportComplete($project, $migration, $queueForMails, $queueForRealtime, $platform);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
$source?->cleanUp();
|
||||
$destination?->cleanUp();
|
||||
|
||||
$source?->error();
|
||||
$destination?->error();
|
||||
$transfer = null;
|
||||
$source = null;
|
||||
$destination = null;
|
||||
}
|
||||
|
||||
if ($migration->getAttribute('status', '') === 'completed') {
|
||||
$destination?->success();
|
||||
$source?->success();
|
||||
|
||||
if ($migration->getAttribute('destination') === DestinationCSV::getName()) {
|
||||
$this->handleCSVExportComplete($project, $migration, $queueForMails, $queueForRealtime, $platform);
|
||||
}
|
||||
}
|
||||
|
||||
$transfer = null;
|
||||
$source = null;
|
||||
$destination = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ class Projects extends Base
|
||||
'name',
|
||||
'teamId',
|
||||
'labels',
|
||||
'search'
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -69,7 +69,7 @@ class Bucket extends Model
|
||||
])
|
||||
->addRule('compression', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Compression algorithm choosen for compression. Will be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd).',
|
||||
'description' => 'Compression algorithm chosen for compression. Will be one of ' . Compression::NONE . ', [' . Compression::GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . Compression::ZSTD . '](https://en.wikipedia.org/wiki/Zstd).',
|
||||
'default' => '',
|
||||
'example' => 'gzip',
|
||||
'array' => false
|
||||
@@ -92,6 +92,12 @@ class Bucket extends Model
|
||||
'default' => true,
|
||||
'example' => false,
|
||||
])
|
||||
->addRule('totalSize', [
|
||||
'type' => self::TYPE_INTEGER,
|
||||
'description' => 'Total size of this bucket in bytes.',
|
||||
'default' => 0,
|
||||
'example' => 128,
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -2334,7 +2334,8 @@ trait Base
|
||||
buckets {
|
||||
_id
|
||||
name
|
||||
enabled
|
||||
enabled,
|
||||
totalSize
|
||||
}
|
||||
}
|
||||
}';
|
||||
@@ -2344,6 +2345,7 @@ trait Base
|
||||
_id
|
||||
name
|
||||
enabled
|
||||
totalSize
|
||||
}
|
||||
}';
|
||||
case self::UPDATE_BUCKET:
|
||||
|
||||
@@ -105,12 +105,24 @@ class StorageServerTest extends Scope
|
||||
$buckets = $buckets['body']['data']['storageListBuckets'];
|
||||
$this->assertIsArray($buckets);
|
||||
|
||||
if (!empty($buckets['buckets'])) {
|
||||
foreach ($buckets['buckets'] as $bucket) {
|
||||
$this->assertArrayHasKey('totalSize', $bucket);
|
||||
$this->assertIsInt($bucket['totalSize']);
|
||||
|
||||
/* always 0 because the stats worker runs hourly! */
|
||||
$this->assertGreaterThanOrEqual(0, $bucket['totalSize']);
|
||||
}
|
||||
}
|
||||
|
||||
return $buckets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testCreateBucket
|
||||
* @depends testCreateFile
|
||||
* @param $bucket
|
||||
* @param $file
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
@@ -134,6 +146,7 @@ class StorageServerTest extends Scope
|
||||
$this->assertArrayNotHasKey('errors', $bucket['body']);
|
||||
$bucket = $bucket['body']['data']['storageGetBucket'];
|
||||
$this->assertEquals('Actors', $bucket['name']);
|
||||
$this->assertArrayHasKey('totalSize', $bucket);
|
||||
|
||||
return $bucket;
|
||||
}
|
||||
|
||||
@@ -951,4 +951,69 @@ trait StorageBase
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function testBucketTotalSize(): void
|
||||
{
|
||||
$bucket = $this->client->call(Client::METHOD_POST, '/storage/buckets', [
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-key' => $this->getProject()['apiKey'],
|
||||
], [
|
||||
'bucketId' => ID::unique(),
|
||||
'name' => 'Test Bucket Size',
|
||||
'permissions' => [
|
||||
Permission::read(Role::any()),
|
||||
Permission::create(Role::any()),
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(201, $bucket['headers']['status-code']);
|
||||
$bucketId = $bucket['body']['$id'];
|
||||
|
||||
// bucket should have totalSize = 0 (no files)
|
||||
$emptyBucket = $this->client->call(Client::METHOD_GET, '/storage/buckets/' . $bucketId, [
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-key' => $this->getProject()['apiKey'],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $emptyBucket['headers']['status-code']);
|
||||
$this->assertArrayHasKey('totalSize', $emptyBucket['body']);
|
||||
$this->assertEquals(0, $emptyBucket['body']['totalSize']);
|
||||
|
||||
// upload first file
|
||||
$file1 = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([
|
||||
'content-type' => 'multipart/form-data',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'fileId' => ID::unique(),
|
||||
'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'),
|
||||
]);
|
||||
|
||||
$this->assertEquals(201, $file1['headers']['status-code']);
|
||||
|
||||
// upload second file
|
||||
$file2 = $this->client->call(Client::METHOD_POST, '/storage/buckets/' . $bucketId . '/files', array_merge([
|
||||
'content-type' => 'multipart/form-data',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'fileId' => ID::unique(),
|
||||
'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/image.webp'), 'image/webp', 'image.webp'),
|
||||
]);
|
||||
|
||||
$this->assertEquals(201, $file2['headers']['status-code']);
|
||||
|
||||
$bucket = $this->client->call(Client::METHOD_GET, '/storage/buckets/' . $bucketId, [
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-key' => $this->getProject()['apiKey'],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $bucket['headers']['status-code']);
|
||||
$this->assertArrayHasKey('totalSize', $bucket['body']);
|
||||
$this->assertIsInt($bucket['body']['totalSize']);
|
||||
|
||||
/* will always be 0 in tests because the worker runs hourly! */
|
||||
$this->assertGreaterThanOrEqual(0, $bucket['body']['totalSize']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +96,14 @@ class StorageCustomServerTest extends Scope
|
||||
$this->assertEquals($id, $response['body']['buckets'][0]['$id']);
|
||||
$this->assertEquals('Test Bucket', $response['body']['buckets'][0]['name']);
|
||||
|
||||
foreach ($response['body']['buckets'] as $bucket) {
|
||||
$this->assertArrayHasKey('totalSize', $bucket);
|
||||
$this->assertIsInt($bucket['totalSize']);
|
||||
|
||||
/* always 0 because the stats worker runs hourly! */
|
||||
$this->assertGreaterThanOrEqual(0, $bucket['totalSize']);
|
||||
}
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/storage/buckets', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
@@ -186,6 +194,7 @@ class StorageCustomServerTest extends Scope
|
||||
$this->assertNotEmpty($response['body']);
|
||||
$this->assertEquals($id, $response['body']['$id']);
|
||||
$this->assertEquals('Test Bucket', $response['body']['name']);
|
||||
$this->assertArrayHasKey('totalSize', $response['body']);
|
||||
|
||||
/**
|
||||
* Test for FAILURE
|
||||
|
||||
Reference in New Issue
Block a user