Merge remote-tracking branch 'upstream/1.8.x' into spatial-type-attributes

This commit is contained in:
ArnabChatterjee20k
2025-08-26 21:46:43 +05:30
3391 changed files with 10898 additions and 27334 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ RUN composer install --ignore-platform-reqs --optimize-autoloader \
--no-plugins --no-scripts --prefer-dist \
`if [ "$TESTING" != "true" ]; then echo "--no-dev"; fi`
FROM appwrite/base:0.10.3 AS final
FROM appwrite/base:0.10.4 AS final
LABEL maintainer="team@appwrite.io"
+6
View File
@@ -194,12 +194,18 @@ CLI::setResource('publisher', function (Group $pools) {
CLI::setResource('publisherDatabases', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherFunctions', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMigrations', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherStatsUsage', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMessaging', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('queueForStatsUsage', function (Publisher $publisher) {
return new StatsUsage($publisher);
}, ['publisher']);
@@ -1,9 +1,24 @@
<!doctype html>
<html>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Poppins:wght@500;600&display=swap">
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<style>
@font-face {
font-family: 'Inter';
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'DM Sans';
src: url('https://assets.appwrite.io/fonts/dm-sans/dm-sans-v16-latin-600.woff2') format('woff2');
font-weight: 600;
font-style: normal;
font-display: swap;
}
</style>
<style>
@media (max-width:500px) {
.mobile-full-width {
+34 -52
View File
@@ -1,9 +1,32 @@
<!doctype html>
<html>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Poppins:wght@500;600&display=swap">
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<style>
@font-face {
font-family: 'Inter';
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'DM Sans';
src: url('https://assets.appwrite.io/fonts/dm-sans/dm-sans-v16-latin-600.woff2') format('woff2');
font-weight: 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Poppins';
src: url('https://assets.appwrite.io/fonts/poppins/poppins-v23-latin-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
</style>
<style>
body {
padding: 32px;
@@ -15,6 +38,7 @@
background-color: #ffffff;
margin: 0;
padding: 0;
line-height: 150%;
}
a {
color: currentColor;
@@ -67,58 +91,16 @@
border: none;
border-top: 1px solid #e8e9f0;
}
h* {
font-family: 'Poppins', sans-serif;
}
p {
margin-bottom: 10px;
}
</style>
</head>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Poppins:wght@500;600&display=swap"
rel="stylesheet">
<style>
a { color:currentColor; word-break: break-all; }
body {
background-color: #ffffff;
padding: 32px;
color: #616B7C;
font-size: 15px;
font-family: 'Inter', sans-serif;
line-height: 150%;
}
table {
width: 100%;
border-spacing: 0 !important;
}
table,
tr,
th,
td {
margin: 0;
padding: 0;
}
td {
vertical-align: top;
}
h* {
font-family: 'Poppins', sans-serif;
}
hr {
border: none;
border-top: 1px solid #E8E9F0;
}
p {
margin-bottom: 10px;
}
</style>
</head>
<body style="direction: {{direction}}">
<div style="display: none; overflow: hidden; max-height: 0; max-width: 0; opacity: 0; line-height: 1px;">
+1 -1
View File
@@ -226,7 +226,7 @@ return [
[
'key' => 'cli',
'name' => 'Command Line',
'version' => '9.0.0',
'version' => '9.0.1',
'url' => 'https://github.com/appwrite/sdk-for-cli',
'package' => 'https://www.npmjs.com/package/appwrite-cli',
'enabled' => true,
+65 -50
View File
@@ -383,7 +383,7 @@
"weight": 30,
"cookies": false,
"type": "",
"demo": "account\/create-j-w-t.md",
"demo": "account\/create-jwt.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md",
"rate-limit": 100,
"rate-time": 3600,
@@ -498,7 +498,7 @@
"weight": 45,
"cookies": false,
"type": "",
"demo": "account\/update-m-f-a.md",
"demo": "account\/update-mfa.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -581,7 +581,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
},
"methods": [
{
@@ -607,7 +607,7 @@
"demo": "account\/create-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
}
},
{
@@ -630,7 +630,7 @@
}
],
"description": "Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](\/docs\/references\/cloud\/client-web\/account#updateMfaAuthenticator) method.",
"demo": "account\/create-m-f-a-authenticator.md"
"demo": "account\/create-mfa-authenticator.md"
}
],
"auth": {
@@ -701,7 +701,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
},
"methods": [
{
@@ -729,7 +729,7 @@
"demo": "account\/update-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
}
},
{
@@ -754,7 +754,7 @@
}
],
"description": "Verify an authenticator app after adding it using the [add authenticator](\/docs\/references\/cloud\/client-web\/account#createMfaAuthenticator) method.",
"demo": "account\/update-m-f-a-authenticator.md"
"demo": "account\/update-mfa-authenticator.md"
}
],
"auth": {
@@ -837,7 +837,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
},
"methods": [
{
@@ -862,7 +862,7 @@
"demo": "account\/delete-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
}
},
{
@@ -884,7 +884,7 @@
}
],
"description": "Delete an authenticator for a user by ID.",
"demo": "account\/delete-m-f-a-authenticator.md"
"demo": "account\/delete-mfa-authenticator.md"
}
],
"auth": {
@@ -957,7 +957,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
},
"methods": [
{
@@ -983,7 +983,7 @@
"demo": "account\/create-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
}
},
{
@@ -1006,7 +1006,7 @@
}
],
"description": "Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](\/docs\/references\/cloud\/client-web\/account#updateMfaChallenge) method.",
"demo": "account\/create-m-f-a-challenge.md"
"demo": "account\/create-mfa-challenge.md"
}
],
"auth": {
@@ -1085,7 +1085,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
},
"methods": [
{
@@ -1113,7 +1113,7 @@
"demo": "account\/update-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
}
},
{
@@ -1138,7 +1138,7 @@
}
],
"description": "Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/update-m-f-a-challenge.md"
"demo": "account\/update-mfa-challenge.md"
}
],
"auth": {
@@ -1219,7 +1219,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
},
"methods": [
{
@@ -1241,7 +1241,7 @@
"demo": "account\/list-mfa-factors.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
}
},
{
@@ -1260,7 +1260,7 @@
}
],
"description": "List the factors available on the account to be used as a MFA challange.",
"demo": "account\/list-m-f-a-factors.md"
"demo": "account\/list-mfa-factors.md"
}
],
"auth": {
@@ -1316,7 +1316,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
},
"methods": [
{
@@ -1338,7 +1338,7 @@
"demo": "account\/get-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
}
},
{
@@ -1357,7 +1357,7 @@
}
],
"description": "Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.",
"demo": "account\/get-m-f-a-recovery-codes.md"
"demo": "account\/get-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1411,7 +1411,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
},
"methods": [
{
@@ -1433,7 +1433,7 @@
"demo": "account\/create-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
}
},
{
@@ -1452,7 +1452,7 @@
}
],
"description": "Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/create-m-f-a-recovery-codes.md"
"demo": "account\/create-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1506,7 +1506,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
},
"methods": [
{
@@ -1528,7 +1528,7 @@
"demo": "account\/update-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
}
},
{
@@ -1547,7 +1547,7 @@
}
],
"description": "Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.",
"demo": "account\/update-m-f-a-recovery-codes.md"
"demo": "account\/update-mfa-recovery-codes.md"
}
],
"auth": {
@@ -2305,7 +2305,7 @@
"weight": 27,
"cookies": false,
"type": "",
"demo": "account\/update-magic-u-r-l-session.md",
"demo": "account\/update-magic-url-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md",
"rate-limit": 10,
"rate-time": 3600,
@@ -2316,6 +2316,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -2372,7 +2376,7 @@
"weight": 20,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2session.md",
"demo": "account\/create-o-auth-2-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -2525,6 +2529,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -3082,7 +3090,7 @@
"tags": [
"account"
],
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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).",
"description": "Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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",
@@ -3133,7 +3141,7 @@
"properties": {
"userId": {
"type": "string",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"email": {
@@ -3184,7 +3192,7 @@
"weight": 25,
"cookies": false,
"type": "",
"demo": "account\/create-magic-u-r-l-token.md",
"demo": "account\/create-magic-url-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md",
"rate-limit": 60,
"rate-time": 3600,
@@ -3215,7 +3223,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"email": {
@@ -3264,7 +3272,7 @@
"weight": 24,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2token.md",
"demo": "account\/create-o-auth-2-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -3437,7 +3445,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"phone": {
@@ -4726,7 +4734,7 @@
"weight": 65,
"cookies": false,
"type": "location",
"demo": "avatars\/get-q-r.md",
"demo": "avatars\/get-qr.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -6316,7 +6324,7 @@
"weight": 73,
"cookies": false,
"type": "",
"demo": "locale\/list-countries-e-u.md",
"demo": "locale\/list-countries-eu.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7485,7 +7493,7 @@
"weight": 420,
"cookies": false,
"type": "",
"demo": "tables-d-b\/list-rows.md",
"demo": "tablesdb\/list-rows.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/list-rows.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7570,7 +7578,7 @@
"weight": 412,
"cookies": false,
"type": "",
"demo": "tables-d-b\/create-row.md",
"demo": "tablesdb\/create-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/create-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7610,7 +7618,7 @@
}
],
"description": "Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/create-row.md"
"demo": "tables-db\/create-row.md"
}
],
"auth": {
@@ -7712,7 +7720,7 @@
"weight": 413,
"cookies": false,
"type": "",
"demo": "tables-d-b\/get-row.md",
"demo": "tablesdb\/get-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-row.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7807,7 +7815,7 @@
"weight": 416,
"cookies": false,
"type": "",
"demo": "tables-d-b\/upsert-row.md",
"demo": "tablesdb\/upsert-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/upsert-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7846,7 +7854,7 @@
}
],
"description": "Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/upsert-row.md"
"demo": "tables-db\/upsert-row.md"
}
],
"auth": {
@@ -7943,7 +7951,7 @@
"weight": 414,
"cookies": false,
"type": "",
"demo": "tables-d-b\/update-row.md",
"demo": "tablesdb\/update-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/update-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8042,7 +8050,7 @@
"weight": 418,
"cookies": false,
"type": "",
"demo": "tables-d-b\/delete-row.md",
"demo": "tablesdb\/delete-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/delete-row.md",
"rate-limit": 60,
"rate-time": 60,
@@ -8126,7 +8134,7 @@
"weight": 423,
"cookies": false,
"type": "",
"demo": "tables-d-b\/decrement-row-column.md",
"demo": "tablesdb\/decrement-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/decrement-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8241,7 +8249,7 @@
"weight": 422,
"cookies": false,
"type": "",
"demo": "tables-d-b\/increment-row-column.md",
"demo": "tablesdb\/increment-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/increment-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -11331,7 +11339,7 @@
},
"$updatedAt": {
"type": "string",
"description": "Execution upate date in ISO 8601 format.",
"description": "Execution update date in ISO 8601 format.",
"x-example": "2020-10-15T06:38:00.000+00:00"
},
"$permissions": {
@@ -11349,6 +11357,11 @@
"description": "Function ID.",
"x-example": "5e5ea6g16897e"
},
"deploymentId": {
"type": "string",
"description": "Function's deployment ID used to create the execution.",
"x-example": "5e5ea5c16897e"
},
"trigger": {
"type": "string",
"description": "The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.",
@@ -11433,6 +11446,7 @@
"$updatedAt",
"$permissions",
"functionId",
"deploymentId",
"trigger",
"status",
"requestMethod",
@@ -11453,6 +11467,7 @@
"any"
],
"functionId": "5e5ea6g16897e",
"deploymentId": "5e5ea5c16897e",
"trigger": "http",
"status": "processing",
"requestMethod": "GET",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+65 -50
View File
@@ -383,7 +383,7 @@
"weight": 30,
"cookies": false,
"type": "",
"demo": "account\/create-j-w-t.md",
"demo": "account\/create-jwt.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md",
"rate-limit": 100,
"rate-time": 3600,
@@ -498,7 +498,7 @@
"weight": 45,
"cookies": false,
"type": "",
"demo": "account\/update-m-f-a.md",
"demo": "account\/update-mfa.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -581,7 +581,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
},
"methods": [
{
@@ -607,7 +607,7 @@
"demo": "account\/create-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
}
},
{
@@ -630,7 +630,7 @@
}
],
"description": "Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](\/docs\/references\/cloud\/client-web\/account#updateMfaAuthenticator) method.",
"demo": "account\/create-m-f-a-authenticator.md"
"demo": "account\/create-mfa-authenticator.md"
}
],
"auth": {
@@ -701,7 +701,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
},
"methods": [
{
@@ -729,7 +729,7 @@
"demo": "account\/update-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
}
},
{
@@ -754,7 +754,7 @@
}
],
"description": "Verify an authenticator app after adding it using the [add authenticator](\/docs\/references\/cloud\/client-web\/account#createMfaAuthenticator) method.",
"demo": "account\/update-m-f-a-authenticator.md"
"demo": "account\/update-mfa-authenticator.md"
}
],
"auth": {
@@ -837,7 +837,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
},
"methods": [
{
@@ -862,7 +862,7 @@
"demo": "account\/delete-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
}
},
{
@@ -884,7 +884,7 @@
}
],
"description": "Delete an authenticator for a user by ID.",
"demo": "account\/delete-m-f-a-authenticator.md"
"demo": "account\/delete-mfa-authenticator.md"
}
],
"auth": {
@@ -957,7 +957,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
},
"methods": [
{
@@ -983,7 +983,7 @@
"demo": "account\/create-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
}
},
{
@@ -1006,7 +1006,7 @@
}
],
"description": "Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](\/docs\/references\/cloud\/client-web\/account#updateMfaChallenge) method.",
"demo": "account\/create-m-f-a-challenge.md"
"demo": "account\/create-mfa-challenge.md"
}
],
"auth": {
@@ -1085,7 +1085,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
},
"methods": [
{
@@ -1113,7 +1113,7 @@
"demo": "account\/update-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
}
},
{
@@ -1138,7 +1138,7 @@
}
],
"description": "Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/update-m-f-a-challenge.md"
"demo": "account\/update-mfa-challenge.md"
}
],
"auth": {
@@ -1219,7 +1219,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
},
"methods": [
{
@@ -1241,7 +1241,7 @@
"demo": "account\/list-mfa-factors.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
}
},
{
@@ -1260,7 +1260,7 @@
}
],
"description": "List the factors available on the account to be used as a MFA challange.",
"demo": "account\/list-m-f-a-factors.md"
"demo": "account\/list-mfa-factors.md"
}
],
"auth": {
@@ -1316,7 +1316,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
},
"methods": [
{
@@ -1338,7 +1338,7 @@
"demo": "account\/get-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
}
},
{
@@ -1357,7 +1357,7 @@
}
],
"description": "Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.",
"demo": "account\/get-m-f-a-recovery-codes.md"
"demo": "account\/get-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1411,7 +1411,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
},
"methods": [
{
@@ -1433,7 +1433,7 @@
"demo": "account\/create-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
}
},
{
@@ -1452,7 +1452,7 @@
}
],
"description": "Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/create-m-f-a-recovery-codes.md"
"demo": "account\/create-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1506,7 +1506,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
},
"methods": [
{
@@ -1528,7 +1528,7 @@
"demo": "account\/update-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
}
},
{
@@ -1547,7 +1547,7 @@
}
],
"description": "Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.",
"demo": "account\/update-m-f-a-recovery-codes.md"
"demo": "account\/update-mfa-recovery-codes.md"
}
],
"auth": {
@@ -2305,7 +2305,7 @@
"weight": 27,
"cookies": false,
"type": "",
"demo": "account\/update-magic-u-r-l-session.md",
"demo": "account\/update-magic-url-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md",
"rate-limit": 10,
"rate-time": 3600,
@@ -2316,6 +2316,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -2372,7 +2376,7 @@
"weight": 20,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2session.md",
"demo": "account\/create-o-auth-2-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -2525,6 +2529,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -3082,7 +3090,7 @@
"tags": [
"account"
],
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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).",
"description": "Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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",
@@ -3133,7 +3141,7 @@
"properties": {
"userId": {
"type": "string",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"email": {
@@ -3184,7 +3192,7 @@
"weight": 25,
"cookies": false,
"type": "",
"demo": "account\/create-magic-u-r-l-token.md",
"demo": "account\/create-magic-url-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md",
"rate-limit": 60,
"rate-time": 3600,
@@ -3215,7 +3223,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"email": {
@@ -3264,7 +3272,7 @@
"weight": 24,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2token.md",
"demo": "account\/create-o-auth-2-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -3437,7 +3445,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"x-example": "<USER_ID>"
},
"phone": {
@@ -4726,7 +4734,7 @@
"weight": 65,
"cookies": false,
"type": "location",
"demo": "avatars\/get-q-r.md",
"demo": "avatars\/get-qr.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -6316,7 +6324,7 @@
"weight": 73,
"cookies": false,
"type": "",
"demo": "locale\/list-countries-e-u.md",
"demo": "locale\/list-countries-eu.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7485,7 +7493,7 @@
"weight": 420,
"cookies": false,
"type": "",
"demo": "tables-d-b\/list-rows.md",
"demo": "tablesdb\/list-rows.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/list-rows.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7570,7 +7578,7 @@
"weight": 412,
"cookies": false,
"type": "",
"demo": "tables-d-b\/create-row.md",
"demo": "tablesdb\/create-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/create-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7610,7 +7618,7 @@
}
],
"description": "Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/create-row.md"
"demo": "tables-db\/create-row.md"
}
],
"auth": {
@@ -7712,7 +7720,7 @@
"weight": 413,
"cookies": false,
"type": "",
"demo": "tables-d-b\/get-row.md",
"demo": "tablesdb\/get-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-row.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7807,7 +7815,7 @@
"weight": 416,
"cookies": false,
"type": "",
"demo": "tables-d-b\/upsert-row.md",
"demo": "tablesdb\/upsert-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/upsert-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7846,7 +7854,7 @@
}
],
"description": "Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/upsert-row.md"
"demo": "tables-db\/upsert-row.md"
}
],
"auth": {
@@ -7943,7 +7951,7 @@
"weight": 414,
"cookies": false,
"type": "",
"demo": "tables-d-b\/update-row.md",
"demo": "tablesdb\/update-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/update-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8042,7 +8050,7 @@
"weight": 418,
"cookies": false,
"type": "",
"demo": "tables-d-b\/delete-row.md",
"demo": "tablesdb\/delete-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/delete-row.md",
"rate-limit": 60,
"rate-time": 60,
@@ -8126,7 +8134,7 @@
"weight": 423,
"cookies": false,
"type": "",
"demo": "tables-d-b\/decrement-row-column.md",
"demo": "tablesdb\/decrement-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/decrement-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8241,7 +8249,7 @@
"weight": 422,
"cookies": false,
"type": "",
"demo": "tables-d-b\/increment-row-column.md",
"demo": "tablesdb\/increment-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/increment-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -11331,7 +11339,7 @@
},
"$updatedAt": {
"type": "string",
"description": "Execution upate date in ISO 8601 format.",
"description": "Execution update date in ISO 8601 format.",
"x-example": "2020-10-15T06:38:00.000+00:00"
},
"$permissions": {
@@ -11349,6 +11357,11 @@
"description": "Function ID.",
"x-example": "5e5ea6g16897e"
},
"deploymentId": {
"type": "string",
"description": "Function's deployment ID used to create the execution.",
"x-example": "5e5ea5c16897e"
},
"trigger": {
"type": "string",
"description": "The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.",
@@ -11433,6 +11446,7 @@
"$updatedAt",
"$permissions",
"functionId",
"deploymentId",
"trigger",
"status",
"requestMethod",
@@ -11453,6 +11467,7 @@
"any"
],
"functionId": "5e5ea6g16897e",
"deploymentId": "5e5ea5c16897e",
"trigger": "http",
"status": "processing",
"requestMethod": "GET",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+65 -50
View File
@@ -442,7 +442,7 @@
"weight": 30,
"cookies": false,
"type": "",
"demo": "account\/create-j-w-t.md",
"demo": "account\/create-jwt.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md",
"rate-limit": 100,
"rate-time": 3600,
@@ -558,7 +558,7 @@
"weight": 45,
"cookies": false,
"type": "",
"demo": "account\/update-m-f-a.md",
"demo": "account\/update-mfa.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -644,7 +644,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
},
"methods": [
{
@@ -670,7 +670,7 @@
"demo": "account\/create-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
}
},
{
@@ -693,7 +693,7 @@
}
],
"description": "Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](\/docs\/references\/cloud\/client-web\/account#updateMfaAuthenticator) method.",
"demo": "account\/create-m-f-a-authenticator.md"
"demo": "account\/create-mfa-authenticator.md"
}
],
"auth": {
@@ -764,7 +764,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
},
"methods": [
{
@@ -792,7 +792,7 @@
"demo": "account\/update-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
}
},
{
@@ -817,7 +817,7 @@
}
],
"description": "Verify an authenticator app after adding it using the [add authenticator](\/docs\/references\/cloud\/client-web\/account#createMfaAuthenticator) method.",
"demo": "account\/update-m-f-a-authenticator.md"
"demo": "account\/update-mfa-authenticator.md"
}
],
"auth": {
@@ -901,7 +901,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
},
"methods": [
{
@@ -926,7 +926,7 @@
"demo": "account\/delete-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
}
},
{
@@ -948,7 +948,7 @@
}
],
"description": "Delete an authenticator for a user by ID.",
"demo": "account\/delete-m-f-a-authenticator.md"
"demo": "account\/delete-mfa-authenticator.md"
}
],
"auth": {
@@ -1021,7 +1021,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
},
"methods": [
{
@@ -1047,7 +1047,7 @@
"demo": "account\/create-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
}
},
{
@@ -1070,7 +1070,7 @@
}
],
"description": "Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](\/docs\/references\/cloud\/client-web\/account#updateMfaChallenge) method.",
"demo": "account\/create-m-f-a-challenge.md"
"demo": "account\/create-mfa-challenge.md"
}
],
"auth": {
@@ -1152,7 +1152,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
},
"methods": [
{
@@ -1180,7 +1180,7 @@
"demo": "account\/update-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
}
},
{
@@ -1205,7 +1205,7 @@
}
],
"description": "Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/update-m-f-a-challenge.md"
"demo": "account\/update-mfa-challenge.md"
}
],
"auth": {
@@ -1288,7 +1288,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
},
"methods": [
{
@@ -1310,7 +1310,7 @@
"demo": "account\/list-mfa-factors.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
}
},
{
@@ -1329,7 +1329,7 @@
}
],
"description": "List the factors available on the account to be used as a MFA challange.",
"demo": "account\/list-m-f-a-factors.md"
"demo": "account\/list-mfa-factors.md"
}
],
"auth": {
@@ -1385,7 +1385,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
},
"methods": [
{
@@ -1407,7 +1407,7 @@
"demo": "account\/get-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
}
},
{
@@ -1426,7 +1426,7 @@
}
],
"description": "Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.",
"demo": "account\/get-m-f-a-recovery-codes.md"
"demo": "account\/get-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1482,7 +1482,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
},
"methods": [
{
@@ -1504,7 +1504,7 @@
"demo": "account\/create-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
}
},
{
@@ -1523,7 +1523,7 @@
}
],
"description": "Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/create-m-f-a-recovery-codes.md"
"demo": "account\/create-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1579,7 +1579,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
},
"methods": [
{
@@ -1601,7 +1601,7 @@
"demo": "account\/update-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
}
},
{
@@ -1620,7 +1620,7 @@
}
],
"description": "Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.",
"demo": "account\/update-m-f-a-recovery-codes.md"
"demo": "account\/update-mfa-recovery-codes.md"
}
],
"auth": {
@@ -2413,7 +2413,7 @@
"weight": 27,
"cookies": false,
"type": "",
"demo": "account\/update-magic-u-r-l-session.md",
"demo": "account\/update-magic-url-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md",
"rate-limit": 10,
"rate-time": 3600,
@@ -2424,6 +2424,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -2486,7 +2490,7 @@
"weight": 20,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2session.md",
"demo": "account\/create-o-auth-2-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -2634,6 +2638,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -3211,7 +3219,7 @@
"tags": [
"account"
],
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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).",
"description": "Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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",
@@ -3259,7 +3267,7 @@
"properties": {
"userId": {
"type": "string",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -3314,7 +3322,7 @@
"weight": 25,
"cookies": false,
"type": "",
"demo": "account\/create-magic-u-r-l-token.md",
"demo": "account\/create-magic-url-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md",
"rate-limit": 60,
"rate-time": 3600,
@@ -3346,7 +3354,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -3402,7 +3410,7 @@
"weight": 24,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2token.md",
"demo": "account\/create-o-auth-2-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -3571,7 +3579,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -4877,7 +4885,7 @@
"weight": 65,
"cookies": false,
"type": "location",
"demo": "avatars\/get-q-r.md",
"demo": "avatars\/get-qr.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -6448,7 +6456,7 @@
"weight": 73,
"cookies": false,
"type": "",
"demo": "locale\/list-countries-e-u.md",
"demo": "locale\/list-countries-eu.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7567,7 +7575,7 @@
"weight": 420,
"cookies": false,
"type": "",
"demo": "tables-d-b\/list-rows.md",
"demo": "tablesdb\/list-rows.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/list-rows.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7648,7 +7656,7 @@
"weight": 412,
"cookies": false,
"type": "",
"demo": "tables-d-b\/create-row.md",
"demo": "tablesdb\/create-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/create-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7687,7 +7695,7 @@
}
],
"description": "Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/create-row.md"
"demo": "tables-db\/create-row.md"
}
],
"auth": {
@@ -7787,7 +7795,7 @@
"weight": 413,
"cookies": false,
"type": "",
"demo": "tables-d-b\/get-row.md",
"demo": "tablesdb\/get-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-row.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7876,7 +7884,7 @@
"weight": 416,
"cookies": false,
"type": "",
"demo": "tables-d-b\/upsert-row.md",
"demo": "tablesdb\/upsert-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/upsert-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7914,7 +7922,7 @@
}
],
"description": "Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/upsert-row.md"
"demo": "tables-db\/upsert-row.md"
}
],
"auth": {
@@ -8007,7 +8015,7 @@
"weight": 414,
"cookies": false,
"type": "",
"demo": "tables-d-b\/update-row.md",
"demo": "tablesdb\/update-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/update-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8103,7 +8111,7 @@
"weight": 418,
"cookies": false,
"type": "",
"demo": "tables-d-b\/delete-row.md",
"demo": "tablesdb\/delete-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/delete-row.md",
"rate-limit": 60,
"rate-time": 60,
@@ -8182,7 +8190,7 @@
"weight": 423,
"cookies": false,
"type": "",
"demo": "tables-d-b\/decrement-row-column.md",
"demo": "tablesdb\/decrement-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/decrement-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8290,7 +8298,7 @@
"weight": 422,
"cookies": false,
"type": "",
"demo": "tables-d-b\/increment-row-column.md",
"demo": "tablesdb\/increment-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/increment-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -11330,7 +11338,7 @@
},
"$updatedAt": {
"type": "string",
"description": "Execution upate date in ISO 8601 format.",
"description": "Execution update date in ISO 8601 format.",
"x-example": "2020-10-15T06:38:00.000+00:00"
},
"$permissions": {
@@ -11348,6 +11356,11 @@
"description": "Function ID.",
"x-example": "5e5ea6g16897e"
},
"deploymentId": {
"type": "string",
"description": "Function's deployment ID used to create the execution.",
"x-example": "5e5ea5c16897e"
},
"trigger": {
"type": "string",
"description": "The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.",
@@ -11434,6 +11447,7 @@
"$updatedAt",
"$permissions",
"functionId",
"deploymentId",
"trigger",
"status",
"requestMethod",
@@ -11454,6 +11468,7 @@
"any"
],
"functionId": "5e5ea6g16897e",
"deploymentId": "5e5ea5c16897e",
"trigger": "http",
"status": "processing",
"requestMethod": "GET",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+65 -50
View File
@@ -442,7 +442,7 @@
"weight": 30,
"cookies": false,
"type": "",
"demo": "account\/create-j-w-t.md",
"demo": "account\/create-jwt.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md",
"rate-limit": 100,
"rate-time": 3600,
@@ -558,7 +558,7 @@
"weight": 45,
"cookies": false,
"type": "",
"demo": "account\/update-m-f-a.md",
"demo": "account\/update-mfa.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-mfa.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -644,7 +644,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
},
"methods": [
{
@@ -670,7 +670,7 @@
"demo": "account\/create-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAAuthenticator"
"replaceWith": "account.createMFAAuthenticator"
}
},
{
@@ -693,7 +693,7 @@
}
],
"description": "Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](\/docs\/references\/cloud\/client-web\/account#updateMfaAuthenticator) method.",
"demo": "account\/create-m-f-a-authenticator.md"
"demo": "account\/create-mfa-authenticator.md"
}
],
"auth": {
@@ -764,7 +764,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
},
"methods": [
{
@@ -792,7 +792,7 @@
"demo": "account\/update-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAAuthenticator"
"replaceWith": "account.updateMFAAuthenticator"
}
},
{
@@ -817,7 +817,7 @@
}
],
"description": "Verify an authenticator app after adding it using the [add authenticator](\/docs\/references\/cloud\/client-web\/account#createMfaAuthenticator) method.",
"demo": "account\/update-m-f-a-authenticator.md"
"demo": "account\/update-mfa-authenticator.md"
}
],
"auth": {
@@ -901,7 +901,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
},
"methods": [
{
@@ -926,7 +926,7 @@
"demo": "account\/delete-mfa-authenticator.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "deleteMFAAuthenticator"
"replaceWith": "account.deleteMFAAuthenticator"
}
},
{
@@ -948,7 +948,7 @@
}
],
"description": "Delete an authenticator for a user by ID.",
"demo": "account\/delete-m-f-a-authenticator.md"
"demo": "account\/delete-mfa-authenticator.md"
}
],
"auth": {
@@ -1021,7 +1021,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
},
"methods": [
{
@@ -1047,7 +1047,7 @@
"demo": "account\/create-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFAChallenge"
"replaceWith": "account.createMFAChallenge"
}
},
{
@@ -1070,7 +1070,7 @@
}
],
"description": "Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](\/docs\/references\/cloud\/client-web\/account#updateMfaChallenge) method.",
"demo": "account\/create-m-f-a-challenge.md"
"demo": "account\/create-mfa-challenge.md"
}
],
"auth": {
@@ -1152,7 +1152,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
},
"methods": [
{
@@ -1180,7 +1180,7 @@
"demo": "account\/update-mfa-challenge.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFAChallenge"
"replaceWith": "account.updateMFAChallenge"
}
},
{
@@ -1205,7 +1205,7 @@
}
],
"description": "Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/update-m-f-a-challenge.md"
"demo": "account\/update-mfa-challenge.md"
}
],
"auth": {
@@ -1288,7 +1288,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
},
"methods": [
{
@@ -1310,7 +1310,7 @@
"demo": "account\/list-mfa-factors.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "listMFAFactors"
"replaceWith": "account.listMFAFactors"
}
},
{
@@ -1329,7 +1329,7 @@
}
],
"description": "List the factors available on the account to be used as a MFA challange.",
"demo": "account\/list-m-f-a-factors.md"
"demo": "account\/list-mfa-factors.md"
}
],
"auth": {
@@ -1385,7 +1385,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
},
"methods": [
{
@@ -1407,7 +1407,7 @@
"demo": "account\/get-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "getMFARecoveryCodes"
"replaceWith": "account.getMFARecoveryCodes"
}
},
{
@@ -1426,7 +1426,7 @@
}
],
"description": "Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.",
"demo": "account\/get-m-f-a-recovery-codes.md"
"demo": "account\/get-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1482,7 +1482,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
},
"methods": [
{
@@ -1504,7 +1504,7 @@
"demo": "account\/create-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "createMFARecoveryCodes"
"replaceWith": "account.createMFARecoveryCodes"
}
},
{
@@ -1523,7 +1523,7 @@
}
],
"description": "Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](\/docs\/references\/cloud\/client-web\/account#createMfaChallenge) method.",
"demo": "account\/create-m-f-a-recovery-codes.md"
"demo": "account\/create-mfa-recovery-codes.md"
}
],
"auth": {
@@ -1579,7 +1579,7 @@
"packaging": false,
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
},
"methods": [
{
@@ -1601,7 +1601,7 @@
"demo": "account\/update-mfa-recovery-codes.md",
"deprecated": {
"since": "1.8.0",
"replaceWith": "updateMFARecoveryCodes"
"replaceWith": "account.updateMFARecoveryCodes"
}
},
{
@@ -1620,7 +1620,7 @@
}
],
"description": "Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](\/docs\/references\/cloud\/client-web\/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.",
"demo": "account\/update-m-f-a-recovery-codes.md"
"demo": "account\/update-mfa-recovery-codes.md"
}
],
"auth": {
@@ -2413,7 +2413,7 @@
"weight": 27,
"cookies": false,
"type": "",
"demo": "account\/update-magic-u-r-l-session.md",
"demo": "account\/update-magic-url-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session.md",
"rate-limit": 10,
"rate-time": 3600,
@@ -2424,6 +2424,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -2486,7 +2490,7 @@
"weight": 20,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2session.md",
"demo": "account\/create-o-auth-2-session.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -2634,6 +2638,10 @@
"client"
],
"packaging": false,
"deprecated": {
"since": "1.6.0",
"replaceWith": "account.createSession"
},
"auth": {
"Project": []
}
@@ -3211,7 +3219,7 @@
"tags": [
"account"
],
"description": "Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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).",
"description": "Sends the user an email with a secret key for creating a session. If the email address has never been used, a **new account is created** using the provided `userId`. Otherwise, if the email address is already attached to an account, the **user ID is ignored**. Then, the user will receive an email with the one-time password. Use the returned user ID and secret and 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 secret sent to the user's email is valid for 15 minutes.\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",
@@ -3259,7 +3267,7 @@
"properties": {
"userId": {
"type": "string",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -3314,7 +3322,7 @@
"weight": 25,
"cookies": false,
"type": "",
"demo": "account\/create-magic-u-r-l-token.md",
"demo": "account\/create-magic-url-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-magic-url.md",
"rate-limit": 60,
"rate-time": 3600,
@@ -3346,7 +3354,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the email address has never been used, a new account is created using the provided userId. Otherwise, if the email address is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -3402,7 +3410,7 @@
"weight": 24,
"cookies": false,
"type": "webAuth",
"demo": "account\/create-o-auth2token.md",
"demo": "account\/create-o-auth-2-token.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-token-oauth2.md",
"rate-limit": 50,
"rate-time": 3600,
@@ -3571,7 +3579,7 @@
"properties": {
"userId": {
"type": "string",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.",
"description": "Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars. If the phone number has never been used, a new account is created using the provided userId. Otherwise, if the phone number is already attached to an account, the user ID is ignored.",
"default": null,
"x-example": "<USER_ID>"
},
@@ -4877,7 +4885,7 @@
"weight": 65,
"cookies": false,
"type": "location",
"demo": "avatars\/get-q-r.md",
"demo": "avatars\/get-qr.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/avatars\/get-qr.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -6448,7 +6456,7 @@
"weight": 73,
"cookies": false,
"type": "",
"demo": "locale\/list-countries-e-u.md",
"demo": "locale\/list-countries-eu.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7567,7 +7575,7 @@
"weight": 420,
"cookies": false,
"type": "",
"demo": "tables-d-b\/list-rows.md",
"demo": "tablesdb\/list-rows.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/list-rows.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7648,7 +7656,7 @@
"weight": 412,
"cookies": false,
"type": "",
"demo": "tables-d-b\/create-row.md",
"demo": "tablesdb\/create-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/create-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7687,7 +7695,7 @@
}
],
"description": "Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/create-row.md"
"demo": "tables-db\/create-row.md"
}
],
"auth": {
@@ -7787,7 +7795,7 @@
"weight": 413,
"cookies": false,
"type": "",
"demo": "tables-d-b\/get-row.md",
"demo": "tablesdb\/get-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/get-row.md",
"rate-limit": 0,
"rate-time": 3600,
@@ -7876,7 +7884,7 @@
"weight": 416,
"cookies": false,
"type": "",
"demo": "tables-d-b\/upsert-row.md",
"demo": "tablesdb\/upsert-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/upsert-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -7914,7 +7922,7 @@
}
],
"description": "Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https:\/\/appwrite.io\/docs\/server\/tablesdb#tablesDBCreateTable) API or directly from your database console.",
"demo": "tables-d-b\/upsert-row.md"
"demo": "tables-db\/upsert-row.md"
}
],
"auth": {
@@ -8007,7 +8015,7 @@
"weight": 414,
"cookies": false,
"type": "",
"demo": "tables-d-b\/update-row.md",
"demo": "tablesdb\/update-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/update-row.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8103,7 +8111,7 @@
"weight": 418,
"cookies": false,
"type": "",
"demo": "tables-d-b\/delete-row.md",
"demo": "tablesdb\/delete-row.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/delete-row.md",
"rate-limit": 60,
"rate-time": 60,
@@ -8182,7 +8190,7 @@
"weight": 423,
"cookies": false,
"type": "",
"demo": "tables-d-b\/decrement-row-column.md",
"demo": "tablesdb\/decrement-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/decrement-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -8290,7 +8298,7 @@
"weight": 422,
"cookies": false,
"type": "",
"demo": "tables-d-b\/increment-row-column.md",
"demo": "tablesdb\/increment-row-column.md",
"edit": "https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/tablesdb\/increment-row-column.md",
"rate-limit": 120,
"rate-time": 60,
@@ -11330,7 +11338,7 @@
},
"$updatedAt": {
"type": "string",
"description": "Execution upate date in ISO 8601 format.",
"description": "Execution update date in ISO 8601 format.",
"x-example": "2020-10-15T06:38:00.000+00:00"
},
"$permissions": {
@@ -11348,6 +11356,11 @@
"description": "Function ID.",
"x-example": "5e5ea6g16897e"
},
"deploymentId": {
"type": "string",
"description": "Function's deployment ID used to create the execution.",
"x-example": "5e5ea5c16897e"
},
"trigger": {
"type": "string",
"description": "The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.",
@@ -11434,6 +11447,7 @@
"$updatedAt",
"$permissions",
"functionId",
"deploymentId",
"trigger",
"status",
"requestMethod",
@@ -11454,6 +11468,7 @@
"any"
],
"functionId": "5e5ea6g16897e",
"deploymentId": "5e5ea5c16897e",
"trigger": "http",
"status": "processing",
"requestMethod": "GET",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -1006,7 +1006,7 @@ return [
getFramework('NEXTJS', [
'providerRootDirectory' => './',
'installCommand' => 'pnpm install',
'buildCommand' => 'npm run build',
'buildCommand' => 'pnpm build',
]),
],
'vcsProvider' => 'github',
@@ -1015,7 +1015,7 @@ return [
'providerVersion' => '0.1.*',
'variables' => [
[
'name' => 'NEXT_PUBLIC_APPWRITE_FUNCTION_PROJECT_ID',
'name' => 'NEXT_PUBLIC_APPWRITE_FUNCTION_API_ENDPOINT',
'description' => 'Endpoint of Appwrite server',
'value' => '{apiEndpoint}',
'placeholder' => '{apiEndpoint}',
@@ -1023,7 +1023,7 @@ return [
'type' => 'text'
],
[
'name' => 'NEXT_PUBLIC_APPWRITE_FUNCTION_API_ENDPOINT',
'name' => 'NEXT_PUBLIC_APPWRITE_FUNCTION_PROJECT_ID',
'description' => 'Your Appwrite project ID',
'value' => '{projectId}',
'placeholder' => '{projectId}',
+17 -11
View File
@@ -2419,7 +2419,10 @@ App::put('/v1/account/sessions/magic-url')
)
],
contentType: ContentType::JSON,
deprecated: true,
deprecated: new Deprecated(
since: '1.6.0',
replaceWith: 'account.createSession'
),
))
->label('abuse-limit', 10)
->label('abuse-key', 'ip:{ip},userId:{param-userId}')
@@ -2457,7 +2460,10 @@ App::put('/v1/account/sessions/phone')
)
],
contentType: ContentType::JSON,
deprecated: true,
deprecated: new Deprecated(
since: '1.6.0',
replaceWith: 'account.createSession'
),
))
->label('abuse-limit', 10)
->label('abuse-key', 'ip:{ip},userId:{param-userId}')
@@ -4025,7 +4031,7 @@ App::get('/v1/account/mfa/factors')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'listMFAFactors',
replaceWith: 'account.listMFAFactors',
),
),
new Method(
@@ -4086,7 +4092,7 @@ App::post('/v1/account/mfa/authenticators/:type')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createMFAAuthenticator',
replaceWith: 'account.createMFAAuthenticator',
),
),
new Method(
@@ -4183,7 +4189,7 @@ App::put('/v1/account/mfa/authenticators/:type')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateMFAAuthenticator',
replaceWith: 'account.updateMFAAuthenticator',
),
),
new Method(
@@ -4273,7 +4279,7 @@ App::post('/v1/account/mfa/recovery-codes')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createMFARecoveryCodes',
replaceWith: 'account.createMFARecoveryCodes',
),
),
new Method(
@@ -4340,7 +4346,7 @@ App::patch('/v1/account/mfa/recovery-codes')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateMFARecoveryCodes',
replaceWith: 'account.updateMFARecoveryCodes',
),
),
new Method(
@@ -4402,7 +4408,7 @@ App::get('/v1/account/mfa/recovery-codes')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'getMFARecoveryCodes',
replaceWith: 'account.getMFARecoveryCodes',
),
),
new Method(
@@ -4461,7 +4467,7 @@ App::delete('/v1/account/mfa/authenticators/:type')
contentType: ContentType::NONE,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'deleteMFAAuthenticator',
replaceWith: 'account.deleteMFAAuthenticator',
),
),
new Method(
@@ -4527,7 +4533,7 @@ App::post('/v1/account/mfa/challenge')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createMFAChallenge',
replaceWith: 'account.createMFAChallenge',
),
),
new Method(
@@ -4769,7 +4775,7 @@ App::put('/v1/account/mfa/challenge')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateMFAChallenge',
replaceWith: 'account.updateMFAChallenge',
),
),
new Method(
+12 -12
View File
@@ -556,12 +556,12 @@ App::get('/v1/health/queue/deletes')
contentType: ContentType::JSON
))
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
->inject('publisher')
->inject('publisherDeletes')
->inject('response')
->action(function (int|string $threshold, Publisher $publisher, Response $response) {
->action(function (int|string $threshold, Publisher $publisherDeletes, Response $response) {
$threshold = \intval($threshold);
$size = $publisher->getQueueSize(new Queue(Event::DELETE_QUEUE_NAME));
$size = $publisherDeletes->getQueueSize(new Queue(Event::DELETE_QUEUE_NAME));
if ($size >= $threshold) {
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
@@ -589,12 +589,12 @@ App::get('/v1/health/queue/mails')
contentType: ContentType::JSON
))
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
->inject('publisher')
->inject('publisherMails')
->inject('response')
->action(function (int|string $threshold, Publisher $publisher, Response $response) {
->action(function (int|string $threshold, Publisher $publisherMails, Response $response) {
$threshold = \intval($threshold);
$size = $publisher->getQueueSize(new Queue(Event::MAILS_QUEUE_NAME));
$size = $publisherMails->getQueueSize(new Queue(Event::MAILS_QUEUE_NAME));
if ($size >= $threshold) {
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
@@ -622,12 +622,12 @@ App::get('/v1/health/queue/messaging')
contentType: ContentType::JSON
))
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
->inject('publisher')
->inject('publisherMessaging')
->inject('response')
->action(function (int|string $threshold, Publisher $publisher, Response $response) {
->action(function (int|string $threshold, Publisher $publisherMessaging, Response $response) {
$threshold = \intval($threshold);
$size = $publisher->getQueueSize(new Queue(Event::MESSAGING_QUEUE_NAME));
$size = $publisherMessaging->getQueueSize(new Queue(Event::MESSAGING_QUEUE_NAME));
if ($size >= $threshold) {
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
@@ -688,12 +688,12 @@ App::get('/v1/health/queue/functions')
contentType: ContentType::JSON
))
->param('threshold', 5000, new Integer(true), 'Queue size threshold. When hit (equal or higher), endpoint returns server error. Default value is 5000.', true)
->inject('publisher')
->inject('publisherFunctions')
->inject('response')
->action(function (int|string $threshold, Publisher $publisher, Response $response) {
->action(function (int|string $threshold, Publisher $publisherFunctions, Response $response) {
$threshold = \intval($threshold);
$size = $publisher->getQueueSize(new Queue(Event::FUNCTIONS_QUEUE_NAME));
$size = $publisherFunctions->getQueueSize(new Queue(Event::FUNCTIONS_QUEUE_NAME));
if ($size >= $threshold) {
throw new Exception(Exception::HEALTH_QUEUE_SIZE_EXCEEDED, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
+8 -8
View File
@@ -254,7 +254,7 @@ App::post('/v1/messaging/providers/smtp')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createSMTPProvider',
replaceWith: 'messaging.createSMTPProvider',
),
),
new Method(
@@ -787,7 +787,7 @@ App::post('/v1/messaging/providers/fcm')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createFCMProvider',
replaceWith: 'messaging.createFCMProvider',
),
),
new Method(
@@ -876,7 +876,7 @@ App::post('/v1/messaging/providers/apns')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createAPNSProvider',
replaceWith: 'messaging.createAPNSProvider',
),
),
new Method(
@@ -1395,7 +1395,7 @@ App::patch('/v1/messaging/providers/smtp/:providerId')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateSMTPProvider',
replaceWith: 'messaging.updateSMTPProvider',
),
),
new Method(
@@ -1986,7 +1986,7 @@ App::patch('/v1/messaging/providers/fcm/:providerId')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateFCMProvider',
replaceWith: 'messaging.updateFCMProvider',
),
),
new Method(
@@ -2081,7 +2081,7 @@ App::patch('/v1/messaging/providers/apns/:providerId')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateAPNSProvider',
replaceWith: 'messaging.updateAPNSProvider',
),
),
new Method(
@@ -3154,7 +3154,7 @@ App::post('/v1/messaging/messages/sms')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createSMS',
replaceWith: 'messaging.createSMS',
),
),
new Method(
@@ -4000,7 +4000,7 @@ App::patch('/v1/messaging/messages/sms/:messageId')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateSMS',
replaceWith: 'messaging.updateSMS',
),
),
new Method(
+7 -7
View File
@@ -635,7 +635,7 @@ App::patch('/v1/projects/:projectId/api')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateAPIStatus',
replaceWith: 'projects.updateAPIStatus',
),
),
new Method(
@@ -692,7 +692,7 @@ App::patch('/v1/projects/:projectId/api/all')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateAPIStatusAll',
replaceWith: 'projects.updateAPIStatusAll',
),
),
new Method(
@@ -2072,7 +2072,7 @@ App::patch('/v1/projects/:projectId/smtp')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateSMTP',
replaceWith: 'projects.updateSMTP',
),
),
new Method(
@@ -2188,7 +2188,7 @@ App::post('/v1/projects/:projectId/smtp/tests')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createSMTPTest',
replaceWith: 'projects.createSMTPTest',
),
),
new Method(
@@ -2282,7 +2282,7 @@ App::get('/v1/projects/:projectId/templates/sms/:type/:locale')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'getSMSTemplate',
replaceWith: 'projects.getSMSTemplate',
),
),
new Method(
@@ -2448,7 +2448,7 @@ App::patch('/v1/projects/:projectId/templates/sms/:type/:locale')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateSMSTemplate',
replaceWith: 'projects.updateSMSTemplate',
),
),
new Method(
@@ -2572,7 +2572,7 @@ App::delete('/v1/projects/:projectId/templates/sms/:type/:locale')
contentType: ContentType::JSON,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'deleteSMSTemplate',
replaceWith: 'projects.deleteSMSTemplate',
),
),
new Method(
+6 -6
View File
@@ -1772,7 +1772,7 @@ App::patch('/v1/users/:userId/mfa')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateMFA',
replaceWith: 'users.updateMFA',
),
),
new Method(
@@ -1831,7 +1831,7 @@ App::get('/v1/users/:userId/mfa/factors')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'listMFAFactors',
replaceWith: 'users.listMFAFactors',
),
),
new Method(
@@ -1889,7 +1889,7 @@ App::get('/v1/users/:userId/mfa/recovery-codes')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'getMFARecoveryCodes',
replaceWith: 'users.getMFARecoveryCodes',
),
),
new Method(
@@ -1953,7 +1953,7 @@ App::patch('/v1/users/:userId/mfa/recovery-codes')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'createMFARecoveryCodes',
replaceWith: 'users.createMFARecoveryCodes',
),
),
new Method(
@@ -2024,7 +2024,7 @@ App::put('/v1/users/:userId/mfa/recovery-codes')
],
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'updateMFARecoveryCodes',
replaceWith: 'users.updateMFARecoveryCodes',
),
),
new Method(
@@ -2095,7 +2095,7 @@ App::delete('/v1/users/:userId/mfa/authenticators/:type')
contentType: ContentType::NONE,
deprecated: new Deprecated(
since: '1.8.0',
replaceWith: 'deleteMFAAuthenticator',
replaceWith: 'users.deleteMFAAuthenticator',
),
),
new Method(
+4 -5
View File
@@ -624,8 +624,8 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
if (\is_string($logs) && \strlen($logs) > $maxLogLength) {
$warningMessage = "[WARNING] Logs truncated. The output exceeded {$maxLogLength} characters.\n";
$warningLength = \strlen($warningMessage);
$maxContentLength = $maxLogLength - $warningLength;
$logs = $warningMessage . \substr($logs, -$maxContentLength);
$maxContentLength = max(0, $maxLogLength - $warningLength);
$logs = $warningMessage . ($maxContentLength > 0 ? \substr($logs, -$maxContentLength) : '');
}
// Truncate errors if they exceed the limit
@@ -635,10 +635,9 @@ function router(App $utopia, Database $dbForPlatform, callable $getProjectDB, Sw
if (\is_string($errors) && \strlen($errors) > $maxErrorLength) {
$warningMessage = "[WARNING] Errors truncated. The output exceeded {$maxErrorLength} characters.\n";
$warningLength = \strlen($warningMessage);
$maxContentLength = $maxErrorLength - $warningLength;
$errors = $warningMessage . \substr($errors, -$maxContentLength);
$maxContentLength = max(0, $maxErrorLength - $warningLength);
$errors = $warningMessage . ($maxContentLength > 0 ? \substr($errors, -$maxContentLength) : '');
}
/** Update execution status */
$status = $executionResponse['statusCode'] >= 500 ? 'failed' : 'completed';
$execution->setAttribute('status', $status);
+10 -2
View File
@@ -29,6 +29,7 @@ use Utopia\Database\DateTime;
use Utopia\Database\Document;
use Utopia\Database\Helpers\Role;
use Utopia\Database\Validator\Authorization;
use Utopia\Queue\Broker\Pool as BrokerPool;
use Utopia\Queue\Publisher;
use Utopia\System\System;
use Utopia\Telemetry\Adapter as Telemetry;
@@ -60,6 +61,12 @@ $parseLabel = function (string $label, array $responsePayload, array $requestPar
return $label;
};
/**
* This isolated event handling for `users.*.create` which is based on a `Database::EVENT_DOCUMENT_CREATE` listener may look odd, but it is **intentional**.
*
* Accounts can be created in many ways beyond `createAccount`
* (anonymous, OAuth, phone, etc.), and those flows are probably not covered in event tests; so we handle this here.
*/
$eventDatabaseListener = function (Document $project, Document $document, Response $response, Event $queueForEvents, Func $queueForFunctions, Webhook $queueForWebhooks, Realtime $queueForRealtime) {
// Only trigger events for user creation with the database listener.
if ($document->getCollection() !== 'users') {
@@ -408,6 +415,7 @@ App::init()
->inject('project')
->inject('user')
->inject('publisher')
->inject('publisherFunctions')
->inject('queueForEvents')
->inject('queueForMessaging')
->inject('queueForAudits')
@@ -423,7 +431,7 @@ App::init()
->inject('plan')
->inject('devKey')
->inject('telemetry')
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Publisher $publisher, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, StatsUsage $queueForStatsUsage, Database $dbForProject, callable $timelimit, Document $resourceToken, string $mode, ?Key $apiKey, array $plan, Document $devKey, Telemetry $telemetry) use ($usageDatabaseListener, $eventDatabaseListener) {
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Publisher $publisher, BrokerPool $publisherFunctions, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, StatsUsage $queueForStatsUsage, Database $dbForProject, callable $timelimit, Document $resourceToken, string $mode, ?Key $apiKey, array $plan, Document $devKey, Telemetry $telemetry) use ($usageDatabaseListener, $eventDatabaseListener) {
$route = $utopia->getRoute();
@@ -535,7 +543,7 @@ App::init()
// Clone the queues, to prevent events triggered by the database listener
// from overwriting the events that are supposed to be triggered in the shutdown hook.
$queueForEventsClone = new Event($publisher);
$queueForFunctions = new Func($publisher);
$queueForFunctions = new Func($publisherFunctions);
$queueForWebhooks = new Webhook($publisher);
$queueForRealtime = new Realtime();
+12 -12
View File
@@ -87,24 +87,24 @@ App::setResource('publisher', function (Group $pools) {
App::setResource('publisherDatabases', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('publisherFunctions', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('publisherMigrations', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('publisherStatsUsage', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('consumer', function (Group $pools) {
return new BrokerPool(consumer: $pools->get('consumer'));
}, ['pools']);
App::setResource('consumerDatabases', function (BrokerPool $consumer) {
return $consumer;
}, ['consumer']);
App::setResource('consumerMigrations', function (BrokerPool $consumer) {
return $consumer;
}, ['consumer']);
App::setResource('consumerStatsUsage', function (BrokerPool $consumer) {
return $consumer;
}, ['consumer']);
App::setResource('publisherMails', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('publisherDeletes', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('publisherMessaging', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
App::setResource('queueForMessaging', function (Publisher $publisher) {
return new Messaging($publisher);
}, ['publisher']);
+7 -4
View File
@@ -6,26 +6,29 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 Not Found</title>
<link rel="preconnect" href="https://fonts.appwrite.io/">
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<style>
@font-face {
font-family: 'Inter';
src: url('https://fonts.appwrite.io/inter/Inter-Regular.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Inter';
src: url('https://fonts.appwrite.io/inter/Inter-Medium.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/inter/Inter-Medium.woff2') format('woff2');
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Fira Code';
src: url('https://fonts.appwrite.io/fira-code/FiraCode-Regular.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/fira-code/FiraCode-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
</style>
<style>
+4 -4
View File
@@ -107,18 +107,18 @@ switch ($type) {
<link rel="icon" type="image/svg+xml" href="<?php echo $url; ?>/images/logos/appwrite-icon.svg" />
<link rel="mask-icon" type="image/png" href="<?php echo $url; ?>/images/logos/appwrite-icon.png" />
<link rel="preconnect" href="https://fonts.appwrite.io/" crossorigin>
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<style>
@font-face {
font-family: 'Inter';
src: url('https://fonts.appwrite.io/inter/Inter-Regular.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Inter';
src: url('https://fonts.appwrite.io/inter/Inter-Medium.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/inter/Inter-Medium.woff2') format('woff2');
font-weight: 500;
font-style: normal;
font-display: swap;
@@ -126,7 +126,7 @@ switch ($type) {
@font-face {
font-family: 'Fira Code';
src: url('https://fonts.appwrite.io/fira-code/FiraCode-Regular.woff2') format('woff2');
src: url('https://assets.appwrite.io/fonts/fira-code/FiraCode-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
+8
View File
@@ -251,6 +251,10 @@ Server::setResource('publisherDatabases', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
Server::setResource('publisherFunctions', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
Server::setResource('publisherMigrations', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
@@ -259,6 +263,10 @@ Server::setResource('publisherStatsUsage', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
Server::setResource('publisherMessaging', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
Server::setResource('consumer', function (Group $pools) {
return new BrokerPool(consumer: $pools->get('consumer'));
}, ['pools']);
Generated
+8 -7
View File
@@ -3557,16 +3557,16 @@
},
{
"name": "utopia-php/database",
"version": "dev-spatial-attribute-support",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/ArnabChatterjee20k/php-utopia-database.git",
"reference": "88998edfc808821fc0c04883b922335ae090e5b5"
"url": "https://github.com/utopia-php/database.git",
"reference": "653e19d26c5607b9dce917c50737824772cd3dd8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ArnabChatterjee20k/php-utopia-database/zipball/88998edfc808821fc0c04883b922335ae090e5b5",
"reference": "88998edfc808821fc0c04883b922335ae090e5b5",
"url": "https://api.github.com/repos/utopia-php/database/zipball/653e19d26c5607b9dce917c50737824772cd3dd8",
"reference": "653e19d26c5607b9dce917c50737824772cd3dd8",
"shasum": ""
},
"require": {
@@ -3637,9 +3637,10 @@
"utopia"
],
"support": {
"source": "https://github.com/ArnabChatterjee20k/php-utopia-database/tree/spatial-attribute-support"
"issues": "https://github.com/utopia-php/database/issues",
"source": "https://github.com/utopia-php/database/tree/1.2.0"
},
"time": "2025-08-26T15:18:37+00:00"
"time": "2025-08-26T12:51:42+00:00"
},
{
"name": "utopia-php/detector",
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.createMfaAuthenticator(
account.createMFAAuthenticator(
AuthenticatorType.TOTP, // type
new CoroutineCallback<>((result, error) -> {
if (error != null) {
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.createMfaChallenge(
account.createMFAChallenge(
AuthenticationFactor.EMAIL, // factor
new CoroutineCallback<>((result, error) -> {
if (error != null) {
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.createMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
account.createMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.deleteMfaAuthenticator(
account.deleteMFAAuthenticator(
AuthenticatorType.TOTP, // type
new CoroutineCallback<>((result, error) -> {
if (error != null) {
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.getMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
account.getMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.listMfaFactors(new CoroutineCallback<>((result, error) -> {
account.listMFAFactors(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
@@ -9,7 +9,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.updateMfaAuthenticator(
account.updateMFAAuthenticator(
AuthenticatorType.TOTP, // type
"<OTP>", // otp
new CoroutineCallback<>((result, error) -> {
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.updateMfaChallenge(
account.updateMFAChallenge(
"<CHALLENGE_ID>", // challengeId
"<OTP>", // otp
new CoroutineCallback<>((result, error) -> {
@@ -8,7 +8,7 @@ Client client = new Client(context)
Account account = new Account(client);
account.updateMfaRecoveryCodes(new CoroutineCallback<>((result, error) -> {
account.updateMFARecoveryCodes(new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
@@ -1,25 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Databases;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setAdmin("") //
.setKey(""); //
Databases databases = new Databases(client);
databases.createDocuments(
"<DATABASE_ID>", // databaseId
"<COLLECTION_ID>", // collectionId
listOf(), // documents
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,26 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.createRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data
listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,24 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.deleteRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,25 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.getRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
listOf(), // queries (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,24 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.listRows(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
listOf(), // queries (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,26 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.updateRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,26 +0,0 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.Grids;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
Grids grids = new Grids(client);
grids.upsertRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data (optional)
listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
return;
}
Log.d("Appwrite", result.toString());
})
);
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.createRow(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.decrementRowColumn(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.deleteRow(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.getRow(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.incrementRowColumn(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.listRows(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.updateRow(
"<DATABASE_ID>", // databaseId
@@ -1,12 +1,12 @@
import io.appwrite.Client;
import io.appwrite.coroutines.CoroutineCallback;
import io.appwrite.services.TablesDb;
import io.appwrite.services.TablesDB;
Client client = new Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
TablesDb tablesDB = new TablesDb(client);
TablesDB tablesDB = new TablesDB(client);
tablesDB.upsertRow(
"<DATABASE_ID>", // databaseId
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
val result = account.createMfaAuthenticator(
val result = account.createMFAAuthenticator(
type = AuthenticatorType.TOTP,
)
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
val result = account.createMfaChallenge(
val result = account.createMFAChallenge(
factor = AuthenticationFactor.EMAIL,
)
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
val result = account.createMfaRecoveryCodes()
val result = account.createMFARecoveryCodes()
@@ -9,6 +9,6 @@ val client = Client(context)
val account = Account(client)
val result = account.deleteMfaAuthenticator(
val result = account.deleteMFAAuthenticator(
type = AuthenticatorType.TOTP,
)
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
val result = account.getMfaRecoveryCodes()
val result = account.getMFARecoveryCodes()
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
val result = account.listMfaFactors()
val result = account.listMFAFactors()
@@ -9,7 +9,7 @@ val client = Client(context)
val account = Account(client)
val result = account.updateMfaAuthenticator(
val result = account.updateMFAAuthenticator(
type = AuthenticatorType.TOTP,
otp = "<OTP>",
)
@@ -8,7 +8,7 @@ val client = Client(context)
val account = Account(client)
val result = account.updateMfaChallenge(
val result = account.updateMFAChallenge(
challengeId = "<CHALLENGE_ID>",
otp = "<OTP>",
)
@@ -8,4 +8,4 @@ val client = Client(context)
val account = Account(client)
val result = account.updateMfaRecoveryCodes()
val result = account.updateMFARecoveryCodes()
@@ -1,16 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Databases
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setAdmin("") //
.setKey("") //
val databases = Databases(client)
val result = databases.createDocuments(
databaseId = "<DATABASE_ID>",
collectionId = "<COLLECTION_ID>",
documents = listOf(),
)
@@ -1,17 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.createRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ),
permissions = listOf("read("any")"), // (optional)
)
@@ -1,15 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.deleteRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
)
@@ -1,16 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.getRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
queries = listOf(), // (optional)
)
@@ -1,15 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.listRows(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
queries = listOf(), // (optional)
)
@@ -1,17 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.updateRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ), // (optional)
permissions = listOf("read("any")"), // (optional)
)
@@ -1,17 +0,0 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.Grids
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val grids = Grids(client)
val result = grids.upsertRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ), // (optional)
permissions = listOf("read("any")"), // (optional)
)
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.createRow(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.decrementRowColumn(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.deleteRow(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.getRow(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.incrementRowColumn(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.listRows(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.updateRow(
databaseId = "<DATABASE_ID>",
@@ -1,12 +1,12 @@
import io.appwrite.Client
import io.appwrite.coroutines.CoroutineCallback
import io.appwrite.services.TablesDb
import io.appwrite.services.TablesDB
val client = Client(context)
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
.setProject("<YOUR_PROJECT_ID>") // Your project ID
val tablesDB = TablesDb(client)
val tablesDB = TablesDB(client)
val result = tablesDB.upsertRow(
databaseId = "<DATABASE_ID>",
@@ -7,7 +7,7 @@ let client = Client()
let account = Account(client)
let mfaType = try await account.createMfaAuthenticator(
let mfaType = try await account.createMFAAuthenticator(
type: .totp
)
@@ -7,7 +7,7 @@ let client = Client()
let account = Account(client)
let mfaChallenge = try await account.createMfaChallenge(
let mfaChallenge = try await account.createMFAChallenge(
factor: .email
)
@@ -6,5 +6,5 @@ let client = Client()
let account = Account(client)
let mfaRecoveryCodes = try await account.createMfaRecoveryCodes()
let mfaRecoveryCodes = try await account.createMFARecoveryCodes()

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