mirror of
https://github.com/appwrite/appwrite
synced 2026-05-22 16:38:32 +00:00
Merge remote-tracking branch 'origin/1.6.x' into chore-update-database
This commit is contained in:
commit
c6dd2dbf40
22 changed files with 582 additions and 927 deletions
|
|
@ -5417,6 +5417,39 @@ $consoleCollections = array_merge([
|
|||
'default' => false,
|
||||
'array' => false,
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('personalAccessToken'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 256,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => ['encrypt'],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('personalAccessTokenExpiry'),
|
||||
'type' => Database::VAR_DATETIME,
|
||||
'format' => '',
|
||||
'size' => 0,
|
||||
'signed' => false,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => ['datetime'],
|
||||
],
|
||||
[
|
||||
'$id' => ID::custom('personalRefreshToken'),
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 256,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
'array' => false,
|
||||
'filters' => ['encrypt'],
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2784,7 +2784,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -5766,7 +5766,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -5851,7 +5851,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2795,7 +2795,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -9488,7 +9488,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -10145,7 +10146,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -13673,7 +13675,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessages",
|
||||
"weight": 390,
|
||||
"weight": 384,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13751,7 +13753,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createEmail",
|
||||
"weight": 387,
|
||||
"weight": 381,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13897,7 +13899,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateEmail",
|
||||
"weight": 394,
|
||||
"weight": 388,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14045,7 +14047,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createPush",
|
||||
"weight": 389,
|
||||
"weight": 383,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14202,7 +14204,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updatePush",
|
||||
"weight": 396,
|
||||
"weight": 390,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14361,7 +14363,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSms",
|
||||
"weight": 388,
|
||||
"weight": 382,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14472,7 +14474,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSms",
|
||||
"weight": 395,
|
||||
"weight": 389,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14586,7 +14588,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getMessage",
|
||||
"weight": 393,
|
||||
"weight": 387,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14641,7 +14643,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 397,
|
||||
"weight": 391,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14705,7 +14707,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessageLogs",
|
||||
"weight": 391,
|
||||
"weight": 385,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14782,7 +14784,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTargets",
|
||||
"weight": 392,
|
||||
"weight": 386,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14859,7 +14861,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviders",
|
||||
"weight": 362,
|
||||
"weight": 356,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14937,7 +14939,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createApnsProvider",
|
||||
"weight": 361,
|
||||
"weight": 355,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15044,7 +15046,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateApnsProvider",
|
||||
"weight": 374,
|
||||
"weight": 368,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15154,7 +15156,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFcmProvider",
|
||||
"weight": 360,
|
||||
"weight": 354,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15241,7 +15243,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateFcmProvider",
|
||||
"weight": 373,
|
||||
"weight": 367,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15331,7 +15333,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMailgunProvider",
|
||||
"weight": 352,
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15448,7 +15450,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMailgunProvider",
|
||||
"weight": 365,
|
||||
"weight": 359,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15568,7 +15570,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMsg91Provider",
|
||||
"weight": 355,
|
||||
"weight": 349,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15665,7 +15667,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMsg91Provider",
|
||||
"weight": 368,
|
||||
"weight": 362,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15765,7 +15767,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSendgridProvider",
|
||||
"weight": 353,
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15872,7 +15874,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSendgridProvider",
|
||||
"weight": 366,
|
||||
"weight": 360,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15982,7 +15984,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSmtpProvider",
|
||||
"weight": 354,
|
||||
"weight": 348,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16127,7 +16129,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSmtpProvider",
|
||||
"weight": 367,
|
||||
"weight": 361,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16274,7 +16276,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTelesignProvider",
|
||||
"weight": 356,
|
||||
"weight": 350,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16371,7 +16373,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTelesignProvider",
|
||||
"weight": 369,
|
||||
"weight": 363,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16471,7 +16473,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTextmagicProvider",
|
||||
"weight": 357,
|
||||
"weight": 351,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16568,7 +16570,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTextmagicProvider",
|
||||
"weight": 370,
|
||||
"weight": 364,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16668,7 +16670,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTwilioProvider",
|
||||
"weight": 358,
|
||||
"weight": 352,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16765,7 +16767,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTwilioProvider",
|
||||
"weight": 371,
|
||||
"weight": 365,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16865,7 +16867,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createVonageProvider",
|
||||
"weight": 359,
|
||||
"weight": 353,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16962,7 +16964,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateVonageProvider",
|
||||
"weight": 372,
|
||||
"weight": 366,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17062,7 +17064,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getProvider",
|
||||
"weight": 364,
|
||||
"weight": 358,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17117,7 +17119,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteProvider",
|
||||
"weight": 375,
|
||||
"weight": 369,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17181,7 +17183,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviderLogs",
|
||||
"weight": 363,
|
||||
"weight": 357,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17258,7 +17260,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscriberLogs",
|
||||
"weight": 384,
|
||||
"weight": 378,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17335,7 +17337,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopics",
|
||||
"weight": 377,
|
||||
"weight": 371,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17411,7 +17413,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTopic",
|
||||
"weight": 376,
|
||||
"weight": 370,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17496,7 +17498,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getTopic",
|
||||
"weight": 379,
|
||||
"weight": 373,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17558,7 +17560,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTopic",
|
||||
"weight": 380,
|
||||
"weight": 374,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17637,7 +17639,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteTopic",
|
||||
"weight": 381,
|
||||
"weight": 375,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17701,7 +17703,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopicLogs",
|
||||
"weight": 378,
|
||||
"weight": 372,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17778,7 +17780,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscribers",
|
||||
"weight": 383,
|
||||
"weight": 377,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17864,7 +17866,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17956,7 +17958,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSubscriber",
|
||||
"weight": 385,
|
||||
"weight": 379,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18021,7 +18023,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18098,7 +18100,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"weight": 339,
|
||||
"weight": 338,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18264,7 +18266,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getAppwriteReport",
|
||||
"weight": 341,
|
||||
"weight": 340,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18339,7 +18341,7 @@
|
|||
},
|
||||
"\/migrations\/firebase": {
|
||||
"post": {
|
||||
"summary": "Migrate Firebase data (Service Account)",
|
||||
"summary": "Migrate Firebase data",
|
||||
"operationId": "migrationsCreateFirebaseMigration",
|
||||
"tags": [
|
||||
"migrations"
|
||||
|
|
@ -18359,7 +18361,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFirebaseMigration",
|
||||
"weight": 336,
|
||||
"weight": 335,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18415,177 +18417,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/deauthorize": {
|
||||
"get": {
|
||||
"summary": "Revoke Appwrite's authorization to access Firebase projects",
|
||||
"operationId": "migrationsDeleteFirebaseAuth",
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "File"
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteFirebaseAuth",
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/delete-firebase-auth.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/oauth": {
|
||||
"post": {
|
||||
"summary": "Migrate Firebase data (OAuth)",
|
||||
"operationId": "migrationsCreateFirebaseOAuthMigration",
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"202": {
|
||||
"description": "Migration",
|
||||
"content": {
|
||||
"application\/json": {
|
||||
"schema": {
|
||||
"$ref": "#\/components\/schemas\/migration"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFirebaseOAuthMigration",
|
||||
"weight": 335,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/create-firebase-o-auth-migration.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application\/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"resources": {
|
||||
"type": "array",
|
||||
"description": "List of resources to migrate",
|
||||
"x-example": null,
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"projectId": {
|
||||
"type": "string",
|
||||
"description": "Project ID of the Firebase Project",
|
||||
"x-example": "<PROJECT_ID>"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resources",
|
||||
"projectId"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/projects": {
|
||||
"get": {
|
||||
"summary": "List Firebase projects",
|
||||
"operationId": "migrationsListFirebaseProjects",
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Migrations Firebase Projects List",
|
||||
"content": {
|
||||
"application\/json": {
|
||||
"schema": {
|
||||
"$ref": "#\/components\/schemas\/firebaseProjectList"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "listFirebaseProjects",
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/list-firebase-projects.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.read",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/report": {
|
||||
"get": {
|
||||
"summary": "Generate a report on Firebase data",
|
||||
|
|
@ -18608,7 +18439,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getFirebaseReport",
|
||||
"weight": 342,
|
||||
"weight": 341,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18660,80 +18491,6 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/report\/oauth": {
|
||||
"get": {
|
||||
"summary": "Generate a report on Firebase data using OAuth",
|
||||
"operationId": "migrationsGetFirebaseReportOAuth",
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Migration Report",
|
||||
"content": {
|
||||
"application\/json": {
|
||||
"schema": {
|
||||
"$ref": "#\/components\/schemas\/migrationReport"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "getFirebaseReportOAuth",
|
||||
"weight": 343,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/get-firebase-report-o-auth.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "resources",
|
||||
"description": "List of resources to migrate",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"name": "projectId",
|
||||
"description": "Project ID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"x-example": "<PROJECT_ID>"
|
||||
},
|
||||
"in": "query"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/nhost": {
|
||||
"post": {
|
||||
"summary": "Migrate NHost data",
|
||||
|
|
@ -18756,7 +18513,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createNHostMigration",
|
||||
"weight": 338,
|
||||
"weight": 337,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18869,7 +18626,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getNHostReport",
|
||||
"weight": 349,
|
||||
"weight": 343,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19004,7 +18761,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSupabaseMigration",
|
||||
"weight": 337,
|
||||
"weight": 336,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19111,7 +18868,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSupabaseReport",
|
||||
"weight": 348,
|
||||
"weight": 342,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19237,7 +18994,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"weight": 340,
|
||||
"weight": 339,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19297,7 +19054,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "retry",
|
||||
"weight": 350,
|
||||
"weight": 344,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19350,7 +19107,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 351,
|
||||
"weight": 345,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -32749,30 +32506,6 @@
|
|||
"migrations"
|
||||
]
|
||||
},
|
||||
"firebaseProjectList": {
|
||||
"description": "Migrations Firebase Projects List",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"total": {
|
||||
"type": "integer",
|
||||
"description": "Total number of projects documents that matched your query.",
|
||||
"x-example": 5,
|
||||
"format": "int32"
|
||||
},
|
||||
"projects": {
|
||||
"type": "array",
|
||||
"description": "List of projects.",
|
||||
"items": {
|
||||
"$ref": "#\/components\/schemas\/firebaseProject"
|
||||
},
|
||||
"x-example": ""
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"total",
|
||||
"projects"
|
||||
]
|
||||
},
|
||||
"specificationList": {
|
||||
"description": "Specifications List",
|
||||
"type": "object",
|
||||
|
|
@ -35109,7 +34842,7 @@
|
|||
},
|
||||
"schedule": {
|
||||
"type": "string",
|
||||
"description": "Function execution schedult in CRON format.",
|
||||
"description": "Function execution schedule in CRON format.",
|
||||
"x-example": "5 4 * * *"
|
||||
},
|
||||
"timeout": {
|
||||
|
|
@ -36976,7 +36709,8 @@
|
|||
"resourceId": {
|
||||
"type": "string",
|
||||
"description": "Resource ID.",
|
||||
"x-example": "5e5ea5c16897e"
|
||||
"x-example": "5e5ea5c16897e",
|
||||
"nullable": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
|
|
@ -36988,10 +36722,16 @@
|
|||
"description": "The value of this metric at the timestamp.",
|
||||
"x-example": 1,
|
||||
"format": "int32"
|
||||
},
|
||||
"estimate": {
|
||||
"type": "number",
|
||||
"description": "The estimated value of this metric at the end of the period.",
|
||||
"x-example": 1,
|
||||
"format": "double",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resourceId",
|
||||
"name",
|
||||
"value"
|
||||
]
|
||||
|
|
@ -37807,6 +37547,26 @@
|
|||
"$ref": "#\/components\/schemas\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
},
|
||||
"authPhoneTotal": {
|
||||
"type": "integer",
|
||||
"description": "Total aggregated number of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "int32"
|
||||
},
|
||||
"authPhoneEstimate": {
|
||||
"type": "number",
|
||||
"description": "Estimated total aggregated cost of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "double"
|
||||
},
|
||||
"authPhoneCountryBreakdown": {
|
||||
"type": "array",
|
||||
"description": "Aggregated breakdown in totals of phone auth by country.",
|
||||
"items": {
|
||||
"$ref": "#\/components\/schemas\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
|
@ -37831,7 +37591,10 @@
|
|||
"databasesStorageBreakdown",
|
||||
"executionsMbSecondsBreakdown",
|
||||
"buildsMbSecondsBreakdown",
|
||||
"functionsStorageBreakdown"
|
||||
"functionsStorageBreakdown",
|
||||
"authPhoneTotal",
|
||||
"authPhoneEstimate",
|
||||
"authPhoneCountryBreakdown"
|
||||
]
|
||||
},
|
||||
"headers": {
|
||||
|
|
@ -38707,26 +38470,6 @@
|
|||
"size",
|
||||
"version"
|
||||
]
|
||||
},
|
||||
"firebaseProject": {
|
||||
"description": "MigrationFirebaseProject",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"projectId": {
|
||||
"type": "string",
|
||||
"description": "Project ID.",
|
||||
"x-example": "my-project"
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"description": "Project display name.",
|
||||
"x-example": "My Project"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"projectId",
|
||||
"displayName"
|
||||
]
|
||||
}
|
||||
},
|
||||
"securitySchemes": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2451,7 +2451,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -8596,7 +8596,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -9019,7 +9020,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -12527,7 +12529,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessages",
|
||||
"weight": 390,
|
||||
"weight": 384,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -12606,7 +12608,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createEmail",
|
||||
"weight": 387,
|
||||
"weight": 381,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -12753,7 +12755,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateEmail",
|
||||
"weight": 394,
|
||||
"weight": 388,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -12902,7 +12904,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createPush",
|
||||
"weight": 389,
|
||||
"weight": 383,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13060,7 +13062,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updatePush",
|
||||
"weight": 396,
|
||||
"weight": 390,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13220,7 +13222,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSms",
|
||||
"weight": 388,
|
||||
"weight": 382,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13332,7 +13334,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSms",
|
||||
"weight": 395,
|
||||
"weight": 389,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13447,7 +13449,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getMessage",
|
||||
"weight": 393,
|
||||
"weight": 387,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13503,7 +13505,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 397,
|
||||
"weight": 391,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13568,7 +13570,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessageLogs",
|
||||
"weight": 391,
|
||||
"weight": 385,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13646,7 +13648,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTargets",
|
||||
"weight": 392,
|
||||
"weight": 386,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13724,7 +13726,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviders",
|
||||
"weight": 362,
|
||||
"weight": 356,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13803,7 +13805,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createApnsProvider",
|
||||
"weight": 361,
|
||||
"weight": 355,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13911,7 +13913,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateApnsProvider",
|
||||
"weight": 374,
|
||||
"weight": 368,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14022,7 +14024,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFcmProvider",
|
||||
"weight": 360,
|
||||
"weight": 354,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14110,7 +14112,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateFcmProvider",
|
||||
"weight": 373,
|
||||
"weight": 367,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14201,7 +14203,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMailgunProvider",
|
||||
"weight": 352,
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14319,7 +14321,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMailgunProvider",
|
||||
"weight": 365,
|
||||
"weight": 359,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14440,7 +14442,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMsg91Provider",
|
||||
"weight": 355,
|
||||
"weight": 349,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14538,7 +14540,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMsg91Provider",
|
||||
"weight": 368,
|
||||
"weight": 362,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14639,7 +14641,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSendgridProvider",
|
||||
"weight": 353,
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14747,7 +14749,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSendgridProvider",
|
||||
"weight": 366,
|
||||
"weight": 360,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14858,7 +14860,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSmtpProvider",
|
||||
"weight": 354,
|
||||
"weight": 348,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15004,7 +15006,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSmtpProvider",
|
||||
"weight": 367,
|
||||
"weight": 361,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15152,7 +15154,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTelesignProvider",
|
||||
"weight": 356,
|
||||
"weight": 350,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15250,7 +15252,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTelesignProvider",
|
||||
"weight": 369,
|
||||
"weight": 363,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15351,7 +15353,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTextmagicProvider",
|
||||
"weight": 357,
|
||||
"weight": 351,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15449,7 +15451,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTextmagicProvider",
|
||||
"weight": 370,
|
||||
"weight": 364,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15550,7 +15552,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTwilioProvider",
|
||||
"weight": 358,
|
||||
"weight": 352,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15648,7 +15650,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTwilioProvider",
|
||||
"weight": 371,
|
||||
"weight": 365,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15749,7 +15751,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createVonageProvider",
|
||||
"weight": 359,
|
||||
"weight": 353,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15847,7 +15849,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateVonageProvider",
|
||||
"weight": 372,
|
||||
"weight": 366,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15948,7 +15950,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getProvider",
|
||||
"weight": 364,
|
||||
"weight": 358,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16004,7 +16006,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteProvider",
|
||||
"weight": 375,
|
||||
"weight": 369,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16069,7 +16071,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviderLogs",
|
||||
"weight": 363,
|
||||
"weight": 357,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16147,7 +16149,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscriberLogs",
|
||||
"weight": 384,
|
||||
"weight": 378,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16225,7 +16227,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopics",
|
||||
"weight": 377,
|
||||
"weight": 371,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16302,7 +16304,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTopic",
|
||||
"weight": 376,
|
||||
"weight": 370,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16388,7 +16390,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getTopic",
|
||||
"weight": 379,
|
||||
"weight": 373,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16451,7 +16453,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTopic",
|
||||
"weight": 380,
|
||||
"weight": 374,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16531,7 +16533,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteTopic",
|
||||
"weight": 381,
|
||||
"weight": 375,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16596,7 +16598,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopicLogs",
|
||||
"weight": 378,
|
||||
"weight": 372,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16674,7 +16676,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscribers",
|
||||
"weight": 383,
|
||||
"weight": 377,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16761,7 +16763,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16855,7 +16857,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSubscriber",
|
||||
"weight": 385,
|
||||
"weight": 379,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16921,7 +16923,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -25746,7 +25748,7 @@
|
|||
},
|
||||
"schedule": {
|
||||
"type": "string",
|
||||
"description": "Function execution schedult in CRON format.",
|
||||
"description": "Function execution schedule in CRON format.",
|
||||
"x-example": "5 4 * * *"
|
||||
},
|
||||
"timeout": {
|
||||
|
|
|
|||
|
|
@ -36709,7 +36709,8 @@
|
|||
"resourceId": {
|
||||
"type": "string",
|
||||
"description": "Resource ID.",
|
||||
"x-example": "5e5ea5c16897e"
|
||||
"x-example": "5e5ea5c16897e",
|
||||
"nullable": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
|
|
@ -36721,10 +36722,16 @@
|
|||
"description": "The value of this metric at the timestamp.",
|
||||
"x-example": 1,
|
||||
"format": "int32"
|
||||
},
|
||||
"estimate": {
|
||||
"type": "number",
|
||||
"description": "The estimated value of this metric at the end of the period.",
|
||||
"x-example": 1,
|
||||
"format": "double",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resourceId",
|
||||
"name",
|
||||
"value"
|
||||
]
|
||||
|
|
@ -37540,6 +37547,26 @@
|
|||
"$ref": "#\/components\/schemas\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
},
|
||||
"authPhoneTotal": {
|
||||
"type": "integer",
|
||||
"description": "Total aggregated number of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "int32"
|
||||
},
|
||||
"authPhoneEstimate": {
|
||||
"type": "number",
|
||||
"description": "Estimated total aggregated cost of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "double"
|
||||
},
|
||||
"authPhoneCountryBreakdown": {
|
||||
"type": "array",
|
||||
"description": "Aggregated breakdown in totals of phone auth by country.",
|
||||
"items": {
|
||||
"$ref": "#\/components\/schemas\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
|
@ -37564,7 +37591,10 @@
|
|||
"databasesStorageBreakdown",
|
||||
"executionsMbSecondsBreakdown",
|
||||
"buildsMbSecondsBreakdown",
|
||||
"functionsStorageBreakdown"
|
||||
"functionsStorageBreakdown",
|
||||
"authPhoneTotal",
|
||||
"authPhoneEstimate",
|
||||
"authPhoneCountryBreakdown"
|
||||
]
|
||||
},
|
||||
"headers": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2922,7 +2922,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -5981,7 +5981,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -6070,7 +6070,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2949,7 +2949,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -9610,7 +9610,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -10286,7 +10287,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -13890,7 +13892,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessages",
|
||||
"weight": 390,
|
||||
"weight": 384,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13967,7 +13969,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createEmail",
|
||||
"weight": 387,
|
||||
"weight": 381,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14127,7 +14129,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateEmail",
|
||||
"weight": 394,
|
||||
"weight": 388,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14284,7 +14286,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createPush",
|
||||
"weight": 389,
|
||||
"weight": 383,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14459,7 +14461,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updatePush",
|
||||
"weight": 396,
|
||||
"weight": 390,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14631,7 +14633,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSms",
|
||||
"weight": 388,
|
||||
"weight": 382,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14751,7 +14753,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSms",
|
||||
"weight": 395,
|
||||
"weight": 389,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14869,7 +14871,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getMessage",
|
||||
"weight": 393,
|
||||
"weight": 387,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14928,7 +14930,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 397,
|
||||
"weight": 391,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14992,7 +14994,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessageLogs",
|
||||
"weight": 391,
|
||||
"weight": 385,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15068,7 +15070,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTargets",
|
||||
"weight": 392,
|
||||
"weight": 386,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15144,7 +15146,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviders",
|
||||
"weight": 362,
|
||||
"weight": 356,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15221,7 +15223,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createApnsProvider",
|
||||
"weight": 361,
|
||||
"weight": 355,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15338,7 +15340,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateApnsProvider",
|
||||
"weight": 374,
|
||||
"weight": 368,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15453,7 +15455,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFcmProvider",
|
||||
"weight": 360,
|
||||
"weight": 354,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15546,7 +15548,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateFcmProvider",
|
||||
"weight": 373,
|
||||
"weight": 367,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15637,7 +15639,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMailgunProvider",
|
||||
"weight": 352,
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15766,7 +15768,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMailgunProvider",
|
||||
"weight": 365,
|
||||
"weight": 359,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15893,7 +15895,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMsg91Provider",
|
||||
"weight": 355,
|
||||
"weight": 349,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15998,7 +16000,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMsg91Provider",
|
||||
"weight": 368,
|
||||
"weight": 362,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16101,7 +16103,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSendgridProvider",
|
||||
"weight": 353,
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16218,7 +16220,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSendgridProvider",
|
||||
"weight": 366,
|
||||
"weight": 360,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16333,7 +16335,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSmtpProvider",
|
||||
"weight": 354,
|
||||
"weight": 348,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16494,7 +16496,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSmtpProvider",
|
||||
"weight": 367,
|
||||
"weight": 361,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16652,7 +16654,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTelesignProvider",
|
||||
"weight": 356,
|
||||
"weight": 350,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16757,7 +16759,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTelesignProvider",
|
||||
"weight": 369,
|
||||
"weight": 363,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16860,7 +16862,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTextmagicProvider",
|
||||
"weight": 357,
|
||||
"weight": 351,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16965,7 +16967,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTextmagicProvider",
|
||||
"weight": 370,
|
||||
"weight": 364,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17068,7 +17070,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTwilioProvider",
|
||||
"weight": 358,
|
||||
"weight": 352,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17173,7 +17175,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTwilioProvider",
|
||||
"weight": 371,
|
||||
"weight": 365,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17276,7 +17278,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createVonageProvider",
|
||||
"weight": 359,
|
||||
"weight": 353,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17381,7 +17383,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateVonageProvider",
|
||||
"weight": 372,
|
||||
"weight": 366,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17484,7 +17486,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getProvider",
|
||||
"weight": 364,
|
||||
"weight": 358,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17543,7 +17545,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteProvider",
|
||||
"weight": 375,
|
||||
"weight": 369,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17607,7 +17609,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviderLogs",
|
||||
"weight": 363,
|
||||
"weight": 357,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17683,7 +17685,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscriberLogs",
|
||||
"weight": 384,
|
||||
"weight": 378,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17759,7 +17761,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopics",
|
||||
"weight": 377,
|
||||
"weight": 371,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17834,7 +17836,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTopic",
|
||||
"weight": 376,
|
||||
"weight": 370,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17926,7 +17928,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getTopic",
|
||||
"weight": 379,
|
||||
"weight": 373,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17988,7 +17990,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTopic",
|
||||
"weight": 380,
|
||||
"weight": 374,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18071,7 +18073,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteTopic",
|
||||
"weight": 381,
|
||||
"weight": 375,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18135,7 +18137,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopicLogs",
|
||||
"weight": 378,
|
||||
"weight": 372,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18211,7 +18213,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscribers",
|
||||
"weight": 383,
|
||||
"weight": 377,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18294,7 +18296,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18386,7 +18388,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSubscriber",
|
||||
"weight": 385,
|
||||
"weight": 379,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18453,7 +18455,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18528,7 +18530,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "list",
|
||||
"weight": 339,
|
||||
"weight": 338,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18699,7 +18701,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getAppwriteReport",
|
||||
"weight": 341,
|
||||
"weight": 340,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18767,7 +18769,7 @@
|
|||
},
|
||||
"\/migrations\/firebase": {
|
||||
"post": {
|
||||
"summary": "Migrate Firebase data (Service Account)",
|
||||
"summary": "Migrate Firebase data",
|
||||
"operationId": "migrationsCreateFirebaseMigration",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
|
|
@ -18789,7 +18791,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFirebaseMigration",
|
||||
"weight": 336,
|
||||
"weight": 335,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -18847,192 +18849,6 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/deauthorize": {
|
||||
"get": {
|
||||
"summary": "Revoke Appwrite's authorization to access Firebase projects",
|
||||
"operationId": "migrationsDeleteFirebaseAuth",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "File",
|
||||
"schema": {
|
||||
"type": "file"
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteFirebaseAuth",
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/delete-firebase-auth.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/oauth": {
|
||||
"post": {
|
||||
"summary": "Migrate Firebase data (OAuth)",
|
||||
"operationId": "migrationsCreateFirebaseOAuthMigration",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"202": {
|
||||
"description": "Migration",
|
||||
"schema": {
|
||||
"$ref": "#\/definitions\/migration"
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFirebaseOAuthMigration",
|
||||
"weight": 335,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/create-firebase-o-auth-migration.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase.md",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "payload",
|
||||
"in": "body",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"resources": {
|
||||
"type": "array",
|
||||
"description": "List of resources to migrate",
|
||||
"default": null,
|
||||
"x-example": null,
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"projectId": {
|
||||
"type": "string",
|
||||
"description": "Project ID of the Firebase Project",
|
||||
"default": null,
|
||||
"x-example": "<PROJECT_ID>"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resources",
|
||||
"projectId"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/projects": {
|
||||
"get": {
|
||||
"summary": "List Firebase projects",
|
||||
"operationId": "migrationsListFirebaseProjects",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Migrations Firebase Projects List",
|
||||
"schema": {
|
||||
"$ref": "#\/definitions\/firebaseProjectList"
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "listFirebaseProjects",
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/list-firebase-projects.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.read",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/report": {
|
||||
"get": {
|
||||
"summary": "Generate a report on Firebase data",
|
||||
|
|
@ -19057,7 +18873,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getFirebaseReport",
|
||||
"weight": 342,
|
||||
"weight": 341,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19106,79 +18922,6 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/firebase\/report\/oauth": {
|
||||
"get": {
|
||||
"summary": "Generate a report on Firebase data using OAuth",
|
||||
"operationId": "migrationsGetFirebaseReportOAuth",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
"tags": [
|
||||
"migrations"
|
||||
],
|
||||
"description": "",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Migration Report",
|
||||
"schema": {
|
||||
"$ref": "#\/definitions\/migrationReport"
|
||||
}
|
||||
}
|
||||
},
|
||||
"x-appwrite": {
|
||||
"method": "getFirebaseReportOAuth",
|
||||
"weight": 343,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
"demo": "migrations\/get-firebase-report-o-auth.md",
|
||||
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/migrations\/migration-firebase-report.md",
|
||||
"rate-limit": 0,
|
||||
"rate-time": 3600,
|
||||
"rate-key": "url:{url},ip:{ip}",
|
||||
"scope": "migrations.write",
|
||||
"platforms": [
|
||||
"console"
|
||||
],
|
||||
"packaging": false,
|
||||
"offline-model": "",
|
||||
"offline-key": "",
|
||||
"offline-response-key": "$id",
|
||||
"auth": {
|
||||
"Project": []
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"Project": []
|
||||
}
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "resources",
|
||||
"description": "List of resources to migrate",
|
||||
"required": true,
|
||||
"type": "array",
|
||||
"collectionFormat": "multi",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"name": "projectId",
|
||||
"description": "Project ID",
|
||||
"required": true,
|
||||
"type": "string",
|
||||
"x-example": "<PROJECT_ID>",
|
||||
"in": "query"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"\/migrations\/nhost": {
|
||||
"post": {
|
||||
"summary": "Migrate NHost data",
|
||||
|
|
@ -19203,7 +18946,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createNHostMigration",
|
||||
"weight": 338,
|
||||
"weight": 337,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19326,7 +19069,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getNHostReport",
|
||||
"weight": 349,
|
||||
"weight": 343,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19448,7 +19191,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSupabaseMigration",
|
||||
"weight": 337,
|
||||
"weight": 336,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19564,7 +19307,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSupabaseReport",
|
||||
"weight": 348,
|
||||
"weight": 342,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19679,7 +19422,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "get",
|
||||
"weight": 340,
|
||||
"weight": 339,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19739,7 +19482,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "retry",
|
||||
"weight": 350,
|
||||
"weight": 344,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -19794,7 +19537,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 351,
|
||||
"weight": 345,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -33250,31 +32993,6 @@
|
|||
"migrations"
|
||||
]
|
||||
},
|
||||
"firebaseProjectList": {
|
||||
"description": "Migrations Firebase Projects List",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"total": {
|
||||
"type": "integer",
|
||||
"description": "Total number of projects documents that matched your query.",
|
||||
"x-example": 5,
|
||||
"format": "int32"
|
||||
},
|
||||
"projects": {
|
||||
"type": "array",
|
||||
"description": "List of projects.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"$ref": "#\/definitions\/firebaseProject"
|
||||
},
|
||||
"x-example": ""
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"total",
|
||||
"projects"
|
||||
]
|
||||
},
|
||||
"specificationList": {
|
||||
"description": "Specifications List",
|
||||
"type": "object",
|
||||
|
|
@ -35618,7 +35336,7 @@
|
|||
},
|
||||
"schedule": {
|
||||
"type": "string",
|
||||
"description": "Function execution schedult in CRON format.",
|
||||
"description": "Function execution schedule in CRON format.",
|
||||
"x-example": "5 4 * * *"
|
||||
},
|
||||
"timeout": {
|
||||
|
|
@ -37494,7 +37212,8 @@
|
|||
"resourceId": {
|
||||
"type": "string",
|
||||
"description": "Resource ID.",
|
||||
"x-example": "5e5ea5c16897e"
|
||||
"x-example": "5e5ea5c16897e",
|
||||
"x-nullable": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
|
|
@ -37506,10 +37225,16 @@
|
|||
"description": "The value of this metric at the timestamp.",
|
||||
"x-example": 1,
|
||||
"format": "int32"
|
||||
},
|
||||
"estimate": {
|
||||
"type": "number",
|
||||
"description": "The estimated value of this metric at the end of the period.",
|
||||
"x-example": 1,
|
||||
"format": "double",
|
||||
"x-nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resourceId",
|
||||
"name",
|
||||
"value"
|
||||
]
|
||||
|
|
@ -38369,6 +38094,27 @@
|
|||
"$ref": "#\/definitions\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
},
|
||||
"authPhoneTotal": {
|
||||
"type": "integer",
|
||||
"description": "Total aggregated number of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "int32"
|
||||
},
|
||||
"authPhoneEstimate": {
|
||||
"type": "number",
|
||||
"description": "Estimated total aggregated cost of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "double"
|
||||
},
|
||||
"authPhoneCountryBreakdown": {
|
||||
"type": "array",
|
||||
"description": "Aggregated breakdown in totals of phone auth by country.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"$ref": "#\/definitions\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
|
@ -38393,7 +38139,10 @@
|
|||
"databasesStorageBreakdown",
|
||||
"executionsMbSecondsBreakdown",
|
||||
"buildsMbSecondsBreakdown",
|
||||
"functionsStorageBreakdown"
|
||||
"functionsStorageBreakdown",
|
||||
"authPhoneTotal",
|
||||
"authPhoneEstimate",
|
||||
"authPhoneCountryBreakdown"
|
||||
]
|
||||
},
|
||||
"headers": {
|
||||
|
|
@ -39274,26 +39023,6 @@
|
|||
"size",
|
||||
"version"
|
||||
]
|
||||
},
|
||||
"firebaseProject": {
|
||||
"description": "MigrationFirebaseProject",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"projectId": {
|
||||
"type": "string",
|
||||
"description": "Project ID.",
|
||||
"x-example": "my-project"
|
||||
},
|
||||
"displayName": {
|
||||
"type": "string",
|
||||
"description": "Project display name.",
|
||||
"x-example": "My Project"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"projectId",
|
||||
"displayName"
|
||||
]
|
||||
}
|
||||
},
|
||||
"externalDocs": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.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",
|
||||
|
|
@ -2604,7 +2604,7 @@
|
|||
"tags": [
|
||||
"account"
|
||||
],
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST \/v1\/account\/sessions\/token](https:\/\/appwrite.io\/docs\/references\/cloud\/client-web\/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https:\/\/appwrite.io\/docs\/authentication-security#limits).\n",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Token",
|
||||
|
|
@ -8720,7 +8720,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -9166,7 +9167,8 @@
|
|||
"bun-1.0",
|
||||
"bun-1.1",
|
||||
"go-1.23",
|
||||
"static-1"
|
||||
"static-1",
|
||||
"flutter-3.24"
|
||||
],
|
||||
"x-enum-name": null,
|
||||
"x-enum-keys": []
|
||||
|
|
@ -12752,7 +12754,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessages",
|
||||
"weight": 390,
|
||||
"weight": 384,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -12830,7 +12832,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createEmail",
|
||||
"weight": 387,
|
||||
"weight": 381,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -12991,7 +12993,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateEmail",
|
||||
"weight": 394,
|
||||
"weight": 388,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13149,7 +13151,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createPush",
|
||||
"weight": 389,
|
||||
"weight": 383,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13325,7 +13327,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updatePush",
|
||||
"weight": 396,
|
||||
"weight": 390,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13498,7 +13500,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSms",
|
||||
"weight": 388,
|
||||
"weight": 382,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13619,7 +13621,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSms",
|
||||
"weight": 395,
|
||||
"weight": 389,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13738,7 +13740,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getMessage",
|
||||
"weight": 393,
|
||||
"weight": 387,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13798,7 +13800,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "delete",
|
||||
"weight": 397,
|
||||
"weight": 391,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13863,7 +13865,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listMessageLogs",
|
||||
"weight": 391,
|
||||
"weight": 385,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -13940,7 +13942,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTargets",
|
||||
"weight": 392,
|
||||
"weight": 386,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14017,7 +14019,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviders",
|
||||
"weight": 362,
|
||||
"weight": 356,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14095,7 +14097,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createApnsProvider",
|
||||
"weight": 361,
|
||||
"weight": 355,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14213,7 +14215,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateApnsProvider",
|
||||
"weight": 374,
|
||||
"weight": 368,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14329,7 +14331,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createFcmProvider",
|
||||
"weight": 360,
|
||||
"weight": 354,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14423,7 +14425,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateFcmProvider",
|
||||
"weight": 373,
|
||||
"weight": 367,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14515,7 +14517,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMailgunProvider",
|
||||
"weight": 352,
|
||||
"weight": 346,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14645,7 +14647,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMailgunProvider",
|
||||
"weight": 365,
|
||||
"weight": 359,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14773,7 +14775,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createMsg91Provider",
|
||||
"weight": 355,
|
||||
"weight": 349,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14879,7 +14881,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateMsg91Provider",
|
||||
"weight": 368,
|
||||
"weight": 362,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -14983,7 +14985,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSendgridProvider",
|
||||
"weight": 353,
|
||||
"weight": 347,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15101,7 +15103,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSendgridProvider",
|
||||
"weight": 366,
|
||||
"weight": 360,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15217,7 +15219,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSmtpProvider",
|
||||
"weight": 354,
|
||||
"weight": 348,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15379,7 +15381,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateSmtpProvider",
|
||||
"weight": 367,
|
||||
"weight": 361,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15538,7 +15540,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTelesignProvider",
|
||||
"weight": 356,
|
||||
"weight": 350,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15644,7 +15646,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTelesignProvider",
|
||||
"weight": 369,
|
||||
"weight": 363,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15748,7 +15750,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTextmagicProvider",
|
||||
"weight": 357,
|
||||
"weight": 351,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15854,7 +15856,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTextmagicProvider",
|
||||
"weight": 370,
|
||||
"weight": 364,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -15958,7 +15960,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTwilioProvider",
|
||||
"weight": 358,
|
||||
"weight": 352,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16064,7 +16066,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTwilioProvider",
|
||||
"weight": 371,
|
||||
"weight": 365,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16168,7 +16170,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createVonageProvider",
|
||||
"weight": 359,
|
||||
"weight": 353,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16274,7 +16276,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateVonageProvider",
|
||||
"weight": 372,
|
||||
"weight": 366,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16378,7 +16380,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getProvider",
|
||||
"weight": 364,
|
||||
"weight": 358,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16438,7 +16440,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteProvider",
|
||||
"weight": 375,
|
||||
"weight": 369,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16503,7 +16505,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listProviderLogs",
|
||||
"weight": 363,
|
||||
"weight": 357,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16580,7 +16582,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscriberLogs",
|
||||
"weight": 384,
|
||||
"weight": 378,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16657,7 +16659,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopics",
|
||||
"weight": 377,
|
||||
"weight": 371,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16733,7 +16735,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createTopic",
|
||||
"weight": 376,
|
||||
"weight": 370,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16826,7 +16828,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getTopic",
|
||||
"weight": 379,
|
||||
"weight": 373,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16889,7 +16891,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "updateTopic",
|
||||
"weight": 380,
|
||||
"weight": 374,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -16973,7 +16975,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteTopic",
|
||||
"weight": 381,
|
||||
"weight": 375,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17038,7 +17040,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listTopicLogs",
|
||||
"weight": 378,
|
||||
"weight": 372,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17115,7 +17117,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "listSubscribers",
|
||||
"weight": 383,
|
||||
"weight": 377,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17199,7 +17201,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "createSubscriber",
|
||||
"weight": 382,
|
||||
"weight": 376,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17293,7 +17295,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "getSubscriber",
|
||||
"weight": 385,
|
||||
"weight": 379,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -17361,7 +17363,7 @@
|
|||
},
|
||||
"x-appwrite": {
|
||||
"method": "deleteSubscriber",
|
||||
"weight": 386,
|
||||
"weight": 380,
|
||||
"cookies": false,
|
||||
"type": "",
|
||||
"deprecated": false,
|
||||
|
|
@ -26233,7 +26235,7 @@
|
|||
},
|
||||
"schedule": {
|
||||
"type": "string",
|
||||
"description": "Function execution schedult in CRON format.",
|
||||
"description": "Function execution schedule in CRON format.",
|
||||
"x-example": "5 4 * * *"
|
||||
},
|
||||
"timeout": {
|
||||
|
|
|
|||
|
|
@ -37212,7 +37212,8 @@
|
|||
"resourceId": {
|
||||
"type": "string",
|
||||
"description": "Resource ID.",
|
||||
"x-example": "5e5ea5c16897e"
|
||||
"x-example": "5e5ea5c16897e",
|
||||
"x-nullable": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
|
|
@ -37224,10 +37225,16 @@
|
|||
"description": "The value of this metric at the timestamp.",
|
||||
"x-example": 1,
|
||||
"format": "int32"
|
||||
},
|
||||
"estimate": {
|
||||
"type": "number",
|
||||
"description": "The estimated value of this metric at the end of the period.",
|
||||
"x-example": 1,
|
||||
"format": "double",
|
||||
"x-nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"resourceId",
|
||||
"name",
|
||||
"value"
|
||||
]
|
||||
|
|
@ -38087,6 +38094,27 @@
|
|||
"$ref": "#\/definitions\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
},
|
||||
"authPhoneTotal": {
|
||||
"type": "integer",
|
||||
"description": "Total aggregated number of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "int32"
|
||||
},
|
||||
"authPhoneEstimate": {
|
||||
"type": "number",
|
||||
"description": "Estimated total aggregated cost of phone auth.",
|
||||
"x-example": 0,
|
||||
"format": "double"
|
||||
},
|
||||
"authPhoneCountryBreakdown": {
|
||||
"type": "array",
|
||||
"description": "Aggregated breakdown in totals of phone auth by country.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"$ref": "#\/definitions\/metricBreakdown"
|
||||
},
|
||||
"x-example": []
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
|
@ -38111,7 +38139,10 @@
|
|||
"databasesStorageBreakdown",
|
||||
"executionsMbSecondsBreakdown",
|
||||
"buildsMbSecondsBreakdown",
|
||||
"functionsStorageBreakdown"
|
||||
"functionsStorageBreakdown",
|
||||
"authPhoneTotal",
|
||||
"authPhoneEstimate",
|
||||
"authPhoneCountryBreakdown"
|
||||
]
|
||||
},
|
||||
"headers": {
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ App::post('/v1/account')
|
|||
->desc('Create account')
|
||||
->groups(['api', 'account', 'auth'])
|
||||
->label('scope', 'sessions.write')
|
||||
->label('auth.type', 'emailPassword')
|
||||
->label('auth.type', 'email-password')
|
||||
->label('audits.event', 'user.create')
|
||||
->label('audits.resource', 'user/{response.$id}')
|
||||
->label('audits.userId', '{response.$id}')
|
||||
|
|
@ -799,7 +799,7 @@ App::post('/v1/account/sessions/email')
|
|||
->groups(['api', 'account', 'auth', 'session'])
|
||||
->label('event', 'users.[userId].sessions.[sessionId].create')
|
||||
->label('scope', 'sessions.write')
|
||||
->label('auth.type', 'emailPassword')
|
||||
->label('auth.type', 'email-password')
|
||||
->label('audits.event', 'session.create')
|
||||
->label('audits.resource', 'user/{response.userId}')
|
||||
->label('audits.userId', '{response.userId}')
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@ App::get('/v1/project/usage')
|
|||
->param('period', '1d', new WhiteList(['1h', '1d']), 'Period used', true)
|
||||
->inject('response')
|
||||
->inject('dbForProject')
|
||||
->action(function (string $startDate, string $endDate, string $period, Response $response, Database $dbForProject) {
|
||||
->inject('smsRates')
|
||||
->action(function (string $startDate, string $endDate, string $period, Response $response, Database $dbForProject, array $smsRates) {
|
||||
$stats = $total = $usage = [];
|
||||
$format = 'Y-m-d 00:00:00';
|
||||
$firstDay = (new DateTime($startDate))->format($format);
|
||||
|
|
@ -257,6 +258,46 @@ App::get('/v1/project/usage')
|
|||
];
|
||||
}, $dbForProject->find('functions'));
|
||||
|
||||
// This total is includes free and paid SMS usage
|
||||
$authPhoneTotal = Authorization::skip(fn () => $dbForProject->sum('stats', 'value', [
|
||||
Query::equal('metric', [METRIC_AUTH_METHOD_PHONE]),
|
||||
Query::equal('period', ['1d']),
|
||||
Query::greaterThanEqual('time', $firstDay),
|
||||
Query::lessThan('time', $lastDay),
|
||||
]));
|
||||
|
||||
// This estimate is only for paid SMS usage
|
||||
$authPhoneMetrics = Authorization::skip(fn () => $dbForProject->find('stats', [
|
||||
Query::startsWith('metric', METRIC_AUTH_METHOD_PHONE . '.'),
|
||||
Query::equal('period', ['1d']),
|
||||
Query::greaterThanEqual('time', $firstDay),
|
||||
Query::lessThan('time', $lastDay),
|
||||
]));
|
||||
|
||||
$authPhoneEstimate = 0.0;
|
||||
$authPhoneCountryBreakdown = [];
|
||||
foreach ($authPhoneMetrics as $metric) {
|
||||
$parts = explode('.', $metric->getAttribute('metric'));
|
||||
$countryCode = $parts[3] ?? null;
|
||||
if ($countryCode === null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = $metric->getAttribute('value', 0);
|
||||
|
||||
if (isset($smsRates[$countryCode])) {
|
||||
$authPhoneEstimate += $value * $smsRates[$countryCode];
|
||||
}
|
||||
|
||||
$authPhoneCountryBreakdown[] = [
|
||||
'name' => $countryCode,
|
||||
'value' => $value,
|
||||
'estimate' => isset($smsRates[$countryCode])
|
||||
? $value * $smsRates[$countryCode]
|
||||
: 0.0,
|
||||
];
|
||||
}
|
||||
|
||||
// merge network inbound + outbound
|
||||
$projectBandwidth = [];
|
||||
foreach ($usage[METRIC_NETWORK_INBOUND] as $item) {
|
||||
|
|
@ -303,6 +344,9 @@ App::get('/v1/project/usage')
|
|||
'executionsMbSecondsBreakdown' => $executionsMbSecondsBreakdown,
|
||||
'buildsMbSecondsBreakdown' => $buildsMbSecondsBreakdown,
|
||||
'functionsStorageBreakdown' => $functionsStorageBreakdown,
|
||||
'authPhoneTotal' => $authPhoneTotal,
|
||||
'authPhoneEstimate' => $authPhoneEstimate,
|
||||
'authPhoneCountryBreakdown' => $authPhoneCountryBreakdown,
|
||||
]), Response::MODEL_USAGE_PROJECT);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ App::post('/v1/projects')
|
|||
->desc('Create project')
|
||||
->groups(['api', 'projects'])
|
||||
->label('audits.event', 'projects.create')
|
||||
->label('audits.resource', 'project/{response.$id}')
|
||||
->label('scope', 'projects.write')
|
||||
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
|
||||
->label('sdk.namespace', 'projects')
|
||||
|
|
@ -367,6 +368,8 @@ App::patch('/v1/projects/:projectId')
|
|||
->desc('Update project')
|
||||
->groups(['api', 'projects'])
|
||||
->label('scope', 'projects.write')
|
||||
->label('audits.event', 'projects.update')
|
||||
->label('audits.resource', 'project/{request.projectId}')
|
||||
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
|
||||
->label('sdk.namespace', 'projects')
|
||||
->label('sdk.method', 'update')
|
||||
|
|
@ -981,6 +984,7 @@ App::delete('/v1/projects/:projectId')
|
|||
->desc('Delete project')
|
||||
->groups(['api', 'projects'])
|
||||
->label('audits.event', 'projects.delete')
|
||||
->label('audits.resource', 'project/{request.projectId}')
|
||||
->label('scope', 'projects.write')
|
||||
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
|
||||
->label('sdk.namespace', 'projects')
|
||||
|
|
@ -1514,6 +1518,7 @@ App::post('/v1/projects/:projectId/platforms')
|
|||
->desc('Create platform')
|
||||
->groups(['api', 'projects'])
|
||||
->label('audits.event', 'platforms.create')
|
||||
->label('audits.resource', 'project/{request.projectId}')
|
||||
->label('scope', 'platforms.write')
|
||||
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
|
||||
->label('sdk.namespace', 'projects')
|
||||
|
|
@ -1678,6 +1683,7 @@ App::delete('/v1/projects/:projectId/platforms/:platformId')
|
|||
->desc('Delete platform')
|
||||
->groups(['api', 'projects'])
|
||||
->label('audits.event', 'platforms.delete')
|
||||
->label('audits.resource', 'project/{request.projectId}/platform/${request.platformId}')
|
||||
->label('scope', 'platforms.write')
|
||||
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
|
||||
->label('sdk.namespace', 'projects')
|
||||
|
|
|
|||
|
|
@ -1814,6 +1814,12 @@ App::post('/v1/users/:userId/sessions')
|
|||
$detector->getDevice()
|
||||
));
|
||||
|
||||
$session->setAttribute('$permissions', [
|
||||
Permission::read(Role::user($user->getId())),
|
||||
Permission::update(Role::user($user->getId())),
|
||||
Permission::delete(Role::user($user->getId())),
|
||||
]);
|
||||
|
||||
$countryName = $locale->getText('countries.' . strtolower($session->getAttribute('countryCode')), $locale->getText('locale.country.unknown'));
|
||||
|
||||
$session = $dbForProject->createDocument('sessions', $session);
|
||||
|
|
|
|||
|
|
@ -355,53 +355,6 @@ App::get('/v1/vcs/github/callback')
|
|||
throw new Exception(Exception::PROJECT_NOT_FOUND, $error);
|
||||
}
|
||||
|
||||
$personalSlug = '';
|
||||
|
||||
// OAuth Authroization
|
||||
if (!empty($code)) {
|
||||
$oauth2 = new OAuth2Github(System::getEnv('_APP_VCS_GITHUB_CLIENT_ID', ''), System::getEnv('_APP_VCS_GITHUB_CLIENT_SECRET', ''), "");
|
||||
$accessToken = $oauth2->getAccessToken($code) ?? '';
|
||||
$refreshToken = $oauth2->getRefreshToken($code) ?? '';
|
||||
$accessTokenExpiry = $oauth2->getAccessTokenExpiry($code) ?? '';
|
||||
$personalSlug = $oauth2->getUserSlug($accessToken) ?? '';
|
||||
$email = $oauth2->getUserEmail($accessToken);
|
||||
$oauth2ID = $oauth2->getUserID($accessToken);
|
||||
|
||||
// Makes sure this email is not already used in another identity
|
||||
$identity = $dbForPlatform->findOne('identities', [
|
||||
Query::equal('providerEmail', [$email]),
|
||||
]);
|
||||
if (!$identity->isEmpty()) {
|
||||
if ($identity->getAttribute('userInternalId', '') !== $user->getInternalId()) {
|
||||
throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
$identity = $identity
|
||||
->setAttribute('providerAccessToken', $accessToken)
|
||||
->setAttribute('providerRefreshToken', $refreshToken)
|
||||
->setAttribute('providerAccessTokenExpiry', DateTime::addSeconds(new \DateTime(), (int)$accessTokenExpiry));
|
||||
|
||||
$dbForPlatform->updateDocument('identities', $identity->getId(), $identity);
|
||||
} else {
|
||||
$identity = $dbForPlatform->createDocument('identities', new Document([
|
||||
'$id' => ID::unique(),
|
||||
'$permissions' => [
|
||||
Permission::read(Role::any()),
|
||||
Permission::update(Role::user($user->getId())),
|
||||
Permission::delete(Role::user($user->getId())),
|
||||
],
|
||||
'userInternalId' => $user->getInternalId(),
|
||||
'userId' => $user->getId(),
|
||||
'provider' => 'github',
|
||||
'providerUid' => $oauth2ID,
|
||||
'providerEmail' => $email,
|
||||
'providerAccessToken' => $accessToken,
|
||||
'providerRefreshToken' => $refreshToken,
|
||||
'providerAccessTokenExpiry' => DateTime::addSeconds(new \DateTime(), (int)$accessTokenExpiry),
|
||||
]));
|
||||
}
|
||||
}
|
||||
|
||||
// Create / Update installation
|
||||
if (!empty($providerInstallationId)) {
|
||||
$privateKey = System::getEnv('_APP_VCS_GITHUB_PRIVATE_KEY');
|
||||
|
|
@ -416,6 +369,22 @@ App::get('/v1/vcs/github/callback')
|
|||
Query::equal('projectInternalId', [$projectInternalId])
|
||||
]);
|
||||
|
||||
$personal = false;
|
||||
$refreshToken = null;
|
||||
$accessToken = null;
|
||||
$accessTokenExpiry = null;
|
||||
|
||||
if (!empty($code)) {
|
||||
$oauth2 = new OAuth2Github(System::getEnv('_APP_VCS_GITHUB_CLIENT_ID', ''), System::getEnv('_APP_VCS_GITHUB_CLIENT_SECRET', ''), "");
|
||||
|
||||
$accessToken = $oauth2->getAccessToken($code) ?? '';
|
||||
$refreshToken = $oauth2->getRefreshToken($code) ?? '';
|
||||
$accessTokenExpiry = DateTime::addSeconds(new \DateTime(), \intval($oauth2->getAccessTokenExpiry($code)));
|
||||
|
||||
$personalSlug = $oauth2->getUserSlug($accessToken) ?? '';
|
||||
$personal = $personalSlug === $owner;
|
||||
}
|
||||
|
||||
if ($installation->isEmpty()) {
|
||||
$teamId = $project->getAttribute('teamId', '');
|
||||
|
||||
|
|
@ -433,14 +402,20 @@ App::get('/v1/vcs/github/callback')
|
|||
'projectInternalId' => $projectInternalId,
|
||||
'provider' => 'github',
|
||||
'organization' => $owner,
|
||||
'personal' => $personalSlug === $owner
|
||||
'personal' => $personal,
|
||||
'personalRefreshToken' => $refreshToken,
|
||||
'personalAccessToken' => $accessToken,
|
||||
'personalAccessTokenExpiry' => $accessTokenExpiry,
|
||||
]);
|
||||
|
||||
$installation = $dbForPlatform->createDocument('installations', $installation);
|
||||
} else {
|
||||
$installation = $installation
|
||||
->setAttribute('organization', $owner)
|
||||
->setAttribute('personal', $personalSlug === $owner);
|
||||
->setAttribute('personal', $personal)
|
||||
->setAttribute('personalRefreshToken', $refreshToken)
|
||||
->setAttribute('personalAccessToken', $accessToken)
|
||||
->setAttribute('personalAccessTokenExpiry', $accessTokenExpiry);
|
||||
$installation = $dbForPlatform->updateDocument('installations', $installation->getId(), $installation);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -720,17 +695,23 @@ App::post('/v1/vcs/github/installations/:installationId/providerRepositories')
|
|||
if ($installation->getAttribute('personal', false) === true) {
|
||||
$oauth2 = new OAuth2Github(System::getEnv('_APP_VCS_GITHUB_CLIENT_ID', ''), System::getEnv('_APP_VCS_GITHUB_CLIENT_SECRET', ''), "");
|
||||
|
||||
$identity = $dbForPlatform->findOne('identities', [
|
||||
Query::equal('provider', ['github']),
|
||||
Query::equal('userInternalId', [$user->getInternalId()]),
|
||||
]);
|
||||
if ($identity->isEmpty()) {
|
||||
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
|
||||
}
|
||||
$accessToken = $installation->getAttribute('personalAccessToken');
|
||||
$refreshToken = $installation->getAttribute('personalRefreshToken');
|
||||
$accessTokenExpiry = $installation->getAttribute('personalAccessTokenExpiry');
|
||||
|
||||
$accessToken = $identity->getAttribute('providerAccessToken');
|
||||
$refreshToken = $identity->getAttribute('providerRefreshToken');
|
||||
$accessTokenExpiry = $identity->getAttribute('providerAccessTokenExpiry');
|
||||
if (empty($accessToken) || empty($refreshToken) || empty($accessTokenExpiry)) {
|
||||
$identity = $dbForPlatform->findOne('identities', [
|
||||
Query::equal('provider', ['github']),
|
||||
Query::equal('userInternalId', [$user->getInternalId()]),
|
||||
]);
|
||||
if ($identity->isEmpty()) {
|
||||
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
|
||||
}
|
||||
|
||||
$accessToken = $accessToken ?? $identity->getAttribute('providerAccessToken');
|
||||
$refreshToken = $refreshToken ?? $identity->getAttribute('providerRefreshToken');
|
||||
$accessTokenExpiry = $accessTokenExpiry ?? $identity->getAttribute('providerAccessTokenExpiry');
|
||||
}
|
||||
|
||||
$isExpired = new \DateTime($accessTokenExpiry) < new \DateTime('now');
|
||||
if ($isExpired) {
|
||||
|
|
@ -745,12 +726,12 @@ App::post('/v1/vcs/github/installations/:installationId/providerRepositories')
|
|||
throw new Exception(Exception::GENERAL_RATE_LIMIT_EXCEEDED, "Another request is currently refreshing OAuth token. Please try again.");
|
||||
}
|
||||
|
||||
$identity = $identity
|
||||
->setAttribute('providerAccessToken', $accessToken)
|
||||
->setAttribute('providerRefreshToken', $refreshToken)
|
||||
->setAttribute('providerAccessTokenExpiry', DateTime::addSeconds(new \DateTime(), (int)$oauth2->getAccessTokenExpiry('')));
|
||||
$installation = $installation
|
||||
->setAttribute('personalAccessToken', $accessToken)
|
||||
->setAttribute('personalRefreshToken', $refreshToken)
|
||||
->setAttribute('personalAccessTokenExpiry', DateTime::addSeconds(new \DateTime(), (int)$oauth2->getAccessTokenExpiry('')));
|
||||
|
||||
$dbForPlatform->updateDocument('identities', $identity->getId(), $identity);
|
||||
$dbForPlatform->updateDocument('installations', $installation->getId(), $installation);
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use Appwrite\Extend\Exception;
|
|||
use Appwrite\Utopia\Request;
|
||||
use MaxMind\Db\Reader;
|
||||
use Utopia\App;
|
||||
use Utopia\Config\Config;
|
||||
use Utopia\Database\DateTime;
|
||||
use Utopia\Database\Document;
|
||||
use Utopia\Database\Validator\Authorization;
|
||||
|
|
@ -57,44 +58,44 @@ App::init()
|
|||
|
||||
$auths = $project->getAttribute('auths', []);
|
||||
switch ($route->getLabel('auth.type', '')) {
|
||||
case 'emailPassword':
|
||||
if (($auths['emailPassword'] ?? true) === false) {
|
||||
case 'email-password':
|
||||
if (($auths[Config::getParam('auth')['email-password']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email / Password authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'magic-url':
|
||||
if (($auths['usersAuthMagicURL'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['magic-url']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Magic URL authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'anonymous':
|
||||
if (($auths['anonymous'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['anonymous']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Anonymous authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'phone':
|
||||
if (($auths['phone'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['phone']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'invites':
|
||||
if (($auths['invites'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['invites']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Invites authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'jwt':
|
||||
if (($auths['JWT'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['jwt']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'JWT authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'email-otp':
|
||||
if (($auths['emailOTP'] ?? true) === false) {
|
||||
if (($auths[Config::getParam('auth')['email-otp']['key']] ?? true) === false) {
|
||||
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Email OTP authentication is disabled for this project');
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1829,6 +1829,10 @@ App::setResource('plan', function (array $plan = []) {
|
|||
return [];
|
||||
});
|
||||
|
||||
App::setResource('smsRates', function () {
|
||||
return [];
|
||||
});
|
||||
|
||||
App::setResource('team', function (Document $project, Database $dbForPlatform, App $utopia, Request $request) {
|
||||
$teamInternalId = '';
|
||||
if ($project->getId() !== 'console') {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ class MetricBreakdown extends Model
|
|||
'description' => 'Resource ID.',
|
||||
'default' => '',
|
||||
'example' => '5e5ea5c16897e',
|
||||
'required' => false,
|
||||
])
|
||||
->addRule('name', [
|
||||
'type' => self::TYPE_STRING,
|
||||
|
|
@ -27,6 +28,13 @@ class MetricBreakdown extends Model
|
|||
'description' => 'The value of this metric at the timestamp.',
|
||||
'default' => 0,
|
||||
'example' => 1,
|
||||
])
|
||||
->addRule('estimate', [
|
||||
'type' => self::TYPE_FLOAT,
|
||||
'description' => 'The estimated value of this metric at the end of the period.',
|
||||
'default' => 0,
|
||||
'example' => 1,
|
||||
'required' => false,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -152,6 +152,25 @@ class UsageProject extends Model
|
|||
'example' => [],
|
||||
'array' => true
|
||||
])
|
||||
->addRule('authPhoneTotal', [
|
||||
'type' => self::TYPE_INTEGER,
|
||||
'description' => 'Total aggregated number of phone auth.',
|
||||
'default' => 0,
|
||||
'example' => 0,
|
||||
])
|
||||
->addRule('authPhoneEstimate', [
|
||||
'type' => self::TYPE_FLOAT,
|
||||
'description' => 'Estimated total aggregated cost of phone auth.',
|
||||
'default' => 0,
|
||||
'example' => 0,
|
||||
])
|
||||
->addRule('authPhoneCountryBreakdown', [
|
||||
'type' => Response::MODEL_METRIC_BREAKDOWN,
|
||||
'description' => 'Aggregated breakdown in totals of phone auth by country.',
|
||||
'default' => [],
|
||||
'example' => [],
|
||||
'array' => true
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class UsageTest extends Scope
|
|||
);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals(22, count($response['body']));
|
||||
$this->assertEquals(25, count($response['body']));
|
||||
$this->validateDates($response['body']['network']);
|
||||
$this->validateDates($response['body']['requests']);
|
||||
$this->validateDates($response['body']['users']);
|
||||
|
|
@ -324,7 +324,7 @@ class UsageTest extends Scope
|
|||
]
|
||||
);
|
||||
|
||||
$this->assertEquals(22, count($response['body']));
|
||||
$this->assertEquals(25, count($response['body']));
|
||||
$this->assertEquals(1, count($response['body']['requests']));
|
||||
$this->assertEquals($requestsTotal, $response['body']['requests'][array_key_last($response['body']['requests'])]['value']);
|
||||
$this->validateDates($response['body']['requests']);
|
||||
|
|
@ -545,7 +545,7 @@ class UsageTest extends Scope
|
|||
]
|
||||
);
|
||||
|
||||
$this->assertEquals(22, count($response['body']));
|
||||
$this->assertEquals(25, count($response['body']));
|
||||
$this->assertEquals(1, count($response['body']['requests']));
|
||||
$this->assertEquals(1, count($response['body']['network']));
|
||||
$this->assertEquals($requestsTotal, $response['body']['requests'][array_key_last($response['body']['requests'])]['value']);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Tests\E2E\Services\Messaging;
|
||||
|
||||
use Appwrite\Tests\Async;
|
||||
use Tests\E2E\Client;
|
||||
use Tests\E2E\Scopes\ProjectCustom;
|
||||
use Tests\E2E\Scopes\Scope;
|
||||
|
|
@ -11,6 +12,8 @@ use Utopia\Database\Query;
|
|||
|
||||
class MessagingConsoleClientTest extends Scope
|
||||
{
|
||||
use Async;
|
||||
|
||||
use MessagingBase;
|
||||
use ProjectCustom;
|
||||
use SideConsole;
|
||||
|
|
@ -54,15 +57,18 @@ class MessagingConsoleClientTest extends Scope
|
|||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
|
||||
$logs = $this->client->call(Client::METHOD_GET, '/messaging/providers/' . $provider['body']['$id'] . '/logs', \array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()));
|
||||
// required for Cloud x Audits
|
||||
$this->assertEventually(function () use ($provider) {
|
||||
$logs = $this->client->call(Client::METHOD_GET, '/messaging/providers/' . $provider['body']['$id'] . '/logs', \array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()));
|
||||
|
||||
$this->assertEquals($logs['headers']['status-code'], 200);
|
||||
$this->assertIsArray($logs['body']['logs']);
|
||||
$this->assertIsNumeric($logs['body']['total']);
|
||||
$this->assertCount(2, $logs['body']['logs']);
|
||||
$this->assertEquals($logs['headers']['status-code'], 200);
|
||||
$this->assertIsArray($logs['body']['logs']);
|
||||
$this->assertIsNumeric($logs['body']['total']);
|
||||
$this->assertCount(2, $logs['body']['logs']);
|
||||
});
|
||||
|
||||
$logs = $this->client->call(Client::METHOD_GET, '/messaging/providers/' . $provider['body']['$id'] . '/logs', \array_merge([
|
||||
'content-type' => 'application/json',
|
||||
|
|
|
|||
|
|
@ -485,6 +485,8 @@ class ProjectsConsoleClientTest extends Scope
|
|||
$this->assertIsNumeric($response['body']['usersTotal']);
|
||||
$this->assertIsNumeric($response['body']['filesStorageTotal']);
|
||||
$this->assertIsNumeric($response['body']['deploymentStorageTotal']);
|
||||
$this->assertIsNumeric($response['body']['authPhoneTotal']);
|
||||
$this->assertIsNumeric($response['body']['authPhoneEstimate']);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -318,6 +318,14 @@ trait UsersBase
|
|||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_DELETE, '/account/sessions/current', [
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-session' => $session['secret']
|
||||
]);
|
||||
|
||||
$this->assertEquals(204, $response['headers']['status-code']);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue