Skip to content

Instantly share code, notes, and snippets.

@kerbymart
Created July 17, 2025 23:15
Show Gist options
  • Save kerbymart/0a7e3d80d2caa7650e7303c55e7fdc5f to your computer and use it in GitHub Desktop.
Save kerbymart/0a7e3d80d2caa7650e7303c55e7fdc5f to your computer and use it in GitHub Desktop.
openapi: 3.0.0
info:
version: 1.6.2
title: Appwrite
description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
termsOfService: https://appwrite.io/policy/terms
contact:
name: Appwrite Team
url: https://appwrite.io/support
email: [email protected]
license:
name: BSD-3-Clause
url: https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE
servers:
- url: https://cloud.appwrite.io/v1
- url: https://<REGION>.cloud.appwrite.io/v1
paths:
/account:
get:
summary: Get account
operationId: accountGet
tags:
- account
description: Get the currently logged in user.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: get
group: account
weight: 9
cookies: false
type: ''
deprecated: false
demo: account/get.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/get.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
post:
summary: Create account
operationId: accountCreate
tags:
- account
description: Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession).
responses:
'201':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: create
group: account
weight: 8
cookies: false
type: ''
deprecated: false
demo: account/create.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
email:
type: string
description: User email.
x-example: [email protected]
password:
type: string
description: New user password. Must be between 8 and 256 chars.
x-example: null
name:
type: string
description: 'User name. Max length: 128 chars.'
x-example: <NAME>
required:
- userId
- email
- password
/account/email:
patch:
summary: Update email
operationId: accountUpdateEmail
tags:
- account
description: |
Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.
This endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updateEmail
group: account
weight: 34
cookies: false
type: ''
deprecated: false
demo: account/update-email.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-email.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: User email.
x-example: [email protected]
password:
type: string
description: User password. Must be at least 8 chars.
x-example: password
required:
- email
- password
/account/identities:
get:
summary: List identities
operationId: accountListIdentities
tags:
- account
description: Get the list of identities for the currently logged in user.
responses:
'200':
description: Identities List
content:
application/json:
schema:
$ref: '#/components/schemas/identityList'
x-appwrite:
method: listIdentities
group: identities
weight: 57
cookies: false
type: ''
deprecated: false
demo: account/list-identities.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/list-identities.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry'
required: false
schema:
type: array
items:
type: string
default: []
in: query
/account/identities/{identityId}:
delete:
summary: Delete identity
operationId: accountDeleteIdentity
tags:
- account
description: Delete an identity by its unique ID.
responses:
'204':
description: No content
x-appwrite:
method: deleteIdentity
group: identities
weight: 58
cookies: false
type: ''
deprecated: false
demo: account/delete-identity.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/delete-identity.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: identityId
description: Identity ID.
required: true
schema:
type: string
x-example: <IDENTITY_ID>
in: path
/account/jwts:
post:
summary: Create JWT
operationId: accountCreateJWT
tags:
- account
description: Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.
responses:
'201':
description: JWT
content:
application/json:
schema:
$ref: '#/components/schemas/jwt'
x-appwrite:
method: createJWT
group: tokens
weight: 29
cookies: false
type: ''
deprecated: false
demo: account/create-j-w-t.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-jwt.md
rate-limit: 100
rate-time: 3600
rate-key: url:{url},userId:{userId}
scope: account
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
/account/logs:
get:
summary: List logs
operationId: accountListLogs
tags:
- account
description: Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.
responses:
'200':
description: Logs List
content:
application/json:
schema:
$ref: '#/components/schemas/logList'
x-appwrite:
method: listLogs
group: logs
weight: 31
cookies: false
type: ''
deprecated: false
demo: account/list-logs.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/list-logs.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: queries
description: Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Only supported methods are limit and offset
required: false
schema:
type: array
items:
type: string
default: []
in: query
/account/mfa:
patch:
summary: Update MFA
operationId: accountUpdateMFA
tags:
- account
description: Enable or disable MFA on an account.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updateMFA
group: mfa
weight: 44
cookies: false
type: ''
deprecated: false
demo: account/update-m-f-a.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-mfa.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
mfa:
type: boolean
description: Enable or disable MFA.
x-example: false
required:
- mfa
/account/mfa/authenticators/{type}:
post:
summary: Create authenticator
operationId: accountCreateMfaAuthenticator
tags:
- account
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.
responses:
'200':
description: MFAType
content:
application/json:
schema:
$ref: '#/components/schemas/mfaType'
x-appwrite:
method: createMfaAuthenticator
group: mfa
weight: 46
cookies: false
type: ''
deprecated: false
demo: account/create-mfa-authenticator.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-mfa-authenticator.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: type
description: Type of authenticator. Must be `totp`
required: true
schema:
type: string
x-example: totp
enum:
- totp
x-enum-name: AuthenticatorType
x-enum-keys: []
in: path
put:
summary: Update authenticator (confirmation)
operationId: accountUpdateMfaAuthenticator
tags:
- account
description: Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updateMfaAuthenticator
group: mfa
weight: 47
cookies: false
type: ''
deprecated: false
demo: account/update-mfa-authenticator.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-mfa-authenticator.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: type
description: Type of authenticator.
required: true
schema:
type: string
x-example: totp
enum:
- totp
x-enum-name: AuthenticatorType
x-enum-keys: []
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
otp:
type: string
description: Valid verification token.
x-example: <OTP>
required:
- otp
delete:
summary: Delete authenticator
operationId: accountDeleteMfaAuthenticator
tags:
- account
description: Delete an authenticator for a user by ID.
responses:
'204':
description: No content
x-appwrite:
method: deleteMfaAuthenticator
group: mfa
weight: 51
cookies: false
type: ''
deprecated: false
demo: account/delete-mfa-authenticator.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/delete-mfa-authenticator.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: type
description: Type of authenticator.
required: true
schema:
type: string
x-example: totp
enum:
- totp
x-enum-name: AuthenticatorType
x-enum-keys: []
in: path
/account/mfa/challenge:
post:
summary: Create MFA challenge
operationId: accountCreateMfaChallenge
tags:
- account
description: Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method.
responses:
'201':
description: MFA Challenge
content:
application/json:
schema:
$ref: '#/components/schemas/mfaChallenge'
x-appwrite:
method: createMfaChallenge
group: mfa
weight: 52
cookies: false
type: ''
deprecated: false
demo: account/create-mfa-challenge.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-mfa-challenge.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},userId:{userId}
scope: account
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
properties:
factor:
type: string
description: 'Factor used for verification. Must be one of following: `email`, `phone`, `totp`, `recoveryCode`.'
x-example: email
enum:
- email
- phone
- totp
- recoverycode
x-enum-name: AuthenticationFactor
x-enum-keys: []
required:
- factor
put:
summary: Update MFA challenge (confirmation)
operationId: accountUpdateMfaChallenge
tags:
- account
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.
responses:
'200':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: updateMfaChallenge
group: mfa
weight: 53
cookies: false
type: ''
deprecated: false
demo: account/update-mfa-challenge.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-mfa-challenge.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},challengeId:{param-challengeId}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
challengeId:
type: string
description: ID of the challenge.
x-example: <CHALLENGE_ID>
otp:
type: string
description: Valid verification token.
x-example: <OTP>
required:
- challengeId
- otp
/account/mfa/factors:
get:
summary: List factors
operationId: accountListMfaFactors
tags:
- account
description: List the factors available on the account to be used as a MFA challange.
responses:
'200':
description: MFAFactors
content:
application/json:
schema:
$ref: '#/components/schemas/mfaFactors'
x-appwrite:
method: listMfaFactors
group: mfa
weight: 45
cookies: false
type: ''
deprecated: false
demo: account/list-mfa-factors.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/list-mfa-factors.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/account/mfa/recovery-codes:
get:
summary: List MFA recovery codes
operationId: accountGetMfaRecoveryCodes
tags:
- account
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.
responses:
'200':
description: MFA Recovery Codes
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRecoveryCodes'
x-appwrite:
method: getMfaRecoveryCodes
group: mfa
weight: 50
cookies: false
type: ''
deprecated: false
demo: account/get-mfa-recovery-codes.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/get-mfa-recovery-codes.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
post:
summary: Create MFA recovery codes
operationId: accountCreateMfaRecoveryCodes
tags:
- account
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.
responses:
'201':
description: MFA Recovery Codes
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRecoveryCodes'
x-appwrite:
method: createMfaRecoveryCodes
group: mfa
weight: 48
cookies: false
type: ''
deprecated: false
demo: account/create-mfa-recovery-codes.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-mfa-recovery-codes.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
patch:
summary: Update MFA recovery codes (regenerate)
operationId: accountUpdateMfaRecoveryCodes
tags:
- account
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.
responses:
'200':
description: MFA Recovery Codes
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRecoveryCodes'
x-appwrite:
method: updateMfaRecoveryCodes
group: mfa
weight: 49
cookies: false
type: ''
deprecated: false
demo: account/update-mfa-recovery-codes.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-mfa-recovery-codes.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/account/name:
patch:
summary: Update name
operationId: accountUpdateName
tags:
- account
description: Update currently logged in user account name.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updateName
group: account
weight: 32
cookies: false
type: ''
deprecated: false
demo: account/update-name.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-name.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'User name. Max length: 128 chars.'
x-example: <NAME>
required:
- name
/account/password:
patch:
summary: Update password
operationId: accountUpdatePassword
tags:
- account
description: Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updatePassword
group: account
weight: 33
cookies: false
type: ''
deprecated: false
demo: account/update-password.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-password.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
password:
type: string
description: New user password. Must be at least 8 chars.
x-example: null
oldPassword:
type: string
description: Current user password. Must be at least 8 chars.
x-example: password
required:
- password
/account/phone:
patch:
summary: Update phone
operationId: accountUpdatePhone
tags:
- account
description: Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updatePhone
group: account
weight: 35
cookies: false
type: ''
deprecated: false
demo: account/update-phone.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-phone.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
phone:
type: string
description: Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.
x-example: '+12065550100'
password:
type: string
description: User password. Must be at least 8 chars.
x-example: password
required:
- phone
- password
/account/prefs:
get:
summary: Get account preferences
operationId: accountGetPrefs
tags:
- account
description: Get the preferences as a key-value object for the currently logged in user.
responses:
'200':
description: Preferences
content:
application/json:
schema:
$ref: '#/components/schemas/preferences'
x-appwrite:
method: getPrefs
group: account
weight: 30
cookies: false
type: ''
deprecated: false
demo: account/get-prefs.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/get-prefs.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
patch:
summary: Update preferences
operationId: accountUpdatePrefs
tags:
- account
description: Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updatePrefs
group: account
weight: 36
cookies: false
type: ''
deprecated: false
demo: account/update-prefs.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-prefs.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
prefs:
type: object
description: Prefs key-value JSON object.
x-example: '{}'
required:
- prefs
/account/recovery:
post:
summary: Create password recovery
operationId: accountCreateRecovery
tags:
- account
description: Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createRecovery
group: recovery
weight: 38
cookies: false
type: ''
deprecated: false
demo: account/create-recovery.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-recovery.md
rate-limit: 10
rate-time: 3600
rate-key:
- url:{url},email:{param-email}
- url:{url},ip:{ip}
scope: sessions.write
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: User email.
x-example: [email protected]
url:
type: string
description: URL to redirect the user back to your app from the recovery email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
x-example: https://example.com
required:
- email
- url
put:
summary: Update password recovery (confirmation)
operationId: accountUpdateRecovery
tags:
- account
description: |-
Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint.
Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.
responses:
'200':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: updateRecovery
group: recovery
weight: 39
cookies: false
type: ''
deprecated: false
demo: account/update-recovery.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-recovery.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},userId:{param-userId}
scope: sessions.write
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
userId:
type: string
description: User ID.
x-example: <USER_ID>
secret:
type: string
description: Valid reset token.
x-example: <SECRET>
password:
type: string
description: New user password. Must be between 8 and 256 chars.
x-example: null
required:
- userId
- secret
- password
/account/sessions:
get:
summary: List sessions
operationId: accountListSessions
tags:
- account
description: Get the list of active sessions across different devices for the currently logged in user.
responses:
'200':
description: Sessions List
content:
application/json:
schema:
$ref: '#/components/schemas/sessionList'
x-appwrite:
method: listSessions
group: sessions
weight: 11
cookies: false
type: ''
deprecated: false
demo: account/list-sessions.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/list-sessions.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
delete:
summary: Delete sessions
operationId: accountDeleteSessions
tags:
- account
description: Delete all sessions from the user account and remove any sessions cookies from the end client.
responses:
'204':
description: No content
x-appwrite:
method: deleteSessions
group: sessions
weight: 12
cookies: false
type: ''
deprecated: false
demo: account/delete-sessions.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/delete-sessions.md
rate-limit: 100
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/account/sessions/anonymous:
post:
summary: Create anonymous session
operationId: accountCreateAnonymousSession
tags:
- account
description: Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session).
responses:
'201':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: createAnonymousSession
group: sessions
weight: 17
cookies: false
type: ''
deprecated: false
demo: account/create-anonymous-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session-anonymous.md
rate-limit: 50
rate-time: 3600
rate-key: ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
/account/sessions/email:
post:
summary: Create email password session
operationId: accountCreateEmailPasswordSession
tags:
- account
description: |-
Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'201':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: createEmailPasswordSession
group: sessions
weight: 16
cookies: false
type: ''
deprecated: false
demo: account/create-email-password-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session-email-password.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},email:{param-email}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: User email.
x-example: [email protected]
password:
type: string
description: User password. Must be at least 8 chars.
x-example: password
required:
- email
- password
/account/sessions/magic-url:
put:
summary: Update magic URL session
operationId: accountUpdateMagicURLSession
tags:
- account
description: Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.
responses:
'201':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: updateMagicURLSession
group: sessions
weight: 26
cookies: false
type: ''
deprecated: true
demo: account/update-magic-u-r-l-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session.md
rate-limit: 10
rate-time: 3600
rate-key: ip:{ip},userId:{param-userId}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
secret:
type: string
description: Valid verification token.
x-example: <SECRET>
required:
- userId
- secret
/account/sessions/oauth2/{provider}:
get:
summary: Create OAuth2 session
operationId: accountCreateOAuth2Session
tags:
- account
description: |
Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.
If there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'301':
description: File
x-appwrite:
method: createOAuth2Session
group: sessions
weight: 19
cookies: false
type: webAuth
deprecated: false
demo: account/create-o-auth2session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session-oauth2.md
rate-limit: 50
rate-time: 3600
rate-key: ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
parameters:
- name: provider
description: 'OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, figma, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.'
required: true
schema:
type: string
x-example: amazon
enum:
- amazon
- apple
- auth0
- authentik
- autodesk
- bitbucket
- bitly
- box
- dailymotion
- discord
- disqus
- dropbox
- etsy
- facebook
- figma
- github
- gitlab
- google
- linkedin
- microsoft
- notion
- oidc
- okta
- paypal
- paypalSandbox
- podio
- salesforce
- slack
- spotify
- stripe
- tradeshift
- tradeshiftBox
- twitch
- wordpress
- yahoo
- yammer
- yandex
- zoho
- zoom
- mock
x-enum-name: OAuthProvider
x-enum-keys: []
in: path
- name: success
description: URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
required: false
schema:
type: string
format: url
x-example: https://example.com
default: ''
in: query
- name: failure
description: URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
required: false
schema:
type: string
format: url
x-example: https://example.com
default: ''
in: query
- name: scopes
description: A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.
required: false
schema:
type: array
items:
type: string
default: []
in: query
/account/sessions/phone:
put:
summary: Update phone session
operationId: accountUpdatePhoneSession
tags:
- account
description: Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.
responses:
'201':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: updatePhoneSession
group: sessions
weight: 27
cookies: false
type: ''
deprecated: true
demo: account/update-phone-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session.md
rate-limit: 10
rate-time: 3600
rate-key: ip:{ip},userId:{param-userId}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
secret:
type: string
description: Valid verification token.
x-example: <SECRET>
required:
- userId
- secret
/account/sessions/token:
post:
summary: Create session
operationId: accountCreateSession
tags:
- account
description: Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.
responses:
'201':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: createSession
group: sessions
weight: 18
cookies: false
type: ''
deprecated: false
demo: account/create-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-session.md
rate-limit: 10
rate-time: 3600
rate-key: ip:{ip},userId:{param-userId}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
secret:
type: string
description: Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods.
x-example: <SECRET>
required:
- userId
- secret
/account/sessions/{sessionId}:
get:
summary: Get session
operationId: accountGetSession
tags:
- account
description: Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.
responses:
'200':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: getSession
group: sessions
weight: 13
cookies: false
type: ''
deprecated: false
demo: account/get-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/get-session.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: sessionId
description: Session ID. Use the string 'current' to get the current device session.
required: true
schema:
type: string
x-example: <SESSION_ID>
in: path
patch:
summary: Update session
operationId: accountUpdateSession
tags:
- account
description: Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider.
responses:
'200':
description: Session
content:
application/json:
schema:
$ref: '#/components/schemas/session'
x-appwrite:
method: updateSession
group: sessions
weight: 15
cookies: false
type: ''
deprecated: false
demo: account/update-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-session.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: sessionId
description: Session ID. Use the string 'current' to update the current device session.
required: true
schema:
type: string
x-example: <SESSION_ID>
in: path
delete:
summary: Delete session
operationId: accountDeleteSession
tags:
- account
description: Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead.
responses:
'204':
description: No content
x-appwrite:
method: deleteSession
group: sessions
weight: 14
cookies: false
type: ''
deprecated: false
demo: account/delete-session.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/delete-session.md
rate-limit: 100
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: sessionId
description: Session ID. Use the string 'current' to delete the current device session.
required: true
schema:
type: string
x-example: <SESSION_ID>
in: path
/account/status:
patch:
summary: Update status
operationId: accountUpdateStatus
tags:
- account
description: Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
x-appwrite:
method: updateStatus
group: account
weight: 37
cookies: false
type: ''
deprecated: false
demo: account/update-status.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-status.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/account/targets/push:
post:
summary: Create push target
operationId: accountCreatePushTarget
tags:
- account
description: Use this endpoint to register a device for push notifications. Provide a target ID (custom or generated using ID.unique()), a device identifier (usually a device token), and optionally specify which provider should send notifications to this target. The target is automatically linked to the current session and includes device information like brand and model.
responses:
'201':
description: Target
content:
application/json:
schema:
$ref: '#/components/schemas/target'
x-appwrite:
method: createPushTarget
group: pushTargets
weight: 54
cookies: false
type: ''
deprecated: false
demo: account/create-push-target.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-push-target.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: targets.write
platforms:
- client
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
requestBody:
content:
application/json:
schema:
type: object
properties:
targetId:
type: string
description: Target 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.
x-example: <TARGET_ID>
identifier:
type: string
description: The target identifier (token, email, phone etc.)
x-example: <IDENTIFIER>
providerId:
type: string
description: Provider ID. Message will be sent to this target from the specified provider ID. If no provider ID is set the first setup provider will be used.
x-example: <PROVIDER_ID>
required:
- targetId
- identifier
/account/targets/{targetId}/push:
put:
summary: Update push target
operationId: accountUpdatePushTarget
tags:
- account
description: Update the currently logged in user's push notification target. You can modify the target's identifier (device token) and provider ID (token, email, phone etc.). The target must exist and belong to the current user. If you change the provider ID, notifications will be sent through the new messaging provider instead.
responses:
'200':
description: Target
content:
application/json:
schema:
$ref: '#/components/schemas/target'
x-appwrite:
method: updatePushTarget
group: pushTargets
weight: 55
cookies: false
type: ''
deprecated: false
demo: account/update-push-target.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-push-target.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: targets.write
platforms:
- client
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
parameters:
- name: targetId
description: Target ID.
required: true
schema:
type: string
x-example: <TARGET_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
identifier:
type: string
description: The target identifier (token, email, phone etc.)
x-example: <IDENTIFIER>
required:
- identifier
delete:
summary: Delete push target
operationId: accountDeletePushTarget
tags:
- account
description: Delete a push notification target for the currently logged in user. After deletion, the device will no longer receive push notifications. The target must exist and belong to the current user.
responses:
'204':
description: No content
x-appwrite:
method: deletePushTarget
group: pushTargets
weight: 56
cookies: false
type: ''
deprecated: false
demo: account/delete-push-target.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/delete-push-target.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: targets.write
platforms:
- client
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
parameters:
- name: targetId
description: Target ID.
required: true
schema:
type: string
x-example: <TARGET_ID>
in: path
/account/tokens/email:
post:
summary: Create email token (OTP)
operationId: accountCreateEmailToken
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.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createEmailToken
group: tokens
weight: 25
cookies: false
type: ''
deprecated: false
demo: account/create-email-token.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-token-email.md
rate-limit: 10
rate-time: 3600
rate-key:
- url:{url},email:{param-email}
- url:{url},ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
email:
type: string
description: User email.
x-example: [email protected]
phrase:
type: boolean
description: Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.
x-example: false
required:
- userId
- email
/account/tokens/magic-url:
post:
summary: Create magic URL token
operationId: accountCreateMagicURLToken
tags:
- account
description: |
Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createMagicURLToken
group: tokens
weight: 24
cookies: false
type: ''
deprecated: false
demo: account/create-magic-u-r-l-token.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-token-magic-url.md
rate-limit: 60
rate-time: 3600
rate-key:
- url:{url},email:{param-email}
- url:{url},ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
email:
type: string
description: User email.
x-example: [email protected]
url:
type: string
description: URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
x-example: https://example.com
phrase:
type: boolean
description: Toggle for security phrase. If enabled, email will be send with a randomly generated phrase and the phrase will also be included in the response. Confirming phrases match increases the security of your authentication flow.
x-example: false
required:
- userId
- email
/account/tokens/oauth2/{provider}:
get:
summary: Create OAuth2 token
operationId: accountCreateOAuth2Token
tags:
- account
description: |-
Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.
If authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'301':
description: File
x-appwrite:
method: createOAuth2Token
group: tokens
weight: 23
cookies: false
type: webAuth
deprecated: false
demo: account/create-o-auth2token.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-token-oauth2.md
rate-limit: 50
rate-time: 3600
rate-key: ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
parameters:
- name: provider
description: 'OAuth2 Provider. Currently, supported providers are: amazon, apple, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, figma, github, gitlab, google, linkedin, microsoft, notion, oidc, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoho, zoom.'
required: true
schema:
type: string
x-example: amazon
enum:
- amazon
- apple
- auth0
- authentik
- autodesk
- bitbucket
- bitly
- box
- dailymotion
- discord
- disqus
- dropbox
- etsy
- facebook
- figma
- github
- gitlab
- google
- linkedin
- microsoft
- notion
- oidc
- okta
- paypal
- paypalSandbox
- podio
- salesforce
- slack
- spotify
- stripe
- tradeshift
- tradeshiftBox
- twitch
- wordpress
- yahoo
- yammer
- yandex
- zoho
- zoom
- mock
x-enum-name: OAuthProvider
x-enum-keys: []
in: path
- name: success
description: URL to redirect back to your app after a successful login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
required: false
schema:
type: string
format: url
x-example: https://example.com
default: ''
in: query
- name: failure
description: URL to redirect back to your app after a failed login attempt. Only URLs from hostnames in your project's platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
required: false
schema:
type: string
format: url
x-example: https://example.com
default: ''
in: query
- name: scopes
description: A list of custom OAuth2 scopes. Check each provider internal docs for a list of supported scopes. Maximum of 100 scopes are allowed, each 4096 characters long.
required: false
schema:
type: array
items:
type: string
default: []
in: query
/account/tokens/phone:
post:
summary: Create phone token
operationId: accountCreatePhoneToken
tags:
- account
description: |-
Sends the user an SMS 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 phone is valid for 15 minutes.
A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createPhoneToken
group: tokens
weight: 28
cookies: false
type: ''
deprecated: false
demo: account/create-phone-token.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-token-phone.md
rate-limit: 10
rate-time: 3600
rate-key:
- url:{url},phone:{param-phone}
- url:{url},ip:{ip}
scope: sessions.write
platforms:
- server
- client
packaging: false
auth:
Project: []
security:
- Project: []
requestBody:
content:
application/json:
schema:
type: object
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.
x-example: <USER_ID>
phone:
type: string
description: Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.
x-example: '+12065550100'
required:
- userId
- phone
/account/verification:
post:
summary: Create email verification
operationId: accountCreateVerification
tags:
- account
description: |
Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.
Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createVerification
group: verification
weight: 40
cookies: false
type: ''
deprecated: false
demo: account/create-verification.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-email-verification.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},userId:{userId}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: URL to redirect the user back to your app from the verification email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
x-example: https://example.com
required:
- url
put:
summary: Update email verification (confirmation)
operationId: accountUpdateVerification
tags:
- account
description: Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.
responses:
'200':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: updateVerification
group: verification
weight: 41
cookies: false
type: ''
deprecated: false
demo: account/update-verification.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-email-verification.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},userId:{param-userId}
scope: public
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
userId:
type: string
description: User ID.
x-example: <USER_ID>
secret:
type: string
description: Valid verification token.
x-example: <SECRET>
required:
- userId
- secret
/account/verification/phone:
post:
summary: Create phone verification
operationId: accountCreatePhoneVerification
tags:
- account
description: Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.
responses:
'201':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: createPhoneVerification
group: verification
weight: 42
cookies: false
type: ''
deprecated: false
demo: account/create-phone-verification.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/create-phone-verification.md
rate-limit: 10
rate-time: 3600
rate-key:
- url:{url},userId:{userId}
- url:{url},ip:{ip}
scope: account
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
put:
summary: Update phone verification (confirmation)
operationId: accountUpdatePhoneVerification
tags:
- account
description: Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.
responses:
'200':
description: Token
content:
application/json:
schema:
$ref: '#/components/schemas/token'
x-appwrite:
method: updatePhoneVerification
group: verification
weight: 43
cookies: false
type: ''
deprecated: false
demo: account/update-phone-verification.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/account/update-phone-verification.md
rate-limit: 10
rate-time: 3600
rate-key: userId:{param-userId}
scope: public
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
userId:
type: string
description: User ID.
x-example: <USER_ID>
secret:
type: string
description: Valid verification token.
x-example: <SECRET>
required:
- userId
- secret
/avatars/browsers/{code}:
get:
summary: Get browser icon
operationId: avatarsGetBrowser
tags:
- avatars
description: |-
You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.
When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.
responses:
'200':
description: Image
x-appwrite:
method: getBrowser
group: null
weight: 60
cookies: false
type: location
deprecated: false
demo: avatars/get-browser.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-browser.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: code
description: Browser Code.
required: true
schema:
type: string
x-example: aa
enum:
- aa
- an
- ch
- ci
- cm
- cr
- ff
- sf
- mf
- ps
- oi
- om
- op
- 'on'
x-enum-name: Browser
x-enum-keys:
- Avant Browser
- Android WebView Beta
- Google Chrome
- Google Chrome (iOS)
- Google Chrome (Mobile)
- Chromium
- Mozilla Firefox
- Safari
- Mobile Safari
- Microsoft Edge
- Microsoft Edge (iOS)
- Opera Mini
- Opera
- Opera (Next)
in: path
- name: width
description: Image width. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: height
description: Image height. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: quality
description: Image quality. Pass an integer between 0 to 100. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
/avatars/credit-cards/{code}:
get:
summary: Get credit card icon
operationId: avatarsGetCreditCard
tags:
- avatars
description: |
The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.
When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.
responses:
'200':
description: Image
x-appwrite:
method: getCreditCard
group: null
weight: 59
cookies: false
type: location
deprecated: false
demo: avatars/get-credit-card.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-credit-card.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: code
description: 'Credit Card Code. Possible values: amex, argencard, cabal, cencosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro, rupay.'
required: true
schema:
type: string
x-example: amex
enum:
- amex
- argencard
- cabal
- cencosud
- diners
- discover
- elo
- hipercard
- jcb
- mastercard
- naranja
- targeta-shopping
- union-china-pay
- visa
- mir
- maestro
- rupay
x-enum-name: CreditCard
x-enum-keys:
- American Express
- Argencard
- Cabal
- Cencosud
- Diners Club
- Discover
- Elo
- Hipercard
- JCB
- Mastercard
- Naranja
- Tarjeta Shopping
- Union China Pay
- Visa
- MIR
- Maestro
- Rupay
in: path
- name: width
description: Image width. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: height
description: Image height. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: quality
description: Image quality. Pass an integer between 0 to 100. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
/avatars/favicon:
get:
summary: Get favicon
operationId: avatarsGetFavicon
tags:
- avatars
description: |-
Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.
This endpoint does not follow HTTP redirects.
responses:
'200':
description: Image
x-appwrite:
method: getFavicon
group: null
weight: 63
cookies: false
type: location
deprecated: false
demo: avatars/get-favicon.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-favicon.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: url
description: Website URL which you want to fetch the favicon from.
required: true
schema:
type: string
format: url
x-example: https://example.com
in: query
/avatars/flags/{code}:
get:
summary: Get country flag
operationId: avatarsGetFlag
tags:
- avatars
description: |
You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.
When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.
responses:
'200':
description: Image
x-appwrite:
method: getFlag
group: null
weight: 61
cookies: false
type: location
deprecated: false
demo: avatars/get-flag.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-flag.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: code
description: Country Code. ISO Alpha-2 country code format.
required: true
schema:
type: string
x-example: af
enum:
- af
- ao
- al
- ad
- ae
- ar
- am
- ag
- au
- at
- az
- bi
- be
- bj
- bf
- bd
- bg
- bh
- bs
- ba
- by
- bz
- bo
- br
- bb
- bn
- bt
- bw
- cf
- ca
- ch
- cl
- cn
- ci
- cm
- cd
- cg
- co
- km
- cv
- cr
- cu
- cy
- cz
- de
- dj
- dm
- dk
- do
- dz
- ec
- eg
- er
- es
- ee
- et
- fi
- fj
- fr
- fm
- ga
- gb
- ge
- gh
- gn
- gm
- gw
- gq
- gr
- gd
- gt
- gy
- hn
- hr
- ht
- hu
- id
- in
- ie
- ir
- iq
- is
- il
- it
- jm
- jo
- jp
- kz
- ke
- kg
- kh
- ki
- kn
- kr
- kw
- la
- lb
- lr
- ly
- lc
- li
- lk
- ls
- lt
- lu
- lv
- ma
- mc
- md
- mg
- mv
- mx
- mh
- mk
- ml
- mt
- mm
- me
- mn
- mz
- mr
- mu
- mw
- my
- na
- ne
- ng
- ni
- nl
- 'no'
- np
- nr
- nz
- om
- pk
- pa
- pe
- ph
- pw
- pg
- pl
- pf
- kp
- pt
- py
- qa
- ro
- ru
- rw
- sa
- sd
- sn
- sg
- sb
- sl
- sv
- sm
- so
- rs
- ss
- st
- sr
- sk
- si
- se
- sz
- sc
- sy
- td
- tg
- th
- tj
- tm
- tl
- to
- tt
- tn
- tr
- tv
- tz
- ug
- ua
- uy
- us
- uz
- va
- vc
- ve
- vn
- vu
- ws
- ye
- za
- zm
- zw
x-enum-name: Flag
x-enum-keys:
- Afghanistan
- Angola
- Albania
- Andorra
- United Arab Emirates
- Argentina
- Armenia
- Antigua and Barbuda
- Australia
- Austria
- Azerbaijan
- Burundi
- Belgium
- Benin
- Burkina Faso
- Bangladesh
- Bulgaria
- Bahrain
- Bahamas
- Bosnia and Herzegovina
- Belarus
- Belize
- Bolivia
- Brazil
- Barbados
- Brunei Darussalam
- Bhutan
- Botswana
- Central African Republic
- Canada
- Switzerland
- Chile
- China
- Côte d'Ivoire
- Cameroon
- Democratic Republic of the Congo
- Republic of the Congo
- Colombia
- Comoros
- Cape Verde
- Costa Rica
- Cuba
- Cyprus
- Czech Republic
- Germany
- Djibouti
- Dominica
- Denmark
- Dominican Republic
- Algeria
- Ecuador
- Egypt
- Eritrea
- Spain
- Estonia
- Ethiopia
- Finland
- Fiji
- France
- Micronesia (Federated States of)
- Gabon
- United Kingdom
- Georgia
- Ghana
- Guinea
- Gambia
- Guinea-Bissau
- Equatorial Guinea
- Greece
- Grenada
- Guatemala
- Guyana
- Honduras
- Croatia
- Haiti
- Hungary
- Indonesia
- India
- Ireland
- Iran (Islamic Republic of)
- Iraq
- Iceland
- Israel
- Italy
- Jamaica
- Jordan
- Japan
- Kazakhstan
- Kenya
- Kyrgyzstan
- Cambodia
- Kiribati
- Saint Kitts and Nevis
- South Korea
- Kuwait
- Lao People's Democratic Republic
- Lebanon
- Liberia
- Libya
- Saint Lucia
- Liechtenstein
- Sri Lanka
- Lesotho
- Lithuania
- Luxembourg
- Latvia
- Morocco
- Monaco
- Moldova
- Madagascar
- Maldives
- Mexico
- Marshall Islands
- North Macedonia
- Mali
- Malta
- Myanmar
- Montenegro
- Mongolia
- Mozambique
- Mauritania
- Mauritius
- Malawi
- Malaysia
- Namibia
- Niger
- Nigeria
- Nicaragua
- Netherlands
- Norway
- Nepal
- Nauru
- New Zealand
- Oman
- Pakistan
- Panama
- Peru
- Philippines
- Palau
- Papua New Guinea
- Poland
- French Polynesia
- North Korea
- Portugal
- Paraguay
- Qatar
- Romania
- Russia
- Rwanda
- Saudi Arabia
- Sudan
- Senegal
- Singapore
- Solomon Islands
- Sierra Leone
- El Salvador
- San Marino
- Somalia
- Serbia
- South Sudan
- Sao Tome and Principe
- Suriname
- Slovakia
- Slovenia
- Sweden
- Eswatini
- Seychelles
- Syria
- Chad
- Togo
- Thailand
- Tajikistan
- Turkmenistan
- Timor-Leste
- Tonga
- Trinidad and Tobago
- Tunisia
- Turkey
- Tuvalu
- Tanzania
- Uganda
- Ukraine
- Uruguay
- United States
- Uzbekistan
- Vatican City
- Saint Vincent and the Grenadines
- Venezuela
- Vietnam
- Vanuatu
- Samoa
- Yemen
- South Africa
- Zambia
- Zimbabwe
in: path
- name: width
description: Image width. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: height
description: Image height. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: quality
description: Image quality. Pass an integer between 0 to 100. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
/avatars/image:
get:
summary: Get image from URL
operationId: avatarsGetImage
tags:
- avatars
description: |-
Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.
When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.
This endpoint does not follow HTTP redirects.
responses:
'200':
description: Image
x-appwrite:
method: getImage
group: null
weight: 62
cookies: false
type: location
deprecated: false
demo: avatars/get-image.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-image.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: url
description: Image URL which you want to crop.
required: true
schema:
type: string
format: url
x-example: https://example.com
in: query
- name: width
description: Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 400
in: query
- name: height
description: Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 400
in: query
/avatars/initials:
get:
summary: Get user initials
operationId: avatarsGetInitials
tags:
- avatars
description: |
Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.
You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.
When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.
responses:
'200':
description: Image
x-appwrite:
method: getInitials
group: null
weight: 65
cookies: false
type: location
deprecated: false
demo: avatars/get-initials.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-initials.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: name
description: 'Full Name. When empty, current user name or email will be used. Max length: 128 chars.'
required: false
schema:
type: string
x-example: <NAME>
default: ''
in: query
- name: width
description: Image width. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 500
in: query
- name: height
description: Image height. Pass an integer between 0 to 2000. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 500
in: query
- name: background
description: Changes background color. By default a random color will be picked and stay will persistent to the given name.
required: false
schema:
type: string
default: ''
in: query
/avatars/qr:
get:
summary: Get QR code
operationId: avatarsGetQR
tags:
- avatars
description: |
Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.
responses:
'200':
description: Image
x-appwrite:
method: getQR
group: null
weight: 64
cookies: false
type: location
deprecated: false
demo: avatars/get-q-r.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/avatars/get-qr.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: avatars.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: text
description: Plain text to be converted to QR code image.
required: true
schema:
type: string
x-example: <TEXT>
in: query
- name: size
description: QR code size. Pass an integer between 1 to 1000. Defaults to 400.
required: false
schema:
type: integer
format: int32
x-example: 1
default: 400
in: query
- name: margin
description: Margin from edge. Pass an integer between 0 to 10. Defaults to 1.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 1
in: query
- name: download
description: 'Return resulting image with ''Content-Disposition: attachment '' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.'
required: false
schema:
type: boolean
x-example: false
default: false
in: query
/databases/{databaseId}/collections/{collectionId}/documents:
get:
summary: List documents
operationId: databasesListDocuments
tags:
- databases
description: Get a list of all the user's documents in a given collection. You can use the query params to filter your results.
responses:
'200':
description: Documents List
content:
application/json:
schema:
$ref: '#/components/schemas/documentList'
x-appwrite:
method: listDocuments
group: documents
weight: 109
cookies: false
type: ''
deprecated: false
demo: databases/list-documents.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/databases/list-documents.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: documents.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
x-example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).
required: true
schema:
type: string
x-example: <COLLECTION_ID>
in: path
- name: queries
description: Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
required: false
schema:
type: array
items:
type: string
default: []
in: query
post:
summary: Create document
operationId: databasesCreateDocument
tags:
- databases
description: Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.
responses:
'201':
description: Document
content:
application/json:
schema:
$ref: '#/components/schemas/document'
x-appwrite:
method: createDocument
group: documents
weight: 108
cookies: false
type: ''
deprecated: false
demo: databases/create-document.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/databases/create-document.md
rate-limit: 120
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId}
scope: documents.write
platforms:
- client
- server
- server
packaging: false
methods:
- name: createDocument
parameters:
- databaseId
- collectionId
- documentId
- data
- permissions
required:
- databaseId
- collectionId
- documentId
- data
responses:
- code: 201
model: '#/components/schemas/document'
description: Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
x-example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.
required: true
schema:
type: string
x-example: <COLLECTION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
documentId:
type: string
description: Document 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.
x-example: <DOCUMENT_ID>
data:
type: object
description: Document data as JSON object.
x-example: '{}'
permissions:
type: array
description: An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
x-example: '["read("any")"]'
items:
type: string
documents:
type: array
description: Array of documents data as JSON objects.
x-example: null
items:
type: object
/databases/{databaseId}/collections/{collectionId}/documents/{documentId}:
get:
summary: Get document
operationId: databasesGetDocument
tags:
- databases
description: Get a document by its unique ID. This endpoint response returns a JSON object with the document data.
responses:
'200':
description: Document
content:
application/json:
schema:
$ref: '#/components/schemas/document'
x-appwrite:
method: getDocument
group: documents
weight: 110
cookies: false
type: ''
deprecated: false
demo: databases/get-document.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/databases/get-document.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: documents.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
x-example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).
required: true
schema:
type: string
x-example: <COLLECTION_ID>
in: path
- name: documentId
description: Document ID.
required: true
schema:
type: string
x-example: <DOCUMENT_ID>
in: path
- name: queries
description: Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
required: false
schema:
type: array
items:
type: string
default: []
in: query
patch:
summary: Update document
operationId: databasesUpdateDocument
tags:
- databases
description: Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.
responses:
'200':
description: Document
content:
application/json:
schema:
$ref: '#/components/schemas/document'
x-appwrite:
method: updateDocument
group: documents
weight: 112
cookies: false
type: ''
deprecated: false
demo: databases/update-document.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/databases/update-document.md
rate-limit: 120
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId}
scope: documents.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
x-example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID.
required: true
schema:
type: string
x-example: <COLLECTION_ID>
in: path
- name: documentId
description: Document ID.
required: true
schema:
type: string
x-example: <DOCUMENT_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Document data as JSON object. Include only attribute and value pairs to be updated.
x-example: '{}'
permissions:
type: array
description: An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
x-example: '["read("any")"]'
items:
type: string
delete:
summary: Delete document
operationId: databasesDeleteDocument
tags:
- databases
description: Delete a document by its unique ID.
responses:
'204':
description: No content
x-appwrite:
method: deleteDocument
group: documents
weight: 115
cookies: false
type: ''
deprecated: false
demo: databases/delete-document.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/databases/delete-document.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId}
scope: documents.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: databaseId
description: Database ID.
required: true
schema:
type: string
x-example: <DATABASE_ID>
in: path
- name: collectionId
description: Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).
required: true
schema:
type: string
x-example: <COLLECTION_ID>
in: path
- name: documentId
description: Document ID.
required: true
schema:
type: string
x-example: <DOCUMENT_ID>
in: path
/functions/{functionId}/executions:
get:
summary: List executions
operationId: functionsListExecutions
tags:
- functions
description: Get a list of all the current user function execution logs. You can use the query params to filter your results.
responses:
'200':
description: Executions List
content:
application/json:
schema:
$ref: '#/components/schemas/executionList'
x-appwrite:
method: listExecutions
group: executions
weight: 308
cookies: false
type: ''
deprecated: false
demo: functions/list-executions.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/functions/list-executions.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: execution.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: functionId
description: Function ID.
required: true
schema:
type: string
x-example: <FUNCTION_ID>
in: path
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
x-example: <SEARCH>
default: ''
in: query
post:
summary: Create execution
operationId: functionsCreateExecution
tags:
- functions
description: Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.
responses:
'201':
description: Execution
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/execution'
x-appwrite:
method: createExecution
group: executions
weight: 307
cookies: false
type: ''
deprecated: false
demo: functions/create-execution.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/functions/create-execution.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: execution.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: functionId
description: Function ID.
required: true
schema:
type: string
x-example: <FUNCTION_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
body:
type: string
description: HTTP body of execution. Default value is empty string.
x-example: <BODY>
async:
type: boolean
description: Execute code in the background. Default value is false.
x-example: false
path:
type: string
description: HTTP path of execution. Path can include query params. Default value is /
x-example: <PATH>
method:
type: string
description: HTTP method of execution. Default value is GET.
x-example: GET
enum:
- GET
- POST
- PUT
- PATCH
- DELETE
- OPTIONS
x-enum-name: ExecutionMethod
x-enum-keys: []
headers:
type: string
description: HTTP headers of execution. Defaults to empty.
x-example: null
scheduledAt:
type: string
description: Scheduled execution time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.
x-example: null
/functions/{functionId}/executions/{executionId}:
get:
summary: Get execution
operationId: functionsGetExecution
tags:
- functions
description: Get a function execution log by its unique ID.
responses:
'200':
description: Execution
content:
application/json:
schema:
$ref: '#/components/schemas/execution'
x-appwrite:
method: getExecution
group: executions
weight: 309
cookies: false
type: ''
deprecated: false
demo: functions/get-execution.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/functions/get-execution.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: execution.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: functionId
description: Function ID.
required: true
schema:
type: string
x-example: <FUNCTION_ID>
in: path
- name: executionId
description: Execution ID.
required: true
schema:
type: string
x-example: <EXECUTION_ID>
in: path
/graphql:
post:
summary: GraphQL endpoint
operationId: graphqlQuery
tags:
- graphql
description: Execute a GraphQL mutation.
responses:
'200':
description: Any
content:
application/json:
schema:
$ref: '#/components/schemas/any'
x-appwrite:
method: query
group: graphql
weight: 333
cookies: false
type: graphql
deprecated: false
demo: graphql/query.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/graphql/post.md
rate-limit: 60
rate-time: 60
rate-key: url:{url},ip:{ip}
scope: graphql
platforms:
- server
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/graphql/mutation:
post:
summary: GraphQL endpoint
operationId: graphqlMutation
tags:
- graphql
description: Execute a GraphQL mutation.
responses:
'200':
description: Any
content:
application/json:
schema:
$ref: '#/components/schemas/any'
x-appwrite:
method: mutation
group: graphql
weight: 332
cookies: false
type: graphql
deprecated: false
demo: graphql/mutation.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/graphql/post.md
rate-limit: 60
rate-time: 60
rate-key: url:{url},ip:{ip}
scope: graphql
platforms:
- server
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale:
get:
summary: Get user locale
operationId: localeGet
tags:
- locale
description: |-
Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.
([IP Geolocation by DB-IP](https://db-ip.com))
responses:
'200':
description: Locale
content:
application/json:
schema:
$ref: '#/components/schemas/locale'
x-appwrite:
method: get
group: null
weight: 120
cookies: false
type: ''
deprecated: false
demo: locale/get.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/get-locale.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/codes:
get:
summary: List locale codes
operationId: localeListCodes
tags:
- locale
description: List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
responses:
'200':
description: Locale codes list
content:
application/json:
schema:
$ref: '#/components/schemas/localeCodeList'
x-appwrite:
method: listCodes
group: null
weight: 121
cookies: false
type: ''
deprecated: false
demo: locale/list-codes.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-locale-codes.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/continents:
get:
summary: List continents
operationId: localeListContinents
tags:
- locale
description: List of all continents. You can use the locale header to get the data in a supported language.
responses:
'200':
description: Continents List
content:
application/json:
schema:
$ref: '#/components/schemas/continentList'
x-appwrite:
method: listContinents
group: null
weight: 125
cookies: false
type: ''
deprecated: false
demo: locale/list-continents.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-continents.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/countries:
get:
summary: List countries
operationId: localeListCountries
tags:
- locale
description: List of all countries. You can use the locale header to get the data in a supported language.
responses:
'200':
description: Countries List
content:
application/json:
schema:
$ref: '#/components/schemas/countryList'
x-appwrite:
method: listCountries
group: null
weight: 122
cookies: false
type: ''
deprecated: false
demo: locale/list-countries.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-countries.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/countries/eu:
get:
summary: List EU countries
operationId: localeListCountriesEU
tags:
- locale
description: List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.
responses:
'200':
description: Countries List
content:
application/json:
schema:
$ref: '#/components/schemas/countryList'
x-appwrite:
method: listCountriesEU
group: null
weight: 123
cookies: false
type: ''
deprecated: false
demo: locale/list-countries-e-u.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-countries-eu.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/countries/phones:
get:
summary: List countries phone codes
operationId: localeListCountriesPhones
tags:
- locale
description: List of all countries phone codes. You can use the locale header to get the data in a supported language.
responses:
'200':
description: Phones List
content:
application/json:
schema:
$ref: '#/components/schemas/phoneList'
x-appwrite:
method: listCountriesPhones
group: null
weight: 124
cookies: false
type: ''
deprecated: false
demo: locale/list-countries-phones.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-countries-phones.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/currencies:
get:
summary: List currencies
operationId: localeListCurrencies
tags:
- locale
description: List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.
responses:
'200':
description: Currencies List
content:
application/json:
schema:
$ref: '#/components/schemas/currencyList'
x-appwrite:
method: listCurrencies
group: null
weight: 126
cookies: false
type: ''
deprecated: false
demo: locale/list-currencies.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-currencies.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/locale/languages:
get:
summary: List languages
operationId: localeListLanguages
tags:
- locale
description: List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.
responses:
'200':
description: Languages List
content:
application/json:
schema:
$ref: '#/components/schemas/languageList'
x-appwrite:
method: listLanguages
group: null
weight: 127
cookies: false
type: ''
deprecated: false
demo: locale/list-languages.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/locale/list-languages.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: locale.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
/messaging/topics/{topicId}/subscribers:
post:
summary: Create subscriber
operationId: messagingCreateSubscriber
tags:
- messaging
description: Create a new subscriber.
responses:
'201':
description: Subscriber
content:
application/json:
schema:
$ref: '#/components/schemas/subscriber'
x-appwrite:
method: createSubscriber
group: subscribers
weight: 378
cookies: false
type: ''
deprecated: false
demo: messaging/create-subscriber.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/messaging/create-subscriber.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: subscribers.write
platforms:
- server
- client
- console
- server
packaging: false
auth:
Project: []
security:
- Project: []
JWT: []
Session: []
parameters:
- name: topicId
description: Topic ID. The topic ID to subscribe to.
required: true
schema:
type: string
x-example: <TOPIC_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
subscriberId:
type: string
description: Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.
x-example: <SUBSCRIBER_ID>
targetId:
type: string
description: Target ID. The target ID to link to the specified Topic ID.
x-example: <TARGET_ID>
required:
- subscriberId
- targetId
/messaging/topics/{topicId}/subscribers/{subscriberId}:
delete:
summary: Delete subscriber
operationId: messagingDeleteSubscriber
tags:
- messaging
description: Delete a subscriber by its unique ID.
responses:
'204':
description: No content
x-appwrite:
method: deleteSubscriber
group: subscribers
weight: 382
cookies: false
type: ''
deprecated: false
demo: messaging/delete-subscriber.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/messaging/delete-subscriber.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: subscribers.write
platforms:
- server
- client
- console
- server
packaging: false
auth:
Project: []
security:
- Project: []
JWT: []
Session: []
parameters:
- name: topicId
description: Topic ID. The topic ID subscribed to.
required: true
schema:
type: string
x-example: <TOPIC_ID>
in: path
- name: subscriberId
description: Subscriber ID.
required: true
schema:
type: string
x-example: <SUBSCRIBER_ID>
in: path
/storage/buckets/{bucketId}/files:
get:
summary: List files
operationId: storageListFiles
tags:
- storage
description: Get a list of all the user files. You can use the query params to filter your results.
responses:
'200':
description: Files List
content:
application/json:
schema:
$ref: '#/components/schemas/fileList'
x-appwrite:
method: listFiles
group: files
weight: 210
cookies: false
type: ''
deprecated: false
demo: storage/list-files.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/list-files.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: files.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
x-example: <SEARCH>
default: ''
in: query
post:
summary: Create file
operationId: storageCreateFile
tags:
- storage
description: |
Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console.
Larger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.
When the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.
If you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.
responses:
'201':
description: File
content:
application/json:
schema:
$ref: '#/components/schemas/file'
x-appwrite:
method: createFile
group: files
weight: 209
cookies: false
type: upload
deprecated: false
demo: storage/create-file.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/create-file.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId},chunkId:{chunkId}
scope: files.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
fileId:
type: string
description: File 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.
x-example: <FILE_ID>
x-upload-id: true
file:
type: string
description: Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https://appwrite.io/docs/products/storage/upload-download#input-file).
x-example: null
permissions:
type: array
description: An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
x-example: '["read("any")"]'
items:
type: string
required:
- fileId
- file
/storage/buckets/{bucketId}/files/{fileId}:
get:
summary: Get file
operationId: storageGetFile
tags:
- storage
description: Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.
responses:
'200':
description: File
content:
application/json:
schema:
$ref: '#/components/schemas/file'
x-appwrite:
method: getFile
group: files
weight: 211
cookies: false
type: ''
deprecated: false
demo: storage/get-file.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/get-file.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: files.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File ID.
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
put:
summary: Update file
operationId: storageUpdateFile
tags:
- storage
description: Update a file by its unique ID. Only users with write permissions have access to update this resource.
responses:
'200':
description: File
content:
application/json:
schema:
$ref: '#/components/schemas/file'
x-appwrite:
method: updateFile
group: files
weight: 216
cookies: false
type: ''
deprecated: false
demo: storage/update-file.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/update-file.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId}
scope: files.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File unique ID.
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name of the file
x-example: <NAME>
permissions:
type: array
description: An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
x-example: '["read("any")"]'
items:
type: string
delete:
summary: Delete file
operationId: storageDeleteFile
tags:
- storage
description: Delete a file by its unique ID. Only users with write permissions have access to delete this resource.
responses:
'204':
description: No content
x-appwrite:
method: deleteFile
group: files
weight: 217
cookies: false
type: ''
deprecated: false
demo: storage/delete-file.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/delete-file.md
rate-limit: 60
rate-time: 60
rate-key: ip:{ip},method:{method},url:{url},userId:{userId}
scope: files.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File ID.
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
/storage/buckets/{bucketId}/files/{fileId}/download:
get:
summary: Get file for download
operationId: storageGetFileDownload
tags:
- storage
description: 'Get a file content by its unique ID. The endpoint response return with a ''Content-Disposition: attachment'' header that tells the browser to start downloading the file to user downloads directory.'
responses:
'200':
description: File
x-appwrite:
method: getFileDownload
group: files
weight: 213
cookies: false
type: location
deprecated: false
demo: storage/get-file-download.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/get-file-download.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: files.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File ID.
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
/storage/buckets/{bucketId}/files/{fileId}/preview:
get:
summary: Get file preview
operationId: storageGetFilePreview
tags:
- storage
description: Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.
responses:
'200':
description: Image
x-appwrite:
method: getFilePreview
group: files
weight: 212
cookies: false
type: location
deprecated: false
demo: storage/get-file-preview.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/get-file-preview.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: files.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File ID
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
- name: width
description: Resize preview image width, Pass an integer between 0 to 4000.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 0
in: query
- name: height
description: Resize preview image height, Pass an integer between 0 to 4000.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 0
in: query
- name: gravity
description: Image crop gravity. Can be one of center,top-left,top,top-right,left,right,bottom-left,bottom,bottom-right
required: false
schema:
type: string
x-example: center
enum:
- center
- top-left
- top
- top-right
- left
- right
- bottom-left
- bottom
- bottom-right
x-enum-name: ImageGravity
x-enum-keys: []
default: center
in: query
- name: quality
description: Preview image quality. Pass an integer between 0 to 100. Defaults to 100.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 100
in: query
- name: borderWidth
description: Preview image border in pixels. Pass an integer between 0 to 100. Defaults to 0.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 0
in: query
- name: borderColor
description: 'Preview image border color. Use a valid HEX color, no # is needed for prefix.'
required: false
schema:
type: string
default: ''
in: query
- name: borderRadius
description: Preview image border radius in pixels. Pass an integer between 0 to 4000.
required: false
schema:
type: integer
format: int32
x-example: 0
default: 0
in: query
- name: opacity
description: Preview image opacity. Only works with images having an alpha channel (like png). Pass a number between 0 to 1.
required: false
schema:
type: number
format: float
x-example: 0
default: 1
in: query
- name: rotation
description: Preview image rotation in degrees. Pass an integer between -360 and 360.
required: false
schema:
type: integer
format: int32
x-example: -360
default: 0
in: query
- name: background
description: 'Preview image background color. Only works with transparent images (png). Use a valid HEX color, no # is needed for prefix.'
required: false
schema:
type: string
default: ''
in: query
- name: output
description: Output format type (jpeg, jpg, png, gif and webp).
required: false
schema:
type: string
x-example: jpg
enum:
- jpg
- jpeg
- gif
- png
- webp
- heic
- avif
x-enum-name: ImageFormat
x-enum-keys: []
default: ''
in: query
/storage/buckets/{bucketId}/files/{fileId}/view:
get:
summary: Get file for view
operationId: storageGetFileView
tags:
- storage
description: 'Get a file content by its unique ID. This endpoint is similar to the download method but returns with no ''Content-Disposition: attachment'' header.'
responses:
'200':
description: File
x-appwrite:
method: getFileView
group: files
weight: 214
cookies: false
type: location
deprecated: false
demo: storage/get-file-view.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/storage/get-file-view.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: files.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: bucketId
description: Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).
required: true
schema:
type: string
x-example: <BUCKET_ID>
in: path
- name: fileId
description: File ID.
required: true
schema:
type: string
x-example: <FILE_ID>
in: path
/teams:
get:
summary: List teams
operationId: teamsList
tags:
- teams
description: Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.
responses:
'200':
description: Teams List
content:
application/json:
schema:
$ref: '#/components/schemas/teamList'
x-appwrite:
method: list
group: teams
weight: 221
cookies: false
type: ''
deprecated: false
demo: teams/list.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/list-teams.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total, billingPlan'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
x-example: <SEARCH>
default: ''
in: query
post:
summary: Create team
operationId: teamsCreate
tags:
- teams
description: Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.
responses:
'201':
description: Team
content:
application/json:
schema:
$ref: '#/components/schemas/team'
x-appwrite:
method: create
group: teams
weight: 220
cookies: false
type: ''
deprecated: false
demo: teams/create.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/create-team.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
requestBody:
content:
application/json:
schema:
type: object
properties:
teamId:
type: string
description: Team 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.
x-example: <TEAM_ID>
name:
type: string
description: 'Team name. Max length: 128 chars.'
x-example: <NAME>
roles:
type: array
description: Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of 100 roles are allowed, each 32 characters long.
x-example: null
items:
type: string
required:
- teamId
- name
/teams/{teamId}:
get:
summary: Get team
operationId: teamsGet
tags:
- teams
description: Get a team by its ID. All team members have read access for this resource.
responses:
'200':
description: Team
content:
application/json:
schema:
$ref: '#/components/schemas/team'
x-appwrite:
method: get
group: teams
weight: 222
cookies: false
type: ''
deprecated: false
demo: teams/get.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/get-team.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
put:
summary: Update name
operationId: teamsUpdateName
tags:
- teams
description: Update the team's name by its unique ID.
responses:
'200':
description: Team
content:
application/json:
schema:
$ref: '#/components/schemas/team'
x-appwrite:
method: updateName
group: teams
weight: 224
cookies: false
type: ''
deprecated: false
demo: teams/update-name.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/update-team-name.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'New team name. Max length: 128 chars.'
x-example: <NAME>
required:
- name
delete:
summary: Delete team
operationId: teamsDelete
tags:
- teams
description: Delete a team using its ID. Only team members with the owner role can delete the team.
responses:
'204':
description: No content
x-appwrite:
method: delete
group: teams
weight: 226
cookies: false
type: ''
deprecated: false
demo: teams/delete.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/delete-team.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
/teams/{teamId}/memberships:
get:
summary: List team memberships
operationId: teamsListMemberships
tags:
- teams
description: Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. Hide sensitive attributes from the response by toggling membership privacy in the Console.
responses:
'200':
description: Memberships List
content:
application/json:
schema:
$ref: '#/components/schemas/membershipList'
x-appwrite:
method: listMemberships
group: memberships
weight: 228
cookies: false
type: ''
deprecated: false
demo: teams/list-memberships.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/list-team-members.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
- name: queries
description: 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm'
required: false
schema:
type: array
items:
type: string
default: []
in: query
- name: search
description: 'Search term to filter your list results. Max length: 256 chars.'
required: false
schema:
type: string
x-example: <SEARCH>
default: ''
in: query
post:
summary: Create team membership
operationId: teamsCreateMembership
tags:
- teams
description: |
Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.
You only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.
Use the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team.
Please note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.
responses:
'201':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
x-appwrite:
method: createMembership
group: memberships
weight: 227
cookies: false
type: ''
deprecated: false
demo: teams/create-membership.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/create-team-membership.md
rate-limit: 10
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: Email of the new team member.
x-example: [email protected]
userId:
type: string
description: ID of the user to be added to a team.
x-example: <USER_ID>
phone:
type: string
description: Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.
x-example: '+12065550100'
roles:
type: array
description: Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of 100 roles are allowed, each 32 characters long.
x-example: null
items:
type: string
url:
type: string
description: URL to redirect the user back to your app from the invitation email. This parameter is not required when an API key is supplied. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.
x-example: https://example.com
name:
type: string
description: 'Name of the new team member. Max length: 128 chars.'
x-example: <NAME>
required:
- roles
/teams/{teamId}/memberships/{membershipId}:
get:
summary: Get team membership
operationId: teamsGetMembership
tags:
- teams
description: Get a team member by the membership unique id. All team members have read access for this resource. Hide sensitive attributes from the response by toggling membership privacy in the Console.
responses:
'200':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
x-appwrite:
method: getMembership
group: memberships
weight: 229
cookies: false
type: ''
deprecated: false
demo: teams/get-membership.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/get-team-member.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.read
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
x-example: <MEMBERSHIP_ID>
in: path
patch:
summary: Update membership
operationId: teamsUpdateMembership
tags:
- teams
description: |
Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions).
responses:
'200':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
x-appwrite:
method: updateMembership
group: memberships
weight: 230
cookies: false
type: ''
deprecated: false
demo: teams/update-membership.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/update-team-membership.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
x-example: <MEMBERSHIP_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
roles:
type: array
description: An array of strings. Use this param to set the user's roles in the team. A role can be any string. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). Maximum of 100 roles are allowed, each 32 characters long.
x-example: null
items:
type: string
required:
- roles
delete:
summary: Delete team membership
operationId: teamsDeleteMembership
tags:
- teams
description: This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.
responses:
'204':
description: No content
x-appwrite:
method: deleteMembership
group: memberships
weight: 232
cookies: false
type: ''
deprecated: false
demo: teams/delete-membership.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/delete-team-membership.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
x-example: <MEMBERSHIP_ID>
in: path
/teams/{teamId}/memberships/{membershipId}/status:
patch:
summary: Update team membership status
operationId: teamsUpdateMembershipStatus
tags:
- teams
description: |
Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.
If the request is successful, a session for the user is automatically created.
responses:
'200':
description: Membership
content:
application/json:
schema:
$ref: '#/components/schemas/membership'
x-appwrite:
method: updateMembershipStatus
group: memberships
weight: 231
cookies: false
type: ''
deprecated: false
demo: teams/update-membership-status.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/update-team-membership-status.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: public
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
- name: membershipId
description: Membership ID.
required: true
schema:
type: string
x-example: <MEMBERSHIP_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
userId:
type: string
description: User ID.
x-example: <USER_ID>
secret:
type: string
description: Secret key.
x-example: <SECRET>
required:
- userId
- secret
/teams/{teamId}/prefs:
get:
summary: Get team preferences
operationId: teamsGetPrefs
tags:
- teams
description: Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs).
responses:
'200':
description: Preferences
content:
application/json:
schema:
$ref: '#/components/schemas/preferences'
x-appwrite:
method: getPrefs
group: teams
weight: 223
cookies: false
type: ''
deprecated: false
demo: teams/get-prefs.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/get-team-prefs.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.read
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
put:
summary: Update preferences
operationId: teamsUpdatePrefs
tags:
- teams
description: Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.
responses:
'200':
description: Preferences
content:
application/json:
schema:
$ref: '#/components/schemas/preferences'
x-appwrite:
method: updatePrefs
group: teams
weight: 225
cookies: false
type: ''
deprecated: false
demo: teams/update-prefs.md
edit: https://github.com/appwrite/appwrite/edit/master/docs/references/teams/update-team-prefs.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: teams.write
platforms:
- client
- server
packaging: false
auth:
Project: []
security:
- Project: []
Session: []
JWT: []
parameters:
- name: teamId
description: Team ID.
required: true
schema:
type: string
x-example: <TEAM_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
prefs:
type: object
description: Prefs key-value JSON object.
x-example: '{}'
required:
- prefs
tags:
- name: account
description: The Account service allows you to authenticate and manage a user account.
- name: avatars
description: The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.
- name: databases
description: The Databases service allows you to create structured collections of documents, query and filter lists of documents
- name: locale
description: The Locale service allows you to customize your app based on your users' location.
- name: health
description: The Health service allows you to both validate and monitor your Appwrite server's health.
- name: projects
description: The Project service allows you to manage all the projects in your Appwrite server.
- name: project
description: The Project service allows you to manage all the projects in your Appwrite server.
- name: storage
description: The Storage service allows you to manage your project files.
- name: teams
description: The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources
- name: users
description: The Users service allows you to manage your project users.
- name: functions
description: The Functions Service allows you view, create and manage your Cloud Functions.
- name: proxy
description: The Proxy Service allows you to configure actions for your domains beyond DNS configuration.
- name: graphql
description: The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.
- name: console
description: The Console service allows you to interact with console relevant informations.
- name: migrations
description: The Migrations service allows you to migrate third-party data to your Appwrite project.
- name: messaging
description: The Messaging service allows you to send messages to any provider type (SMTP, push notification, SMS, etc.).
components:
schemas:
any:
description: Any
type: object
additionalProperties: true
error:
description: Error
type: object
properties:
message:
type: string
description: Error message.
x-example: Not found
code:
type: string
description: Error code.
x-example: '404'
type:
type: string
description: Error type. You can learn more about all the error types at https://appwrite.io/docs/error-codes#errorTypes
x-example: not_found
version:
type: string
description: Server version number.
x-example: '1.0'
required:
- message
- code
- type
- version
documentList:
description: Documents List
type: object
properties:
total:
type: integer
description: Total number of documents documents that matched your query.
x-example: 5
format: int32
documents:
type: array
description: List of documents.
items:
$ref: '#/components/schemas/document'
x-example: ''
required:
- total
- documents
sessionList:
description: Sessions List
type: object
properties:
total:
type: integer
description: Total number of sessions documents that matched your query.
x-example: 5
format: int32
sessions:
type: array
description: List of sessions.
items:
$ref: '#/components/schemas/session'
x-example: ''
required:
- total
- sessions
identityList:
description: Identities List
type: object
properties:
total:
type: integer
description: Total number of identities documents that matched your query.
x-example: 5
format: int32
identities:
type: array
description: List of identities.
items:
$ref: '#/components/schemas/identity'
x-example: ''
required:
- total
- identities
logList:
description: Logs List
type: object
properties:
total:
type: integer
description: Total number of logs documents that matched your query.
x-example: 5
format: int32
logs:
type: array
description: List of logs.
items:
$ref: '#/components/schemas/log'
x-example: ''
required:
- total
- logs
fileList:
description: Files List
type: object
properties:
total:
type: integer
description: Total number of files documents that matched your query.
x-example: 5
format: int32
files:
type: array
description: List of files.
items:
$ref: '#/components/schemas/file'
x-example: ''
required:
- total
- files
teamList:
description: Teams List
type: object
properties:
total:
type: integer
description: Total number of teams documents that matched your query.
x-example: 5
format: int32
teams:
type: array
description: List of teams.
items:
$ref: '#/components/schemas/team'
x-example: ''
required:
- total
- teams
membershipList:
description: Memberships List
type: object
properties:
total:
type: integer
description: Total number of memberships documents that matched your query.
x-example: 5
format: int32
memberships:
type: array
description: List of memberships.
items:
$ref: '#/components/schemas/membership'
x-example: ''
required:
- total
- memberships
executionList:
description: Executions List
type: object
properties:
total:
type: integer
description: Total number of executions documents that matched your query.
x-example: 5
format: int32
executions:
type: array
description: List of executions.
items:
$ref: '#/components/schemas/execution'
x-example: ''
required:
- total
- executions
countryList:
description: Countries List
type: object
properties:
total:
type: integer
description: Total number of countries documents that matched your query.
x-example: 5
format: int32
countries:
type: array
description: List of countries.
items:
$ref: '#/components/schemas/country'
x-example: ''
required:
- total
- countries
continentList:
description: Continents List
type: object
properties:
total:
type: integer
description: Total number of continents documents that matched your query.
x-example: 5
format: int32
continents:
type: array
description: List of continents.
items:
$ref: '#/components/schemas/continent'
x-example: ''
required:
- total
- continents
languageList:
description: Languages List
type: object
properties:
total:
type: integer
description: Total number of languages documents that matched your query.
x-example: 5
format: int32
languages:
type: array
description: List of languages.
items:
$ref: '#/components/schemas/language'
x-example: ''
required:
- total
- languages
currencyList:
description: Currencies List
type: object
properties:
total:
type: integer
description: Total number of currencies documents that matched your query.
x-example: 5
format: int32
currencies:
type: array
description: List of currencies.
items:
$ref: '#/components/schemas/currency'
x-example: ''
required:
- total
- currencies
phoneList:
description: Phones List
type: object
properties:
total:
type: integer
description: Total number of phones documents that matched your query.
x-example: 5
format: int32
phones:
type: array
description: List of phones.
items:
$ref: '#/components/schemas/phone'
x-example: ''
required:
- total
- phones
localeCodeList:
description: Locale codes list
type: object
properties:
total:
type: integer
description: Total number of localeCodes documents that matched your query.
x-example: 5
format: int32
localeCodes:
type: array
description: List of localeCodes.
items:
$ref: '#/components/schemas/localeCode'
x-example: ''
required:
- total
- localeCodes
document:
description: Document
type: object
properties:
$id:
type: string
description: Document ID.
x-example: 5e5ea5c16897e
$collectionId:
type: string
description: Collection ID.
x-example: 5e5ea5c15117e
$databaseId:
type: string
description: Database ID.
x-example: 5e5ea5c15117e
$createdAt:
type: string
description: Document creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Document update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$permissions:
type: array
description: Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
items:
type: string
x-example:
- read("any")
additionalProperties: true
required:
- $id
- $collectionId
- $databaseId
- $createdAt
- $updatedAt
- $permissions
log:
description: Log
type: object
properties:
event:
type: string
description: Event name.
x-example: account.sessions.create
userId:
type: string
description: User ID.
x-example: 610fc2f985ee0
userEmail:
type: string
description: User Email.
x-example: [email protected]
userName:
type: string
description: User Name.
x-example: John Doe
mode:
type: string
description: API mode when event triggered.
x-example: admin
ip:
type: string
description: IP session in use when the session was created.
x-example: 127.0.0.1
time:
type: string
description: Log creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
osCode:
type: string
description: Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json).
x-example: Mac
osName:
type: string
description: Operating system name.
x-example: Mac
osVersion:
type: string
description: Operating system version.
x-example: Mac
clientType:
type: string
description: Client type.
x-example: browser
clientCode:
type: string
description: Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json).
x-example: CM
clientName:
type: string
description: Client name.
x-example: Chrome Mobile iOS
clientVersion:
type: string
description: Client version.
x-example: '84.0'
clientEngine:
type: string
description: Client engine name.
x-example: WebKit
clientEngineVersion:
type: string
description: Client engine name.
x-example: 605.1.15
deviceName:
type: string
description: Device name.
x-example: smartphone
deviceBrand:
type: string
description: Device brand name.
x-example: Google
deviceModel:
type: string
description: Device model name.
x-example: Nexus 5
countryCode:
type: string
description: Country two-character ISO 3166-1 alpha code.
x-example: US
countryName:
type: string
description: Country name.
x-example: United States
required:
- event
- userId
- userEmail
- userName
- mode
- ip
- time
- osCode
- osName
- osVersion
- clientType
- clientCode
- clientName
- clientVersion
- clientEngine
- clientEngineVersion
- deviceName
- deviceBrand
- deviceModel
- countryCode
- countryName
user:
description: User
type: object
properties:
$id:
type: string
description: User ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: User creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: User update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
name:
type: string
description: User name.
x-example: John Doe
password:
type: string
description: Hashed user password.
x-example: $argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L/4LdgrVRXxE
nullable: true
hash:
type: string
description: Password hashing algorithm.
x-example: argon2
nullable: true
hashOptions:
type: object
description: Password hashing algorithm configuration.
x-example: {}
items:
oneOf:
- $ref: '#/components/schemas/algoArgon2'
- $ref: '#/components/schemas/algoScrypt'
- $ref: '#/components/schemas/algoScryptModified'
- $ref: '#/components/schemas/algoBcrypt'
- $ref: '#/components/schemas/algoPhpass'
- $ref: '#/components/schemas/algoSha'
- $ref: '#/components/schemas/algoMd5'
nullable: true
registration:
type: string
description: User registration date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
status:
type: boolean
description: User status. Pass `true` for enabled and `false` for disabled.
x-example: true
labels:
type: array
description: Labels for the user.
items:
type: string
x-example:
- vip
passwordUpdate:
type: string
description: Password update time in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
email:
type: string
description: User email address.
x-example: [email protected]
phone:
type: string
description: User phone number in E.164 format.
x-example: '+4930901820'
emailVerification:
type: boolean
description: Email verification status.
x-example: true
phoneVerification:
type: boolean
description: Phone verification status.
x-example: true
mfa:
type: boolean
description: Multi factor authentication status.
x-example: true
prefs:
type: object
description: User preferences as a key-value object
x-example:
theme: pink
timezone: UTC
items:
$ref: '#/components/schemas/preferences'
targets:
type: array
description: A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider.
items:
$ref: '#/components/schemas/target'
x-example: []
accessedAt:
type: string
description: Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours.
x-example: '2020-10-15T06:38:00.000+00:00'
required:
- $id
- $createdAt
- $updatedAt
- name
- registration
- status
- labels
- passwordUpdate
- email
- phone
- emailVerification
- phoneVerification
- mfa
- prefs
- targets
- accessedAt
algoMd5:
description: AlgoMD5
type: object
properties:
type:
type: string
description: Algo type.
x-example: md5
required:
- type
algoSha:
description: AlgoSHA
type: object
properties:
type:
type: string
description: Algo type.
x-example: sha
required:
- type
algoPhpass:
description: AlgoPHPass
type: object
properties:
type:
type: string
description: Algo type.
x-example: phpass
required:
- type
algoBcrypt:
description: AlgoBcrypt
type: object
properties:
type:
type: string
description: Algo type.
x-example: bcrypt
required:
- type
algoScrypt:
description: AlgoScrypt
type: object
properties:
type:
type: string
description: Algo type.
x-example: scrypt
costCpu:
type: integer
description: CPU complexity of computed hash.
x-example: 8
format: int32
costMemory:
type: integer
description: Memory complexity of computed hash.
x-example: 14
format: int32
costParallel:
type: integer
description: Parallelization of computed hash.
x-example: 1
format: int32
length:
type: integer
description: Length used to compute hash.
x-example: 64
format: int32
required:
- type
- costCpu
- costMemory
- costParallel
- length
algoScryptModified:
description: AlgoScryptModified
type: object
properties:
type:
type: string
description: Algo type.
x-example: scryptMod
salt:
type: string
description: Salt used to compute hash.
x-example: UxLMreBr6tYyjQ==
saltSeparator:
type: string
description: Separator used to compute hash.
x-example: Bw==
signerKey:
type: string
description: Key used to compute hash.
x-example: XyEKE9RcTDeLEsL/RjwPDBv/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ==
required:
- type
- salt
- saltSeparator
- signerKey
algoArgon2:
description: AlgoArgon2
type: object
properties:
type:
type: string
description: Algo type.
x-example: argon2
memoryCost:
type: integer
description: Memory used to compute hash.
x-example: 65536
format: int32
timeCost:
type: integer
description: Amount of time consumed to compute hash
x-example: 4
format: int32
threads:
type: integer
description: Number of threads used to compute hash.
x-example: 3
format: int32
required:
- type
- memoryCost
- timeCost
- threads
preferences:
description: Preferences
type: object
additionalProperties: true
session:
description: Session
type: object
properties:
$id:
type: string
description: Session ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: Session creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Session update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
userId:
type: string
description: User ID.
x-example: 5e5bb8c16897e
expire:
type: string
description: Session expiration date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
provider:
type: string
description: Session Provider.
x-example: email
providerUid:
type: string
description: Session Provider User ID.
x-example: [email protected]
providerAccessToken:
type: string
description: Session Provider Access Token.
x-example: MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3
providerAccessTokenExpiry:
type: string
description: The date of when the access token expires in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
providerRefreshToken:
type: string
description: Session Provider Refresh Token.
x-example: MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3
ip:
type: string
description: IP in use when the session was created.
x-example: 127.0.0.1
osCode:
type: string
description: Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json).
x-example: Mac
osName:
type: string
description: Operating system name.
x-example: Mac
osVersion:
type: string
description: Operating system version.
x-example: Mac
clientType:
type: string
description: Client type.
x-example: browser
clientCode:
type: string
description: Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json).
x-example: CM
clientName:
type: string
description: Client name.
x-example: Chrome Mobile iOS
clientVersion:
type: string
description: Client version.
x-example: '84.0'
clientEngine:
type: string
description: Client engine name.
x-example: WebKit
clientEngineVersion:
type: string
description: Client engine name.
x-example: 605.1.15
deviceName:
type: string
description: Device name.
x-example: smartphone
deviceBrand:
type: string
description: Device brand name.
x-example: Google
deviceModel:
type: string
description: Device model name.
x-example: Nexus 5
countryCode:
type: string
description: Country two-character ISO 3166-1 alpha code.
x-example: US
countryName:
type: string
description: Country name.
x-example: United States
current:
type: boolean
description: Returns true if this the current user session.
x-example: true
factors:
type: array
description: Returns a list of active session factors.
items:
type: string
x-example:
- email
secret:
type: string
description: Secret used to authenticate the user. Only included if the request was made with an API key
x-example: 5e5bb8c16897e
mfaUpdatedAt:
type: string
description: Most recent date in ISO 8601 format when the session successfully passed MFA challenge.
x-example: '2020-10-15T06:38:00.000+00:00'
required:
- $id
- $createdAt
- $updatedAt
- userId
- expire
- provider
- providerUid
- providerAccessToken
- providerAccessTokenExpiry
- providerRefreshToken
- ip
- osCode
- osName
- osVersion
- clientType
- clientCode
- clientName
- clientVersion
- clientEngine
- clientEngineVersion
- deviceName
- deviceBrand
- deviceModel
- countryCode
- countryName
- current
- factors
- secret
- mfaUpdatedAt
identity:
description: Identity
type: object
properties:
$id:
type: string
description: Identity ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: Identity creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Identity update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
userId:
type: string
description: User ID.
x-example: 5e5bb8c16897e
provider:
type: string
description: Identity Provider.
x-example: email
providerUid:
type: string
description: ID of the User in the Identity Provider.
x-example: 5e5bb8c16897e
providerEmail:
type: string
description: Email of the User in the Identity Provider.
x-example: [email protected]
providerAccessToken:
type: string
description: Identity Provider Access Token.
x-example: MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3
providerAccessTokenExpiry:
type: string
description: The date of when the access token expires in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
providerRefreshToken:
type: string
description: Identity Provider Refresh Token.
x-example: MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3
required:
- $id
- $createdAt
- $updatedAt
- userId
- provider
- providerUid
- providerEmail
- providerAccessToken
- providerAccessTokenExpiry
- providerRefreshToken
token:
description: Token
type: object
properties:
$id:
type: string
description: Token ID.
x-example: bb8ea5c16897e
$createdAt:
type: string
description: Token creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
userId:
type: string
description: User ID.
x-example: 5e5ea5c168bb8
secret:
type: string
description: Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
x-example: ''
expire:
type: string
description: Token expiration date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
phrase:
type: string
description: Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email.
x-example: Golden Fox
required:
- $id
- $createdAt
- userId
- secret
- expire
- phrase
jwt:
description: JWT
type: object
properties:
jwt:
type: string
description: JWT encoded string.
x-example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
required:
- jwt
locale:
description: Locale
type: object
properties:
ip:
type: string
description: User IP address.
x-example: 127.0.0.1
countryCode:
type: string
description: Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format
x-example: US
country:
type: string
description: Country name. This field support localization.
x-example: United States
continentCode:
type: string
description: Continent code. A two character continent code "AF" for Africa, "AN" for Antarctica, "AS" for Asia, "EU" for Europe, "NA" for North America, "OC" for Oceania, and "SA" for South America.
x-example: NA
continent:
type: string
description: Continent name. This field support localization.
x-example: North America
eu:
type: boolean
description: True if country is part of the European Union.
x-example: false
currency:
type: string
description: Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format
x-example: USD
required:
- ip
- countryCode
- country
- continentCode
- continent
- eu
- currency
localeCode:
description: LocaleCode
type: object
properties:
code:
type: string
description: Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
x-example: en-us
name:
type: string
description: Locale name
x-example: US
required:
- code
- name
file:
description: File
type: object
properties:
$id:
type: string
description: File ID.
x-example: 5e5ea5c16897e
bucketId:
type: string
description: Bucket ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: File creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: File update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$permissions:
type: array
description: File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
items:
type: string
x-example:
- read("any")
name:
type: string
description: File name.
x-example: Pink.png
signature:
type: string
description: File MD5 signature.
x-example: 5d529fd02b544198ae075bd57c1762bb
mimeType:
type: string
description: File mime type.
x-example: image/png
sizeOriginal:
type: integer
description: File original size in bytes.
x-example: 17890
format: int32
chunksTotal:
type: integer
description: Total number of chunks available
x-example: 17890
format: int32
chunksUploaded:
type: integer
description: Total number of chunks uploaded
x-example: 17890
format: int32
required:
- $id
- bucketId
- $createdAt
- $updatedAt
- $permissions
- name
- signature
- mimeType
- sizeOriginal
- chunksTotal
- chunksUploaded
team:
description: Team
type: object
properties:
$id:
type: string
description: Team ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: Team creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Team update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
name:
type: string
description: Team name.
x-example: VIP
total:
type: integer
description: Total number of team members.
x-example: 7
format: int32
prefs:
type: object
description: Team preferences as a key-value object
x-example:
theme: pink
timezone: UTC
items:
$ref: '#/components/schemas/preferences'
required:
- $id
- $createdAt
- $updatedAt
- name
- total
- prefs
membership:
description: Membership
type: object
properties:
$id:
type: string
description: Membership ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: Membership creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Membership update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
userId:
type: string
description: User ID.
x-example: 5e5ea5c16897e
userName:
type: string
description: User name. Hide this attribute by toggling membership privacy in the Console.
x-example: John Doe
userEmail:
type: string
description: User email address. Hide this attribute by toggling membership privacy in the Console.
x-example: [email protected]
teamId:
type: string
description: Team ID.
x-example: 5e5ea5c16897e
teamName:
type: string
description: Team name.
x-example: VIP
invited:
type: string
description: Date, the user has been invited to join the team in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
joined:
type: string
description: Date, the user has accepted the invitation to join the team in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
confirm:
type: boolean
description: User confirmation status, true if the user has joined the team or false otherwise.
x-example: false
mfa:
type: boolean
description: Multi factor authentication status, true if the user has MFA enabled or false otherwise. Hide this attribute by toggling membership privacy in the Console.
x-example: false
roles:
type: array
description: User list of roles
items:
type: string
x-example:
- owner
required:
- $id
- $createdAt
- $updatedAt
- userId
- userName
- userEmail
- teamId
- teamName
- invited
- joined
- confirm
- mfa
- roles
execution:
description: Execution
type: object
properties:
$id:
type: string
description: Execution ID.
x-example: 5e5ea5c16897e
$createdAt:
type: string
description: Execution creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Execution upate date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$permissions:
type: array
description: Execution roles.
items:
type: string
x-example:
- any
functionId:
type: string
description: Function ID.
x-example: 5e5ea6g16897e
trigger:
type: string
description: 'The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.'
x-example: http
status:
type: string
description: 'The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.'
x-example: processing
requestMethod:
type: string
description: HTTP request method type.
x-example: GET
requestPath:
type: string
description: HTTP request path and query.
x-example: /articles?id=5
requestHeaders:
type: array
description: HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
items:
$ref: '#/components/schemas/headers'
x-example:
- Content-Type: application/json
responseStatusCode:
type: integer
description: HTTP response status code.
x-example: 200
format: int32
responseBody:
type: string
description: HTTP response body. This will return empty unless execution is created as synchronous.
x-example: ''
responseHeaders:
type: array
description: HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
items:
$ref: '#/components/schemas/headers'
x-example:
- Content-Type: application/json
logs:
type: string
description: Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
x-example: ''
errors:
type: string
description: Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
x-example: ''
duration:
type: number
description: Function execution duration in seconds.
x-example: 0.4
format: double
scheduledAt:
type: string
description: The scheduled time for execution. If left empty, execution will be queued immediately.
x-example: '2020-10-15T06:38:00.000+00:00'
nullable: true
required:
- $id
- $createdAt
- $updatedAt
- $permissions
- functionId
- trigger
- status
- requestMethod
- requestPath
- requestHeaders
- responseStatusCode
- responseBody
- responseHeaders
- logs
- errors
- duration
country:
description: Country
type: object
properties:
name:
type: string
description: Country name.
x-example: United States
code:
type: string
description: Country two-character ISO 3166-1 alpha code.
x-example: US
required:
- name
- code
continent:
description: Continent
type: object
properties:
name:
type: string
description: Continent name.
x-example: Europe
code:
type: string
description: Continent two letter code.
x-example: EU
required:
- name
- code
language:
description: Language
type: object
properties:
name:
type: string
description: Language name.
x-example: Italian
code:
type: string
description: Language two-character ISO 639-1 codes.
x-example: it
nativeName:
type: string
description: Language native name.
x-example: Italiano
required:
- name
- code
- nativeName
currency:
description: Currency
type: object
properties:
symbol:
type: string
description: Currency symbol.
x-example: $
name:
type: string
description: Currency name.
x-example: US dollar
symbolNative:
type: string
description: Currency native symbol.
x-example: $
decimalDigits:
type: integer
description: Number of decimal digits.
x-example: 2
format: int32
rounding:
type: number
description: Currency digit rounding.
x-example: 0
format: double
code:
type: string
description: Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format.
x-example: USD
namePlural:
type: string
description: Currency plural name
x-example: US dollars
required:
- symbol
- name
- symbolNative
- decimalDigits
- rounding
- code
- namePlural
phone:
description: Phone
type: object
properties:
code:
type: string
description: Phone code.
x-example: '+1'
countryCode:
type: string
description: Country two-character ISO 3166-1 alpha code.
x-example: US
countryName:
type: string
description: Country name.
x-example: United States
required:
- code
- countryCode
- countryName
headers:
description: Headers
type: object
properties:
name:
type: string
description: Header name.
x-example: Content-Type
value:
type: string
description: Header value.
x-example: application/json
required:
- name
- value
mfaChallenge:
description: MFA Challenge
type: object
properties:
$id:
type: string
description: Token ID.
x-example: bb8ea5c16897e
$createdAt:
type: string
description: Token creation date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
userId:
type: string
description: User ID.
x-example: 5e5ea5c168bb8
expire:
type: string
description: Token expiration date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
required:
- $id
- $createdAt
- userId
- expire
mfaRecoveryCodes:
description: MFA Recovery Codes
type: object
properties:
recoveryCodes:
type: array
description: Recovery codes.
items:
type: string
x-example:
- a3kf0-s0cl2
- s0co1-as98s
required:
- recoveryCodes
mfaType:
description: MFAType
type: object
properties:
secret:
type: string
description: Secret token used for TOTP factor.
x-example: true
uri:
type: string
description: URI for authenticator apps.
x-example: true
required:
- secret
- uri
mfaFactors:
description: MFAFactors
type: object
properties:
totp:
type: boolean
description: Can TOTP be used for MFA challenge for this account.
x-example: true
phone:
type: boolean
description: Can phone (SMS) be used for MFA challenge for this account.
x-example: true
email:
type: boolean
description: Can email be used for MFA challenge for this account.
x-example: true
recoveryCode:
type: boolean
description: Can recovery code be used for MFA challenge for this account.
x-example: true
required:
- totp
- phone
- email
- recoveryCode
subscriber:
description: Subscriber
type: object
properties:
$id:
type: string
description: Subscriber ID.
x-example: '259125845563242502'
$createdAt:
type: string
description: Subscriber creation time in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Subscriber update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
targetId:
type: string
description: Target ID.
x-example: '259125845563242502'
target:
type: object
description: Target.
x-example:
$id: '259125845563242502'
$createdAt: '2020-10-15T06:38:00.000+00:00'
$updatedAt: '2020-10-15T06:38:00.000+00:00'
providerType: email
providerId: '259125845563242502'
name: ageon-app-email
identifier: [email protected]
userId: 5e5ea5c16897e
items:
$ref: '#/components/schemas/target'
userId:
type: string
description: Topic ID.
x-example: 5e5ea5c16897e
userName:
type: string
description: User Name.
x-example: Aegon Targaryen
topicId:
type: string
description: Topic ID.
x-example: '259125845563242502'
providerType:
type: string
description: 'The target provider type. Can be one of the following: `email`, `sms` or `push`.'
x-example: email
required:
- $id
- $createdAt
- $updatedAt
- targetId
- target
- userId
- userName
- topicId
- providerType
target:
description: Target
type: object
properties:
$id:
type: string
description: Target ID.
x-example: '259125845563242502'
$createdAt:
type: string
description: Target creation time in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
$updatedAt:
type: string
description: Target update date in ISO 8601 format.
x-example: '2020-10-15T06:38:00.000+00:00'
name:
type: string
description: Target Name.
x-example: Apple iPhone 12
userId:
type: string
description: User ID.
x-example: '259125845563242502'
providerId:
type: string
description: Provider ID.
x-example: '259125845563242502'
nullable: true
providerType:
type: string
description: 'The target provider type. Can be one of the following: `email`, `sms` or `push`.'
x-example: email
identifier:
type: string
description: The target identifier.
x-example: token
expired:
type: boolean
description: Is the target expired.
x-example: false
required:
- $id
- $createdAt
- $updatedAt
- name
- userId
- providerType
- identifier
- expired
securitySchemes:
Project:
type: apiKey
name: X-Appwrite-Project
description: Your project ID
in: header
x-appwrite:
demo: <YOUR_PROJECT_ID>
JWT:
type: apiKey
name: X-Appwrite-JWT
description: Your secret JSON Web Token
in: header
Locale:
type: apiKey
name: X-Appwrite-Locale
description: ''
in: header
x-appwrite:
demo: en
Session:
type: apiKey
name: X-Appwrite-Session
description: The user session to authenticate with
in: header
externalDocs:
description: Full API docs, specs and tutorials
url: https://appwrite.io/docs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment