Appwrite Server

Open source backend-as-a-service

appwrite.io/docs/references ↗
Version
1.5.0
OpenAPI
3.0.0
Endpoints
259
Schemas
207
Updated
3 days ago
Backend backend database authentication open-source
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://cloud.appwrite.io/v1

Authentication

apiKey apiKey apiKey apiKey apiKey apiKey

Endpoints

Clear filters

Account 14 endpoints

POST /account

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).

operationId: Account_createNewUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateNewUserRequest"
      }
    }
  }
}

Responses

201 User
POST /account
POST /account/jwt

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.

operationId: Account_createJwt

Responses

201 JWT
POST /account/jwt
POST /account/mfa/authenticators/{type}

Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#verifyAuthenticator) method.

operationId: Account_addAuthenticatorApp

Parameters

Name In Required Type Description
type path required string Type of authenticator. Must be `totp`

Responses

200 MFAType
POST /account/mfa/authenticators/{type}
POST /account/mfa/challenge

Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method.

operationId: Account_beginMfaVerification

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountBeginMfaVerificationRequest"
      }
    }
  }
}

Responses

201 MFA Challenge
POST /account/mfa/challenge
POST /account/mfa/recovery-codes

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.

operationId: Account_generateRecoveryCodes

Responses

201 MFA Recovery Codes
POST /account/mfa/recovery-codes
POST /account/recovery

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.

operationId: Account_createPasswordRecovery

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreatePasswordRecoveryRequest"
      }
    }
  }
}

Responses

201 Token
POST /account/recovery
POST /account/sessions/anonymous

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).

operationId: Account_createAnonymousSession

Responses

201 Session
POST /account/sessions/anonymous
POST /account/sessions/email

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).

operationId: Account_createEmailPasswordSession

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateEmailPasswordSessionRequest"
      }
    }
  }
}

Responses

201 Session
POST /account/sessions/email
POST /account/sessions/token

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.

operationId: Account_createTokenSession

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateTokenSessionRequest"
      }
    }
  }
}

Responses

201 Session
POST /account/sessions/token
POST /account/tokens/email

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).

operationId: Account_createEmailToken

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateEmailTokenRequest"
      }
    }
  }
}

Responses

201 Token
POST /account/tokens/email
POST /account/tokens/magic-url

Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. 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).

operationId: Account_createMagicUrlToken

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateMagicUrlTokenRequest"
      }
    }
  }
}

Responses

201 Token
POST /account/tokens/magic-url
POST /account/tokens/phone

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).

operationId: Account_createPhoneToken

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreatePhoneTokenRequest"
      }
    }
  }
}

Responses

201 Token
POST /account/tokens/phone
POST /account/verification

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.

operationId: Account_createEmailVerification

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AccountCreateEmailVerificationRequest"
      }
    }
  }
}

Responses

201 Token
POST /account/verification
POST /account/verification/phone

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.

operationId: Account_createPhoneVerification

Responses

201 Token
POST /account/verification/phone

Databases 14 endpoints

POST /databases

Create a new Database.

operationId: Databases_createDatabase

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateDatabaseRequest"
      }
    }
  }
}

Responses

201 Database
POST /databases
POST /databases/{databaseId}/collections

Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.

operationId: Databases_createCollection

Parameters

Name In Required Type Description
databaseId path required string Database ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateCollectionRequest"
      }
    }
  }
}

Responses

201 Collection
POST /databases/{databaseId}/collections
POST /databases/{databaseId}/collections/{collectionId}/attributes/boolean

Create a boolean attribute.

operationId: Databases_createBooleanAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateBooleanAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeBoolean
POST /databases/{databaseId}/collections/{collectionId}/attributes/boolean
POST /databases/{databaseId}/collections/{collectionId}/attributes/datetime

Create a date time attribute according to the ISO 8601 standard.

operationId: Databases_createDatetimeAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateDatetimeAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeDatetime
POST /databases/{databaseId}/collections/{collectionId}/attributes/datetime
POST /databases/{databaseId}/collections/{collectionId}/attributes/email

Create an email attribute.

operationId: Databases_createEmailAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateEmailAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeEmail
POST /databases/{databaseId}/collections/{collectionId}/attributes/email
POST /databases/{databaseId}/collections/{collectionId}/attributes/enum

Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute.

operationId: Databases_createEnumAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateEnumAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeEnum
POST /databases/{databaseId}/collections/{collectionId}/attributes/enum
POST /databases/{databaseId}/collections/{collectionId}/attributes/float

Create a float attribute. Optionally, minimum and maximum values can be provided.

operationId: Databases_createFloatAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateFloatAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeFloat
POST /databases/{databaseId}/collections/{collectionId}/attributes/float
POST /databases/{databaseId}/collections/{collectionId}/attributes/integer

Create an integer attribute. Optionally, minimum and maximum values can be provided.

operationId: Databases_createIntegerAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateIntegerAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeInteger
POST /databases/{databaseId}/collections/{collectionId}/attributes/integer
POST /databases/{databaseId}/collections/{collectionId}/attributes/ip

Create IP address attribute.

operationId: Databases_createIpAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateIpAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeIP
POST /databases/{databaseId}/collections/{collectionId}/attributes/ip
POST /databases/{databaseId}/collections/{collectionId}/attributes/relationship

Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).

operationId: Databases_createRelationshipAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateRelationshipAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeRelationship
POST /databases/{databaseId}/collections/{collectionId}/attributes/relationship
POST /databases/{databaseId}/collections/{collectionId}/attributes/string

Create a string attribute.

operationId: Databases_createStringAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateStringAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeString
POST /databases/{databaseId}/collections/{collectionId}/attributes/string
POST /databases/{databaseId}/collections/{collectionId}/attributes/url

Create a URL attribute.

operationId: Databases_createUrlAttribute

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateUrlAttributeRequest"
      }
    }
  }
}

Responses

202 AttributeURL
POST /databases/{databaseId}/collections/{collectionId}/attributes/url
POST /databases/{databaseId}/collections/{collectionId}/documents

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.

operationId: Databases_createDocument

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string 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.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateDocumentRequest"
      }
    }
  }
}

Responses

201 Document
POST /databases/{databaseId}/collections/{collectionId}/documents
POST /databases/{databaseId}/collections/{collectionId}/indexes

Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. Attributes can be `key`, `fulltext`, and `unique`.

operationId: Databases_createIndex

Parameters

Name In Required Type Description
databaseId path required string Database ID.
collectionId path required string Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DatabasesCreateIndexRequest"
      }
    }
  }
}

Responses

202 Index
POST /databases/{databaseId}/collections/{collectionId}/indexes

Functions 5 endpoints

POST /functions

Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API.

operationId: Functions_createNewFunction

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/FunctionsCreateNewFunctionRequest"
      }
    }
  }
}

Responses

201 Function
POST /functions
POST /functions/{functionId}/deployments

Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID. This endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions). Use the "command" param to set the entrypoint used to execute your code.

operationId: Functions_createDeploymentFunctionCode

Parameters

Name In Required Type Description
functionId path required string Function ID.

Request Body

{
  "content": {
    "multipart/form-data": {
      "schema": {
        "$ref": "#/components/schemas/FunctionsCreateDeploymentFunctionCodeRequest"
      }
    }
  }
}

Responses

202 Deployment
POST /functions/{functionId}/deployments
POST /functions/{functionId}/deployments/{deploymentId}/builds/{buildId}

Create a new build for an Appwrite Function deployment. This endpoint can be used to retry a failed build.

operationId: Functions_createBuild

Parameters

Name In Required Type Description
functionId path required string Function ID.
deploymentId path required string Deployment ID.
buildId path required string Build unique ID.

Responses

204 No content
POST /functions/{functionId}/deployments/{deploymentId}/builds/{buildId}
POST /functions/{functionId}/executions

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.

operationId: Functions_triggerExecution

Parameters

Name In Required Type Description
functionId path required string Function ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/FunctionsTriggerExecutionRequest"
      }
    }
  }
}

Responses

201 Execution
POST /functions/{functionId}/executions
POST /functions/{functionId}/variables

Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.

operationId: Functions_createVariable

Parameters

Name In Required Type Description
functionId path required string Function unique ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/FunctionsCreateVariableRequest"
      }
    }
  }
}

Responses

201 Variable
POST /functions/{functionId}/variables

Graphql 2 endpoints

POST /graphql

Execute a GraphQL mutation.

operationId: Graphql_executeMutation

Responses

200 Any
POST /graphql
POST /graphql/mutation

Execute a GraphQL mutation.

operationId: Graphql_executeMutation

Responses

200 Any
POST /graphql/mutation

Messaging 15 endpoints

POST /messaging/messages/email

Create a new email message.

operationId: Messaging_createEmailMessage

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateEmailMessageRequest"
      }
    }
  }
}

Responses

201 Message
POST /messaging/messages/email
POST /messaging/messages/push

Create a new push notification.

operationId: Messaging_createPushNotification

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreatePushNotificationRequest"
      }
    }
  }
}

Responses

201 Message
POST /messaging/messages/push
POST /messaging/messages/sms

Create a new SMS message.

operationId: Messaging_createSmsMessage

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateSmsMessageRequest"
      }
    }
  }
}

Responses

201 Message
POST /messaging/messages/sms
POST /messaging/providers/apns

Create a new Apple Push Notification service provider.

operationId: Messaging_createApnsProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateApnsProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/apns
POST /messaging/providers/fcm

Create a new Firebase Cloud Messaging provider.

operationId: Messaging_createFcmProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateFcmProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/fcm
POST /messaging/providers/mailgun

Create a new Mailgun provider.

operationId: Messaging_createProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/mailgun
POST /messaging/providers/msg91

Create a new MSG91 provider.

operationId: Messaging_createMsg91Provider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateMsg91ProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/msg91
POST /messaging/providers/sendgrid

Create a new Sendgrid provider.

operationId: Messaging_createSendgridProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateSendgridProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/sendgrid
POST /messaging/providers/smtp

Create a new SMTP provider.

operationId: Messaging_createSmtpProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateSmtpProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/smtp
POST /messaging/providers/telesign

Create a new Telesign provider.

operationId: Messaging_createTelesignProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateTelesignProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/telesign
POST /messaging/providers/textmagic

Create a new Textmagic provider.

operationId: Messaging_createTextmagicProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateTextmagicProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/textmagic
POST /messaging/providers/twilio

Create a new Twilio provider.

operationId: Messaging_createTwilioProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateTwilioProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/twilio
POST /messaging/providers/vonage

Create a new Vonage provider.

operationId: Messaging_createVonageProvider

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateVonageProviderRequest"
      }
    }
  }
}

Responses

201 Provider
POST /messaging/providers/vonage
POST /messaging/topics

Create a new topic.

operationId: Messaging_createTopic

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateTopicRequest"
      }
    }
  }
}

Responses

201 Topic
POST /messaging/topics
POST /messaging/topics/{topicId}/subscribers

Create a new subscriber.

operationId: Messaging_createSubscriber

Parameters

Name In Required Type Description
topicId path required string Topic ID. The topic ID to subscribe to.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MessagingCreateSubscriberRequest"
      }
    }
  }
}

Responses

201 Subscriber
POST /messaging/topics/{topicId}/subscribers

Storage 2 endpoints

POST /storage/buckets

Create a new storage bucket.

operationId: Storage_createNewBucket

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/StorageCreateNewBucketRequest"
      }
    }
  }
}

Responses

201 Bucket
POST /storage/buckets
POST /storage/buckets/{bucketId}/files

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.

operationId: Storage_createFile

Parameters

Name In Required Type Description
bucketId path required string Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](https://appwrite.io/docs/server/storage#createBucket).

Request Body

{
  "content": {
    "multipart/form-data": {
      "schema": {
        "$ref": "#/components/schemas/StorageCreateFileRequest"
      }
    }
  }
}

Responses

201 File
POST /storage/buckets/{bucketId}/files

Teams 2 endpoints

POST /teams

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.

operationId: Teams_createNewTeam

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TeamsCreateNewTeamRequest"
      }
    }
  }
}

Responses

201 Team
POST /teams
POST /teams/{teamId}/memberships

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.

operationId: Teams_createMembershipRequest

Parameters

Name In Required Type Description
teamId path required string Team ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TeamsCreateMembershipRequestRequest"
      }
    }
  }
}

Responses

201 Membership
POST /teams/{teamId}/memberships

Users 11 endpoints

POST /users

Create a new user.

operationId: Users_createNewUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateNewUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users
POST /users/argon2

Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createArgon2User

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateArgon2UserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/argon2
POST /users/bcrypt

Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createBcryptUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateBcryptUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/bcrypt
POST /users/md5

Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createMd5User

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateMd5UserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/md5
POST /users/phpass

Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createPhpassUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreatePhpassUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/phpass
POST /users/scrypt

Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createScryptUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateScryptUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/scrypt
POST /users/scrypt-modified

Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createScryptModifiedUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateScryptModifiedUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/scrypt-modified
POST /users/sha

Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.

operationId: Users_createShaUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateShaUserRequest"
      }
    }
  }
}

Responses

201 User
POST /users/sha
POST /users/{userId}/sessions

Creates a session for a user. Returns an immediately usable session object. If you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint.

operationId: Users_createSession

Parameters

Name In Required Type Description
userId path required string 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.

Responses

201 Session
POST /users/{userId}/sessions
POST /users/{userId}/targets

Create a messaging target.

operationId: Users_createTargetMessaging

Parameters

Name In Required Type Description
userId path required string User ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateTargetMessagingRequest"
      }
    }
  }
}

Responses

201 Target
POST /users/{userId}/targets
POST /users/{userId}/tokens

Returns a token 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 [PUT /account/sessions/custom](https://appwrite.io/docs/references/cloud/client-web/account#updateCustomSession) endpoint to complete the login process.

operationId: Users_createTokenSession

Parameters

Name In Required Type Description
userId path required string User ID.

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersCreateTokenSessionRequest"
      }
    }
  }
}

Responses

201 Token
POST /users/{userId}/tokens

Schemas

object AccountBeginMfaVerificationRequest
{
  "type": "object",
  "required": [
    "factor"
  ],
  "properties": {
    "factor": {
      "enum": [
        "email",
        "phone",
        "totp",
        "recoverycode"
      ],
      "type": "string",
      "x-example": "email",
      "description": "Factor used for verification. Must be one of following: `email`, `phone`, `totp`, `recoveryCode`.",
      "x-enum-keys": [],
      "x-enum-name": "AuthenticationFactor"
    }
  }
}
object AccountCompleteEmailVerificationRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Valid verification token."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "User ID."
    }
  }
}
object AccountCompleteMfaChallengeRequest
{
  "type": "object",
  "required": [
    "challengeId",
    "otp"
  ],
  "properties": {
    "otp": {
      "type": "string",
      "x-example": "<OTP>",
      "description": "Valid verification token."
    },
    "challengeId": {
      "type": "string",
      "x-example": "<CHALLENGE_ID>",
      "description": "ID of the challenge."
    }
  }
}
object AccountCompletePasswordRecoveryRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret",
    "password"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Valid reset token."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "User ID."
    },
    "password": {
      "type": "string",
      "x-example": null,
      "description": "New user password. Must be between 8 and 256 chars."
    }
  }
}
object AccountConfirmPhoneVerificationRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Valid verification token."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "User ID."
    }
  }
}
object AccountCreateEmailPasswordSessionRequest
{
  "type": "object",
  "required": [
    "email",
    "password"
  ],
  "properties": {
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password. Must be at least 8 chars."
    }
  }
}
object AccountCreateEmailTokenRequest
{
  "type": "object",
  "required": [
    "userId",
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "phrase": {
      "type": "boolean",
      "x-example": false,
      "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."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountCreateEmailVerificationRequest
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "x-example": "https://example.com",
      "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."
    }
  }
}
object AccountCreateMagicUrlTokenRequest
{
  "type": "object",
  "required": [
    "userId",
    "email"
  ],
  "properties": {
    "url": {
      "type": "string",
      "x-example": "https://example.com",
      "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."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "phrase": {
      "type": "boolean",
      "x-example": false,
      "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."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountCreateNewUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": null,
      "description": "New user password. Must be between 8 and 256 chars."
    }
  }
}
object AccountCreatePasswordRecoveryRequest
{
  "type": "object",
  "required": [
    "email",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "x-example": "https://example.com",
      "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."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    }
  }
}
object AccountCreatePhoneTokenRequest
{
  "type": "object",
  "required": [
    "userId",
    "phone"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountCreateTokenSessionRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Secret of a token generated by login methods. For example, the `createMagicURLToken` or `createPhoneToken` methods."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountDeleteAuthenticatorByIdRequest
{
  "type": "object",
  "required": [
    "otp"
  ],
  "properties": {
    "otp": {
      "type": "string",
      "x-example": "<OTP>",
      "description": "Valid verification token."
    }
  }
}
object AccountUpdateEmailAddressRequest
{
  "type": "object",
  "required": [
    "email",
    "password"
  ],
  "properties": {
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password. Must be at least 8 chars."
    }
  }
}
object AccountUpdateMagicUrlSessionRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Valid verification token."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountUpdateMfaStatusRequest
{
  "type": "object",
  "required": [
    "mfa"
  ],
  "properties": {
    "mfa": {
      "type": "boolean",
      "x-example": false,
      "description": "Enable or disable MFA."
    }
  }
}
object AccountUpdateNameOperationRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    }
  }
}
object AccountUpdatePasswordOperationRequest
{
  "type": "object",
  "required": [
    "password"
  ],
  "properties": {
    "password": {
      "type": "string",
      "x-example": null,
      "description": "New user password. Must be at least 8 chars."
    },
    "oldPassword": {
      "type": "string",
      "x-example": "password",
      "description": "Current user password. Must be at least 8 chars."
    }
  }
}
object AccountUpdatePhoneRequest
{
  "type": "object",
  "required": [
    "phone",
    "password"
  ],
  "properties": {
    "phone": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password. Must be at least 8 chars."
    }
  }
}
object AccountUpdatePhoneSessionRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Valid verification token."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    }
  }
}
object AccountUpdatePreferencesRequest
{
  "type": "object",
  "required": [
    "prefs"
  ],
  "properties": {
    "prefs": {
      "type": "object",
      "x-example": "{}",
      "description": "Prefs key-value JSON object."
    }
  }
}
object AccountVerifyAuthenticatorRequest
{
  "type": "object",
  "required": [
    "otp"
  ],
  "properties": {
    "otp": {
      "type": "string",
      "x-example": "<OTP>",
      "description": "Valid verification token."
    }
  }
}
object DatabasesCreateBooleanAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "boolean",
      "x-example": false,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateCollectionRequest
{
  "type": "object",
  "required": [
    "collectionId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Collection name. Max length: 128 chars."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled."
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "collectionId": {
      "type": "string",
      "x-example": "<COLLECTION_ID>",
      "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."
    },
    "documentSecurity": {
      "type": "boolean",
      "x-example": false,
      "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    }
  }
}
object DatabasesCreateDatabaseRequest
{
  "type": "object",
  "required": [
    "databaseId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Database name. Max length: 128 chars."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is the database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled."
    },
    "databaseId": {
      "type": "string",
      "x-example": "<DATABASE_ID>",
      "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."
    }
  }
}
object DatabasesCreateDatetimeAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": null,
      "description": "Default value for the attribute in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateDocumentRequest
{
  "type": "object",
  "required": [
    "documentId",
    "data"
  ],
  "properties": {
    "data": {
      "type": "object",
      "x-example": "{}",
      "description": "Document data as JSON object."
    },
    "documentId": {
      "type": "string",
      "x-example": "<DOCUMENT_ID>",
      "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."
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "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)."
    }
  }
}
object DatabasesCreateEmailAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateEnumAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "elements",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": "<DEFAULT>",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "elements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateFloatAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "max": {
      "type": "number",
      "x-example": null,
      "description": "Maximum value to enforce on new documents"
    },
    "min": {
      "type": "number",
      "x-example": null,
      "description": "Minimum value to enforce on new documents"
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "number",
      "x-example": null,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateIndexRequest
{
  "type": "object",
  "required": [
    "key",
    "type",
    "attributes"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Index Key."
    },
    "type": {
      "enum": [
        "key",
        "fulltext",
        "unique"
      ],
      "type": "string",
      "x-example": "key",
      "description": "Index type.",
      "x-enum-keys": [],
      "x-enum-name": "IndexType"
    },
    "orders": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of index orders. Maximum of 100 orders are allowed."
    },
    "attributes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long."
    }
  }
}
object DatabasesCreateIntegerAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "max": {
      "type": "integer",
      "x-example": null,
      "description": "Maximum value to enforce on new documents"
    },
    "min": {
      "type": "integer",
      "x-example": null,
      "description": "Minimum value to enforce on new documents"
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "integer",
      "x-example": null,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateIpAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": null,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateRelationshipAttributeRequest
{
  "type": "object",
  "required": [
    "relatedCollectionId",
    "type"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "type": {
      "enum": [
        "oneToOne",
        "manyToOne",
        "manyToMany",
        "oneToMany"
      ],
      "type": "string",
      "x-example": "oneToOne",
      "description": "Relation type",
      "x-enum-keys": [],
      "x-enum-name": "RelationshipType"
    },
    "twoWay": {
      "type": "boolean",
      "x-example": false,
      "description": "Is Two Way?"
    },
    "onDelete": {
      "enum": [
        "cascade",
        "restrict",
        "setNull"
      ],
      "type": "string",
      "x-example": "cascade",
      "description": "Constraints option",
      "x-enum-keys": [],
      "x-enum-name": "RelationMutate"
    },
    "twoWayKey": {
      "type": "string",
      "x-example": null,
      "description": "Two Way Attribute Key."
    },
    "relatedCollectionId": {
      "type": "string",
      "x-example": "<RELATED_COLLECTION_ID>",
      "description": "Related Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection)."
    }
  }
}
object DatabasesCreateStringAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "size",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "size": {
      "type": "integer",
      "x-example": 1,
      "description": "Attribute size for text attributes, in number of characters."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": "<DEFAULT>",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "encrypt": {
      "type": "boolean",
      "x-example": false,
      "description": "Toggle encryption for the attribute. Encryption enhances security by not storing any plain text values in the database. However, encrypted attributes cannot be queried."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesCreateUrlAttributeRequest
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": null,
      "description": "Attribute Key."
    },
    "array": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "default": {
      "type": "string",
      "x-example": "https://example.com",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesGetAttributeByIdResponse
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/attributeBoolean"
    },
    {
      "$ref": "#/components/schemas/attributeInteger"
    },
    {
      "$ref": "#/components/schemas/attributeFloat"
    },
    {
      "$ref": "#/components/schemas/attributeEmail"
    },
    {
      "$ref": "#/components/schemas/attributeEnum"
    },
    {
      "$ref": "#/components/schemas/attributeUrl"
    },
    {
      "$ref": "#/components/schemas/attributeIp"
    },
    {
      "$ref": "#/components/schemas/attributeDatetime"
    },
    {
      "$ref": "#/components/schemas/attributeRelationship"
    },
    {
      "$ref": "#/components/schemas/attributeString"
    }
  ]
}
object DatabasesUpdateBooleanAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "boolean",
      "x-example": false,
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateByIdRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Database name. Max length: 128 chars."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is database enabled? When set to 'disabled', users cannot access the database but Server SDKs with an API key can still read and write to the database. No data is lost when this is toggled."
    }
  }
}
object DatabasesUpdateCollectionByIdRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Collection name. Max length: 128 chars."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is collection enabled? When set to 'disabled', users cannot access the collection but Server SDKs with and API key can still read and write to the collection. No data is lost when this is toggled."
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "documentSecurity": {
      "type": "boolean",
      "x-example": false,
      "description": "Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    }
  }
}
object DatabasesUpdateDatetimeAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": null,
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateDocumentByIdRequest
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "x-example": "{}",
      "description": "Document data as JSON object. Include only attribute and value pairs to be updated."
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    }
  }
}
object DatabasesUpdateEmailAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": "email@example.com",
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateEnumAttributeRequest
{
  "type": "object",
  "required": [
    "elements",
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": "<DEFAULT>",
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "elements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 255 characters long."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateFloatAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "min",
    "max",
    "default"
  ],
  "properties": {
    "max": {
      "type": "number",
      "x-example": null,
      "description": "Maximum value to enforce on new documents"
    },
    "min": {
      "type": "number",
      "x-example": null,
      "description": "Minimum value to enforce on new documents"
    },
    "default": {
      "type": "number",
      "x-example": null,
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateIntegerAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "min",
    "max",
    "default"
  ],
  "properties": {
    "max": {
      "type": "integer",
      "x-example": null,
      "description": "Maximum value to enforce on new documents"
    },
    "min": {
      "type": "integer",
      "x-example": null,
      "description": "Minimum value to enforce on new documents"
    },
    "default": {
      "type": "integer",
      "x-example": null,
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateIpAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": null,
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateRelationshipAttributeRequest
{
  "type": "object",
  "properties": {
    "onDelete": {
      "enum": [
        "cascade",
        "restrict",
        "setNull"
      ],
      "type": "string",
      "x-example": "cascade",
      "description": "Constraints option",
      "x-enum-keys": [],
      "x-enum-name": "RelationMutate"
    }
  }
}
object DatabasesUpdateStringAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": "<DEFAULT>",
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object DatabasesUpdateUrlAttributeRequest
{
  "type": "object",
  "required": [
    "required",
    "default"
  ],
  "properties": {
    "default": {
      "type": "string",
      "x-example": "https://example.com",
      "x-nullable": true,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": false,
      "description": "Is attribute required?"
    }
  }
}
object FunctionsCreateDeploymentFunctionCodeRequest
{
  "type": "object",
  "required": [
    "code",
    "activate"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": null,
      "description": "Gzip file with your code package. When used with the Appwrite CLI, pass the path to your code directory, and the CLI will automatically package your code. Use a path that is within the current directory."
    },
    "activate": {
      "type": "boolean",
      "x-example": false,
      "description": "Automatically activate the deployment when it is finished building."
    },
    "commands": {
      "type": "string",
      "x-example": "<COMMANDS>",
      "description": "Build Commands."
    },
    "entrypoint": {
      "type": "string",
      "x-example": "<ENTRYPOINT>",
      "description": "Entrypoint File."
    }
  }
}
object FunctionsCreateNewFunctionRequest
{
  "type": "object",
  "required": [
    "functionId",
    "name",
    "runtime"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Function name. Max length: 128 chars."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Events list. Maximum of 100 events are allowed."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled."
    },
    "execute": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"any\"]",
      "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long."
    },
    "logging": {
      "type": "boolean",
      "x-example": false,
      "description": "Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project."
    },
    "runtime": {
      "enum": [
        "node-14.5",
        "node-16.0",
        "node-18.0",
        "node-19.0",
        "node-20.0",
        "node-21.0",
        "php-8.0",
        "php-8.1",
        "php-8.2",
        "php-8.3",
        "ruby-3.0",
        "ruby-3.1",
        "ruby-3.2",
        "ruby-3.3",
        "python-3.8",
        "python-3.9",
        "python-3.10",
        "python-3.11",
        "python-3.12",
        "deno-1.40",
        "dart-2.15",
        "dart-2.16",
        "dart-2.17",
        "dart-2.18",
        "dart-3.0",
        "dart-3.1",
        "dart-3.3",
        "dotnet-3.1",
        "dotnet-6.0",
        "dotnet-7.0",
        "java-8.0",
        "java-11.0",
        "java-17.0",
        "java-18.0",
        "java-21.0",
        "swift-5.5",
        "swift-5.8",
        "swift-5.9",
        "kotlin-1.6",
        "kotlin-1.8",
        "kotlin-1.9",
        "cpp-17",
        "cpp-20",
        "bun-1.0"
      ],
      "type": "string",
      "x-example": "node-14.5",
      "description": "Execution runtime.",
      "x-enum-keys": [],
      "x-enum-name": null
    },
    "timeout": {
      "type": "integer",
      "x-example": 1,
      "description": "Function maximum execution time in seconds."
    },
    "commands": {
      "type": "string",
      "x-example": "<COMMANDS>",
      "description": "Build Commands."
    },
    "schedule": {
      "type": "string",
      "x-example": null,
      "description": "Schedule CRON syntax."
    },
    "entrypoint": {
      "type": "string",
      "x-example": "<ENTRYPOINT>",
      "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\"."
    },
    "functionId": {
      "type": "string",
      "x-example": "<FUNCTION_ID>",
      "description": "Function 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."
    },
    "templateOwner": {
      "type": "string",
      "x-example": "<TEMPLATE_OWNER>",
      "description": "The name of the owner of the template."
    },
    "installationId": {
      "type": "string",
      "x-example": "<INSTALLATION_ID>",
      "description": "Appwrite Installation ID for VCS (Version Control System) deployment."
    },
    "providerBranch": {
      "type": "string",
      "x-example": "<PROVIDER_BRANCH>",
      "description": "Production branch for the repo linked to the function."
    },
    "templateBranch": {
      "type": "string",
      "x-example": "<TEMPLATE_BRANCH>",
      "description": "Production branch for the repo linked to the function template."
    },
    "providerSilentMode": {
      "type": "boolean",
      "x-example": false,
      "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests."
    },
    "templateRepository": {
      "type": "string",
      "x-example": "<TEMPLATE_REPOSITORY>",
      "description": "Repository name of the template."
    },
    "providerRepositoryId": {
      "type": "string",
      "x-example": "<PROVIDER_REPOSITORY_ID>",
      "description": "Repository ID of the repo linked to the function."
    },
    "providerRootDirectory": {
      "type": "string",
      "x-example": "<PROVIDER_ROOT_DIRECTORY>",
      "description": "Path to function code in the linked repo."
    },
    "templateRootDirectory": {
      "type": "string",
      "x-example": "<TEMPLATE_ROOT_DIRECTORY>",
      "description": "Path to function code in the template repo."
    }
  }
}
object FunctionsCreateVariableRequest
{
  "type": "object",
  "required": [
    "key",
    "value"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "<KEY>",
      "description": "Variable key. Max length: 255 chars."
    },
    "value": {
      "type": "string",
      "x-example": "<VALUE>",
      "description": "Variable value. Max length: 8192 chars."
    }
  }
}
object FunctionsTriggerExecutionRequest
{
  "type": "object",
  "properties": {
    "body": {
      "type": "string",
      "x-example": "<BODY>",
      "description": "HTTP body of execution. Default value is empty string."
    },
    "path": {
      "type": "string",
      "x-example": "<PATH>",
      "description": "HTTP path of execution. Path can include query params. Default value is /"
    },
    "async": {
      "type": "boolean",
      "x-example": false,
      "description": "Execute code in the background. Default value is false."
    },
    "method": {
      "enum": [
        "GET",
        "POST",
        "PUT",
        "PATCH",
        "DELETE",
        "OPTIONS"
      ],
      "type": "string",
      "x-example": "GET",
      "description": "HTTP method of execution. Default value is GET.",
      "x-enum-keys": [],
      "x-enum-name": "ExecutionMethod"
    },
    "headers": {
      "type": "object",
      "x-example": "{}",
      "description": "HTTP headers of execution. Defaults to empty."
    }
  }
}
object FunctionsUpdateByIdRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Function name. Max length: 128 chars."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Events list. Maximum of 100 events are allowed."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is function enabled? When set to 'disabled', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled."
    },
    "execute": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"any\"]",
      "description": "An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long."
    },
    "logging": {
      "type": "boolean",
      "x-example": false,
      "description": "Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project."
    },
    "runtime": {
      "enum": [
        "node-14.5",
        "node-16.0",
        "node-18.0",
        "node-19.0",
        "node-20.0",
        "node-21.0",
        "php-8.0",
        "php-8.1",
        "php-8.2",
        "php-8.3",
        "ruby-3.0",
        "ruby-3.1",
        "ruby-3.2",
        "ruby-3.3",
        "python-3.8",
        "python-3.9",
        "python-3.10",
        "python-3.11",
        "python-3.12",
        "deno-1.40",
        "dart-2.15",
        "dart-2.16",
        "dart-2.17",
        "dart-2.18",
        "dart-3.0",
        "dart-3.1",
        "dart-3.3",
        "dotnet-3.1",
        "dotnet-6.0",
        "dotnet-7.0",
        "java-8.0",
        "java-11.0",
        "java-17.0",
        "java-18.0",
        "java-21.0",
        "swift-5.5",
        "swift-5.8",
        "swift-5.9",
        "kotlin-1.6",
        "kotlin-1.8",
        "kotlin-1.9",
        "cpp-17",
        "cpp-20",
        "bun-1.0"
      ],
      "type": "string",
      "x-example": "node-14.5",
      "description": "Execution runtime.",
      "x-enum-keys": [],
      "x-enum-name": null
    },
    "timeout": {
      "type": "integer",
      "x-example": 1,
      "description": "Maximum execution time in seconds."
    },
    "commands": {
      "type": "string",
      "x-example": "<COMMANDS>",
      "description": "Build Commands."
    },
    "schedule": {
      "type": "string",
      "x-example": null,
      "description": "Schedule CRON syntax."
    },
    "entrypoint": {
      "type": "string",
      "x-example": "<ENTRYPOINT>",
      "description": "Entrypoint File. This path is relative to the \"providerRootDirectory\"."
    },
    "installationId": {
      "type": "string",
      "x-example": "<INSTALLATION_ID>",
      "description": "Appwrite Installation ID for VCS (Version Controle System) deployment."
    },
    "providerBranch": {
      "type": "string",
      "x-example": "<PROVIDER_BRANCH>",
      "description": "Production branch for the repo linked to the function"
    },
    "providerSilentMode": {
      "type": "boolean",
      "x-example": false,
      "description": "Is the VCS (Version Control System) connection in silent mode for the repo linked to the function? In silent mode, comments will not be made on commits and pull requests."
    },
    "providerRepositoryId": {
      "type": "string",
      "x-example": "<PROVIDER_REPOSITORY_ID>",
      "description": "Repository ID of the repo linked to the function"
    },
    "providerRootDirectory": {
      "type": "string",
      "x-example": "<PROVIDER_ROOT_DIRECTORY>",
      "description": "Path to function code in the linked repo."
    }
  }
}
object FunctionsUpdateVariableByIdRequest
{
  "type": "object",
  "required": [
    "key"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "<KEY>",
      "description": "Variable key. Max length: 255 chars."
    },
    "value": {
      "type": "string",
      "x-example": "<VALUE>",
      "description": "Variable value. Max length: 8192 chars."
    }
  }
}
object MessagingCreateApnsProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "teamId": {
      "type": "string",
      "x-example": "<TEAM_ID>",
      "description": "APNS team ID."
    },
    "authKey": {
      "type": "string",
      "x-example": "<AUTH_KEY>",
      "description": "APNS authentication key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "sandbox": {
      "type": "boolean",
      "x-example": false,
      "description": "Use APNS sandbox environment."
    },
    "bundleId": {
      "type": "string",
      "x-example": "<BUNDLE_ID>",
      "description": "APNS bundle ID."
    },
    "authKeyId": {
      "type": "string",
      "x-example": "<AUTH_KEY_ID>",
      "description": "APNS authentication key ID."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingCreateEmailMessageRequest
{
  "type": "object",
  "required": [
    "messageId",
    "subject",
    "content"
  ],
  "properties": {
    "cc": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of target IDs to be added as CC."
    },
    "bcc": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of target IDs to be added as BCC."
    },
    "html": {
      "type": "boolean",
      "x-example": false,
      "description": "Is content of type HTML"
    },
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "content": {
      "type": "string",
      "x-example": "<CONTENT>",
      "description": "Email Content."
    },
    "subject": {
      "type": "string",
      "x-example": "<SUBJECT>",
      "description": "Email Subject."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "messageId": {
      "type": "string",
      "x-example": "<MESSAGE_ID>",
      "description": "Message 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."
    },
    "attachments": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of compound bucket IDs to file IDs to be attached to the email."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingCreateFcmProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    },
    "serviceAccountJSON": {
      "type": "object",
      "x-example": "{}",
      "description": "FCM service account JSON."
    }
  }
}
object MessagingCreateMsg91ProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "from": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "authKey": {
      "type": "string",
      "x-example": "<AUTH_KEY>",
      "description": "Msg91 Auth Key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "senderId": {
      "type": "string",
      "x-example": "<SENDER_ID>",
      "description": "Msg91 Sender ID."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingCreateProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Mailgun API Key."
    },
    "domain": {
      "type": "string",
      "x-example": "<DOMAIN>",
      "description": "Mailgun Domain."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "isEuRegion": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as EU region."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well."
    }
  }
}
object MessagingCreatePushNotificationRequest
{
  "type": "object",
  "required": [
    "messageId",
    "title",
    "body"
  ],
  "properties": {
    "tag": {
      "type": "string",
      "x-example": "<TAG>",
      "description": "Tag for push notification. Available only for Android Platform."
    },
    "body": {
      "type": "string",
      "x-example": "<BODY>",
      "description": "Body for push notification."
    },
    "data": {
      "type": "object",
      "x-example": "{}",
      "description": "Additional Data for push notification."
    },
    "icon": {
      "type": "string",
      "x-example": "<ICON>",
      "description": "Icon for push notification. Available only for Android and Web Platform."
    },
    "badge": {
      "type": "string",
      "x-example": "<BADGE>",
      "description": "Badge for push notification. Available only for IOS Platform."
    },
    "color": {
      "type": "string",
      "x-example": "<COLOR>",
      "description": "Color for push notification. Available only for Android Platform."
    },
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "image": {
      "type": "string",
      "x-example": "[ID1:ID2]",
      "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage."
    },
    "sound": {
      "type": "string",
      "x-example": "<SOUND>",
      "description": "Sound for push notification. Available only for Android and IOS Platform."
    },
    "title": {
      "type": "string",
      "x-example": "<TITLE>",
      "description": "Title for push notification."
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "action": {
      "type": "string",
      "x-example": "<ACTION>",
      "description": "Action for push notification."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "messageId": {
      "type": "string",
      "x-example": "<MESSAGE_ID>",
      "description": "Message 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."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingCreateSendgridProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Sendgrid API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the reply to field for the mail. Default value is sender name."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Email set in the reply to field for the mail. Default value is sender email."
    }
  }
}
object MessagingCreateSmsMessageRequest
{
  "type": "object",
  "required": [
    "messageId",
    "content"
  ],
  "properties": {
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "content": {
      "type": "string",
      "x-example": "<CONTENT>",
      "description": "SMS Content."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "messageId": {
      "type": "string",
      "x-example": "<MESSAGE_ID>",
      "description": "Message 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."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingCreateSmtpProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name",
    "host"
  ],
  "properties": {
    "host": {
      "type": "string",
      "x-example": "<HOST>",
      "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "port": {
      "type": "integer",
      "x-example": 1,
      "description": "The default SMTP server port."
    },
    "mailer": {
      "type": "string",
      "x-example": "<MAILER>",
      "description": "The value to use for the X-Mailer header."
    },
    "autoTLS": {
      "type": "boolean",
      "x-example": false,
      "description": "Enable SMTP AutoTLS feature."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "password": {
      "type": "string",
      "x-example": "<PASSWORD>",
      "description": "Authentication password."
    },
    "username": {
      "type": "string",
      "x-example": "<USERNAME>",
      "description": "Authentication username."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "encryption": {
      "enum": [
        "none",
        "ssl",
        "tls"
      ],
      "type": "string",
      "x-example": "none",
      "description": "Encryption type. Can be omitted, 'ssl', or 'tls'",
      "x-enum-keys": [],
      "x-enum-name": "SmtpEncryption"
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the reply to field for the mail. Default value is sender name."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Email set in the reply to field for the mail. Default value is sender email."
    }
  }
}
object MessagingCreateSubscriberRequest
{
  "type": "object",
  "required": [
    "subscriberId",
    "targetId"
  ],
  "properties": {
    "targetId": {
      "type": "string",
      "x-example": "<TARGET_ID>",
      "description": "Target ID. The target ID to link to the specified Topic ID."
    },
    "subscriberId": {
      "type": "string",
      "x-example": "<SUBSCRIBER_ID>",
      "description": "Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID."
    }
  }
}
object MessagingCreateTelesignProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "from": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Telesign API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "customerId": {
      "type": "string",
      "x-example": "<CUSTOMER_ID>",
      "description": "Telesign customer ID."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingCreateTextmagicProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "from": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Textmagic apiKey."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "username": {
      "type": "string",
      "x-example": "<USERNAME>",
      "description": "Textmagic username."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingCreateTopicRequest
{
  "type": "object",
  "required": [
    "topicId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Topic Name."
    },
    "topicId": {
      "type": "string",
      "x-example": "<TOPIC_ID>",
      "description": "Topic ID. Choose a custom Topic ID or a new Topic ID."
    },
    "subscribe": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"any\"]",
      "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long."
    }
  }
}
object MessagingCreateTwilioProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "from": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "authToken": {
      "type": "string",
      "x-example": "<AUTH_TOKEN>",
      "description": "Twilio authentication token."
    },
    "accountSid": {
      "type": "string",
      "x-example": "<ACCOUNT_SID>",
      "description": "Twilio account secret ID."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingCreateVonageProviderRequest
{
  "type": "object",
  "required": [
    "providerId",
    "name"
  ],
  "properties": {
    "from": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Vonage API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "apiSecret": {
      "type": "string",
      "x-example": "<API_SECRET>",
      "description": "Vonage API secret."
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "description": "Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars."
    }
  }
}
object MessagingUpdateApnsProviderRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "teamId": {
      "type": "string",
      "x-example": "<TEAM_ID>",
      "description": "APNS team ID."
    },
    "authKey": {
      "type": "string",
      "x-example": "<AUTH_KEY>",
      "description": "APNS authentication key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "sandbox": {
      "type": "boolean",
      "x-example": false,
      "description": "Use APNS sandbox environment."
    },
    "bundleId": {
      "type": "string",
      "x-example": "<BUNDLE_ID>",
      "description": "APNS bundle ID."
    },
    "authKeyId": {
      "type": "string",
      "x-example": "<AUTH_KEY_ID>",
      "description": "APNS authentication key ID."
    }
  }
}
object MessagingUpdateEmailByIdRequest
{
  "type": "object",
  "properties": {
    "cc": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of target IDs to be added as CC."
    },
    "bcc": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of target IDs to be added as BCC."
    },
    "html": {
      "type": "boolean",
      "x-example": false,
      "description": "Is content of type HTML"
    },
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "content": {
      "type": "string",
      "x-example": "<CONTENT>",
      "description": "Email Content."
    },
    "subject": {
      "type": "string",
      "x-example": "<SUBJECT>",
      "description": "Email Subject."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingUpdateFcmProviderByIdRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "serviceAccountJSON": {
      "type": "object",
      "x-example": "{}",
      "description": "FCM service account JSON."
    }
  }
}
object MessagingUpdateMailgunProviderRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Mailgun API Key."
    },
    "domain": {
      "type": "string",
      "x-example": "<DOMAIN>",
      "description": "Mailgun Domain."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "isEuRegion": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as EU region."
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the reply to field for the mail. Default value is sender name."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "<REPLY_TO_EMAIL>",
      "description": "Email set in the reply to field for the mail. Default value is sender email."
    }
  }
}
object MessagingUpdateMsg91ProviderRequest
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "x-example": "<FROM>",
      "description": "Sender number."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "authKey": {
      "type": "string",
      "x-example": "<AUTH_KEY>",
      "description": "Msg91 Auth Key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "senderId": {
      "type": "string",
      "x-example": "<SENDER_ID>",
      "description": "Msg91 Sender ID."
    }
  }
}
object MessagingUpdateProviderByIdRequest
{
  "type": "object",
  "properties": {
    "host": {
      "type": "string",
      "x-example": "<HOST>",
      "description": "SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "port": {
      "type": "integer",
      "x-example": 1,
      "description": "SMTP port."
    },
    "mailer": {
      "type": "string",
      "x-example": "<MAILER>",
      "description": "The value to use for the X-Mailer header."
    },
    "autoTLS": {
      "type": "boolean",
      "x-example": false,
      "description": "Enable SMTP AutoTLS feature."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "password": {
      "type": "string",
      "x-example": "<PASSWORD>",
      "description": "Authentication password."
    },
    "username": {
      "type": "string",
      "x-example": "<USERNAME>",
      "description": "Authentication username."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "encryption": {
      "enum": [
        "none",
        "ssl",
        "tls"
      ],
      "type": "string",
      "x-example": "none",
      "description": "Encryption type. Can be 'ssl' or 'tls'",
      "x-enum-keys": [],
      "x-enum-name": "SmtpEncryption"
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the Reply To field for the mail. Default value is Sender Name."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "<REPLY_TO_EMAIL>",
      "description": "Email set in the Reply To field for the mail. Default value is Sender Email."
    }
  }
}
object MessagingUpdateProviderRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Sendgrid API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "fromName": {
      "type": "string",
      "x-example": "<FROM_NAME>",
      "description": "Sender Name."
    },
    "fromEmail": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Sender email address."
    },
    "replyToName": {
      "type": "string",
      "x-example": "<REPLY_TO_NAME>",
      "description": "Name set in the Reply To field for the mail. Default value is Sender Name."
    },
    "replyToEmail": {
      "type": "string",
      "x-example": "<REPLY_TO_EMAIL>",
      "description": "Email set in the Reply To field for the mail. Default value is Sender Email."
    }
  }
}
object MessagingUpdatePushNotificationRequest
{
  "type": "object",
  "properties": {
    "tag": {
      "type": "string",
      "x-example": "<TAG>",
      "description": "Tag for push notification. Available only for Android platforms."
    },
    "body": {
      "type": "string",
      "x-example": "<BODY>",
      "description": "Body for push notification."
    },
    "data": {
      "type": "object",
      "x-example": "{}",
      "description": "Additional Data for push notification."
    },
    "icon": {
      "type": "string",
      "x-example": "<ICON>",
      "description": "Icon for push notification. Available only for Android and Web platforms."
    },
    "badge": {
      "type": "integer",
      "x-example": null,
      "description": "Badge for push notification. Available only for iOS platforms."
    },
    "color": {
      "type": "string",
      "x-example": "<COLOR>",
      "description": "Color for push notification. Available only for Android platforms."
    },
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "image": {
      "type": "string",
      "x-example": "[ID1:ID2]",
      "description": "Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage."
    },
    "sound": {
      "type": "string",
      "x-example": "<SOUND>",
      "description": "Sound for push notification. Available only for Android and iOS platforms."
    },
    "title": {
      "type": "string",
      "x-example": "<TITLE>",
      "description": "Title for push notification."
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "action": {
      "type": "string",
      "x-example": "<ACTION>",
      "description": "Action for push notification."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingUpdateSmsMessageRequest
{
  "type": "object",
  "properties": {
    "draft": {
      "type": "boolean",
      "x-example": false,
      "description": "Is message a draft"
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of User IDs."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Topic IDs."
    },
    "content": {
      "type": "string",
      "x-example": "<CONTENT>",
      "description": "Email Content."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "List of Targets IDs."
    },
    "scheduledAt": {
      "type": "string",
      "x-example": null,
      "description": "Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future."
    }
  }
}
object MessagingUpdateTelesignProviderRequest
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "x-example": "<FROM>",
      "description": "Sender number."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Telesign API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "customerId": {
      "type": "string",
      "x-example": "<CUSTOMER_ID>",
      "description": "Telesign customer ID."
    }
  }
}
object MessagingUpdateTextmagicProviderRequest
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "x-example": "<FROM>",
      "description": "Sender number."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Textmagic apiKey."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "username": {
      "type": "string",
      "x-example": "<USERNAME>",
      "description": "Textmagic username."
    }
  }
}
object MessagingUpdateTopicByIdRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Topic Name."
    },
    "subscribe": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"any\"]",
      "description": "An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long."
    }
  }
}
object MessagingUpdateTwilioProviderRequest
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "x-example": "<FROM>",
      "description": "Sender number."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "authToken": {
      "type": "string",
      "x-example": "<AUTH_TOKEN>",
      "description": "Twilio authentication token."
    },
    "accountSid": {
      "type": "string",
      "x-example": "<ACCOUNT_SID>",
      "description": "Twilio account secret ID."
    }
  }
}
object MessagingUpdateVonageProviderRequest
{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "x-example": "<FROM>",
      "description": "Sender number."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Provider name."
    },
    "apiKey": {
      "type": "string",
      "x-example": "<API_KEY>",
      "description": "Vonage API key."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Set as enabled."
    },
    "apiSecret": {
      "type": "string",
      "x-example": "<API_SECRET>",
      "description": "Vonage API secret."
    }
  }
}
object StorageCreateFileRequest
{
  "type": "object",
  "required": [
    "fileId",
    "file"
  ],
  "properties": {
    "file": {
      "type": "string",
      "x-example": null,
      "description": "Binary file. Appwrite SDKs provide helpers to handle file input. [Learn about file input](https://appwrite.io/docs/storage#file-input)."
    },
    "fileId": {
      "type": "string",
      "x-example": "<FILE_ID>",
      "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-upload-id": true
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "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)."
    }
  }
}
object StorageCreateNewBucketRequest
{
  "type": "object",
  "required": [
    "bucketId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Bucket name"
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled."
    },
    "bucketId": {
      "type": "string",
      "x-example": "<BUCKET_ID>",
      "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."
    },
    "antivirus": {
      "type": "boolean",
      "x-example": false,
      "description": "Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled"
    },
    "encryption": {
      "type": "boolean",
      "x-example": false,
      "description": "Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled"
    },
    "compression": {
      "enum": [
        "none",
        "gzip",
        "zstd"
      ],
      "type": "string",
      "x-example": "none",
      "description": "Compression algorithm choosen for compression. Can be one of none,  [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled",
      "x-enum-keys": [],
      "x-enum-name": null
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "fileSecurity": {
      "type": "boolean",
      "x-example": false,
      "description": "Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "maximumFileSize": {
      "type": "integer",
      "x-example": 1,
      "description": "Maximum file size allowed in bytes. Maximum allowed value is 30MB."
    },
    "allowedFileExtensions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long."
    }
  }
}
object StorageUpdateBucketByIdRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Bucket name"
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Is bucket enabled? When set to 'disabled', users cannot access the files in this bucket but Server SDKs with and API key can still access the bucket. No files are lost when this is toggled."
    },
    "antivirus": {
      "type": "boolean",
      "x-example": false,
      "description": "Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled"
    },
    "encryption": {
      "type": "boolean",
      "x-example": false,
      "description": "Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled"
    },
    "compression": {
      "enum": [
        "none",
        "gzip",
        "zstd"
      ],
      "type": "string",
      "x-example": "none",
      "description": "Compression algorithm choosen for compression. Can be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled",
      "x-enum-keys": [],
      "x-enum-name": null
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "fileSecurity": {
      "type": "boolean",
      "x-example": false,
      "description": "Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "maximumFileSize": {
      "type": "integer",
      "x-example": 1,
      "description": "Maximum file size allowed in bytes. Maximum allowed value is 30MB."
    },
    "allowedFileExtensions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long."
    }
  }
}
object StorageUpdateFileByIdRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Name of the file"
    },
    "permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "[\"read(\"any\")\"]",
      "description": "An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    }
  }
}
object TeamsCreateMembershipRequestRequest
{
  "type": "object",
  "required": [
    "roles"
  ],
  "properties": {
    "url": {
      "type": "string",
      "x-example": "https://example.com",
      "description": "URL to redirect the user back to your app from the invitation 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."
    },
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Name of the new team member. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "Email of the new team member."
    },
    "phone": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "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."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "ID of the user to be added to a team."
    }
  }
}
object TeamsCreateNewTeamRequest
{
  "type": "object",
  "required": [
    "teamId",
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Team name. Max length: 128 chars."
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "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."
    },
    "teamId": {
      "type": "string",
      "x-example": "<TEAM_ID>",
      "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."
    }
  }
}
object TeamsUpdateMembershipRolesRequest
{
  "type": "object",
  "required": [
    "roles"
  ],
  "properties": {
    "roles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "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."
    }
  }
}
object TeamsUpdateMembershipStatusRequest
{
  "type": "object",
  "required": [
    "userId",
    "secret"
  ],
  "properties": {
    "secret": {
      "type": "string",
      "x-example": "<SECRET>",
      "description": "Secret key."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "User ID."
    }
  }
}
object TeamsUpdateNameByIdRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "New team name. Max length: 128 chars."
    }
  }
}
object TeamsUpdatePrefsByIdRequest
{
  "type": "object",
  "required": [
    "prefs"
  ],
  "properties": {
    "prefs": {
      "type": "object",
      "x-example": "{}",
      "description": "Prefs key-value JSON object."
    }
  }
}
object UsersCreateArgon2UserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using Argon2."
    }
  }
}
object UsersCreateBcryptUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using Bcrypt."
    }
  }
}
object UsersCreateMd5UserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using MD5."
    }
  }
}
object UsersCreateNewUserRequest
{
  "type": "object",
  "required": [
    "userId"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "phone": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": null,
      "description": "Plain text user password. Must be at least 8 chars."
    }
  }
}
object UsersCreatePhpassUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "description": "User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. 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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using PHPass."
    }
  }
}
object UsersCreateScryptModifiedUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password",
    "passwordSalt",
    "passwordSaltSeparator",
    "passwordSignerKey"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using Scrypt Modified."
    },
    "passwordSalt": {
      "type": "string",
      "x-example": "<PASSWORD_SALT>",
      "description": "Salt used to hash password."
    },
    "passwordSignerKey": {
      "type": "string",
      "x-example": "<PASSWORD_SIGNER_KEY>",
      "description": "Signer key used to hash password."
    },
    "passwordSaltSeparator": {
      "type": "string",
      "x-example": "<PASSWORD_SALT_SEPARATOR>",
      "description": "Salt separator used to hash password."
    }
  }
}
object UsersCreateScryptUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password",
    "passwordSalt",
    "passwordCpu",
    "passwordMemory",
    "passwordParallel",
    "passwordLength"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using Scrypt."
    },
    "passwordCpu": {
      "type": "integer",
      "x-example": null,
      "description": "Optional CPU cost used to hash password."
    },
    "passwordSalt": {
      "type": "string",
      "x-example": "<PASSWORD_SALT>",
      "description": "Optional salt used to hash password."
    },
    "passwordLength": {
      "type": "integer",
      "x-example": null,
      "description": "Optional hash length used to hash password."
    },
    "passwordMemory": {
      "type": "integer",
      "x-example": null,
      "description": "Optional memory cost used to hash password."
    },
    "passwordParallel": {
      "type": "integer",
      "x-example": null,
      "description": "Optional parallelization cost used to hash password."
    }
  }
}
object UsersCreateShaUserRequest
{
  "type": "object",
  "required": [
    "userId",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    },
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    },
    "userId": {
      "type": "string",
      "x-example": "<USER_ID>",
      "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."
    },
    "password": {
      "type": "string",
      "x-example": "password",
      "description": "User password hashed using SHA."
    },
    "passwordVersion": {
      "enum": [
        "sha1",
        "sha224",
        "sha256",
        "sha384",
        "sha512/224",
        "sha512/256",
        "sha512",
        "sha3-224",
        "sha3-256",
        "sha3-384",
        "sha3-512"
      ],
      "type": "string",
      "x-example": "sha1",
      "description": "Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512/224', 'sha512/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'",
      "x-enum-keys": [],
      "x-enum-name": "PasswordHash"
    }
  }
}
object UsersCreateTargetMessagingRequest
{
  "type": "object",
  "required": [
    "targetId",
    "providerType",
    "identifier"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23."
    },
    "targetId": {
      "type": "string",
      "x-example": "<TARGET_ID>",
      "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."
    },
    "identifier": {
      "type": "string",
      "x-example": "<IDENTIFIER>",
      "description": "The target identifier (token, email, phone etc.)"
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "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."
    },
    "providerType": {
      "enum": [
        "email",
        "sms",
        "push"
      ],
      "type": "string",
      "x-example": "email",
      "description": "The target provider type. Can be one of the following: `email`, `sms` or `push`.",
      "x-enum-keys": [],
      "x-enum-name": "MessagingProviderType"
    }
  }
}
object UsersCreateTokenSessionRequest
{
  "type": "object",
  "properties": {
    "expire": {
      "type": "integer",
      "x-example": 60,
      "description": "Token expiration period in seconds. The default expiration is 15 minutes."
    },
    "length": {
      "type": "integer",
      "x-example": 4,
      "description": "Token length in characters. The default length is 6 characters"
    }
  }
}
object UsersUpdateEmailByIdRequest
{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "x-example": "email@example.com",
      "description": "User email."
    }
  }
}
object UsersUpdateEmailVerificationRequest
{
  "type": "object",
  "required": [
    "emailVerification"
  ],
  "properties": {
    "emailVerification": {
      "type": "boolean",
      "x-example": false,
      "description": "User email verification status."
    }
  }
}
object UsersUpdateLabelsByIdRequest
{
  "type": "object",
  "required": [
    "labels"
  ],
  "properties": {
    "labels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": null,
      "description": "Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long."
    }
  }
}
object UsersUpdateMfaStatusRequest
{
  "type": "object",
  "required": [
    "mfa"
  ],
  "properties": {
    "mfa": {
      "type": "boolean",
      "x-example": false,
      "description": "Enable or disable MFA."
    }
  }
}
object UsersUpdatePasswordByIdRequest
{
  "type": "object",
  "required": [
    "password"
  ],
  "properties": {
    "password": {
      "type": "string",
      "x-example": null,
      "description": "New user password. Must be at least 8 chars."
    }
  }
}
object UsersUpdatePhoneByIdRequest
{
  "type": "object",
  "required": [
    "number"
  ],
  "properties": {
    "number": {
      "type": "string",
      "x-example": "+12065550100",
      "description": "User phone number."
    }
  }
}
object UsersUpdatePhoneVerificationRequest
{
  "type": "object",
  "required": [
    "phoneVerification"
  ],
  "properties": {
    "phoneVerification": {
      "type": "boolean",
      "x-example": false,
      "description": "User phone verification status."
    }
  }
}
object UsersUpdatePreferencesByIdRequest
{
  "type": "object",
  "required": [
    "prefs"
  ],
  "properties": {
    "prefs": {
      "type": "object",
      "x-example": "{}",
      "description": "Prefs key-value JSON object."
    }
  }
}
object UsersUpdateStatusRequest
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "type": "boolean",
      "x-example": false,
      "description": "User Status. To activate the user pass `true` and to block the user pass `false`."
    }
  }
}
object UsersUpdateTargetMessagingRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23."
    },
    "identifier": {
      "type": "string",
      "x-example": "<IDENTIFIER>",
      "description": "The target identifier (token, email, phone etc.)"
    },
    "providerId": {
      "type": "string",
      "x-example": "<PROVIDER_ID>",
      "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."
    }
  }
}
object UsersUpdateUserByNameRequest
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "<NAME>",
      "description": "User name. Max length: 128 chars."
    }
  }
}
object algoArgon2
{
  "type": "object",
  "required": [
    "type",
    "memoryCost",
    "timeCost",
    "threads"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "argon2",
      "description": "Algo type."
    },
    "threads": {
      "type": "integer",
      "format": "int32",
      "x-example": 3,
      "description": "Number of threads used to compute hash."
    },
    "timeCost": {
      "type": "integer",
      "format": "int32",
      "x-example": 4,
      "description": "Amount of time consumed to compute hash"
    },
    "memoryCost": {
      "type": "integer",
      "format": "int32",
      "x-example": 65536,
      "description": "Memory used to compute hash."
    }
  },
  "description": "AlgoArgon2"
}
object algoBcrypt
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "bcrypt",
      "description": "Algo type."
    }
  },
  "description": "AlgoBcrypt"
}
object algoMd5
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "md5",
      "description": "Algo type."
    }
  },
  "description": "AlgoMD5"
}
object algoPhpass
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "phpass",
      "description": "Algo type."
    }
  },
  "description": "AlgoPHPass"
}
object algoScrypt
{
  "type": "object",
  "required": [
    "type",
    "costCpu",
    "costMemory",
    "costParallel",
    "length"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "scrypt",
      "description": "Algo type."
    },
    "length": {
      "type": "integer",
      "format": "int32",
      "x-example": 64,
      "description": "Length used to compute hash."
    },
    "costCpu": {
      "type": "integer",
      "format": "int32",
      "x-example": 8,
      "description": "CPU complexity of computed hash."
    },
    "costMemory": {
      "type": "integer",
      "format": "int32",
      "x-example": 14,
      "description": "Memory complexity of computed hash."
    },
    "costParallel": {
      "type": "integer",
      "format": "int32",
      "x-example": 1,
      "description": "Parallelization of computed hash."
    }
  },
  "description": "AlgoScrypt"
}
object algoScryptModified
{
  "type": "object",
  "required": [
    "type",
    "salt",
    "saltSeparator",
    "signerKey"
  ],
  "properties": {
    "salt": {
      "type": "string",
      "x-example": "UxLMreBr6tYyjQ==",
      "description": "Salt used to compute hash."
    },
    "type": {
      "type": "string",
      "x-example": "scryptMod",
      "description": "Algo type."
    },
    "signerKey": {
      "type": "string",
      "x-example": "XyEKE9RcTDeLEsL/RjwPDBv/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ==",
      "description": "Key used to compute hash."
    },
    "saltSeparator": {
      "type": "string",
      "x-example": "Bw==",
      "description": "Separator used to compute hash."
    }
  },
  "description": "AlgoScryptModified"
}
object algoSha
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "x-example": "sha",
      "description": "Algo type."
    }
  },
  "description": "AlgoSHA"
}
object any
{
  "type": "object",
  "description": "Any",
  "additionalProperties": true
}
object attributeBoolean
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "isEnabled",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "boolean",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeBoolean"
}
object attributeDatetime
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "format"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "birthDay",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "datetime",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "format": {
      "type": "string",
      "x-example": "datetime",
      "description": "ISO 8601 format."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Default value for attribute when not provided. Only null is optional"
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeDatetime"
}
object attributeEmail
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "format"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "userEmail",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "format": {
      "type": "string",
      "x-example": "email",
      "description": "String format."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "default@example.com",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeEmail"
}
object attributeEnum
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "elements",
    "format"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "status",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "format": {
      "type": "string",
      "x-example": "enum",
      "description": "String format."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "element",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "elements": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "element",
      "description": "Array of elements in enumerated type."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeEnum"
}
object attributeFloat
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "percentageCompleted",
      "description": "Attribute Key."
    },
    "max": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "x-example": 10.5,
      "description": "Maximum value to enforce for new documents."
    },
    "min": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "x-example": 1.5,
      "description": "Minimum value to enforce for new documents."
    },
    "type": {
      "type": "string",
      "x-example": "double",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "number",
      "format": "double",
      "nullable": true,
      "x-example": 2.5,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeFloat"
}
object attributeInteger
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "count",
      "description": "Attribute Key."
    },
    "max": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "x-example": 10,
      "description": "Maximum value to enforce for new documents."
    },
    "min": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "x-example": 1,
      "description": "Minimum value to enforce for new documents."
    },
    "type": {
      "type": "string",
      "x-example": "integer",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "integer",
      "format": "int32",
      "nullable": true,
      "x-example": 10,
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeInteger"
}
object attributeIp
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "format"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "ipAddress",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "format": {
      "type": "string",
      "x-example": "ip",
      "description": "String format."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "192.0.2.0",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeIP"
}
object attributeList
{
  "type": "object",
  "required": [
    "total",
    "attributes"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of attributes in the given collection."
    },
    "attributes": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/attributeBoolean"
          },
          {
            "$ref": "#/components/schemas/attributeInteger"
          },
          {
            "$ref": "#/components/schemas/attributeFloat"
          },
          {
            "$ref": "#/components/schemas/attributeEmail"
          },
          {
            "$ref": "#/components/schemas/attributeEnum"
          },
          {
            "$ref": "#/components/schemas/attributeUrl"
          },
          {
            "$ref": "#/components/schemas/attributeIp"
          },
          {
            "$ref": "#/components/schemas/attributeDatetime"
          },
          {
            "$ref": "#/components/schemas/attributeRelationship"
          },
          {
            "$ref": "#/components/schemas/attributeString"
          }
        ]
      },
      "x-example": "",
      "description": "List of attributes."
    }
  },
  "description": "Attributes List"
}
object attributeRelationship
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "relatedCollection",
    "relationType",
    "twoWay",
    "twoWayKey",
    "onDelete",
    "side"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "fullName",
      "description": "Attribute Key."
    },
    "side": {
      "type": "string",
      "x-example": "parent|child",
      "description": "Whether this is the parent or child side of the relationship"
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "twoWay": {
      "type": "boolean",
      "x-example": false,
      "description": "Is the relationship two-way?"
    },
    "onDelete": {
      "type": "string",
      "x-example": "restrict|cascade|setNull",
      "description": "How deleting the parent document will propagate to child documents."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    },
    "twoWayKey": {
      "type": "string",
      "x-example": "string",
      "description": "The key of the two-way relationship."
    },
    "relationType": {
      "type": "string",
      "x-example": "oneToOne|oneToMany|manyToOne|manyToMany",
      "description": "The type of the relationship."
    },
    "relatedCollection": {
      "type": "string",
      "x-example": "collection",
      "description": "The ID of the related collection."
    }
  },
  "description": "AttributeRelationship"
}
object attributeString
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "size"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "fullName",
      "description": "Attribute Key."
    },
    "size": {
      "type": "integer",
      "format": "int32",
      "x-example": 128,
      "description": "Attribute size."
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "default",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeString"
}
object attributeUrl
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "required",
    "format"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "githubUrl",
      "description": "Attribute Key."
    },
    "type": {
      "type": "string",
      "x-example": "string",
      "description": "Attribute type."
    },
    "array": {
      "type": "boolean",
      "nullable": true,
      "x-example": false,
      "description": "Is attribute an array?"
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an attribute."
    },
    "format": {
      "type": "string",
      "x-example": "url",
      "description": "String format."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "default": {
      "type": "string",
      "nullable": true,
      "x-example": "http://example.com",
      "description": "Default value for attribute when not provided. Cannot be set when attribute is required."
    },
    "required": {
      "type": "boolean",
      "x-example": true,
      "description": "Is attribute required?"
    }
  },
  "description": "AttributeURL"
}
object bucket
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "$permissions",
    "fileSecurity",
    "name",
    "enabled",
    "maximumFileSize",
    "allowedFileExtensions",
    "compression",
    "encryption",
    "antivirus"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Bucket ID."
    },
    "name": {
      "type": "string",
      "x-example": "Documents",
      "description": "Bucket name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Bucket enabled."
    },
    "antivirus": {
      "type": "boolean",
      "x-example": false,
      "description": "Virus scanning is enabled."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Bucket creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Bucket update date in ISO 8601 format."
    },
    "encryption": {
      "type": "boolean",
      "x-example": false,
      "description": "Bucket is encrypted."
    },
    "compression": {
      "type": "string",
      "x-example": "gzip",
      "description": "Compression algorithm choosen for compression. Will be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd)."
    },
    "$permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "read(\"any\")"
      ],
      "description": "Bucket permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "fileSecurity": {
      "type": "boolean",
      "x-example": true,
      "description": "Whether file-level security is enabled. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "maximumFileSize": {
      "type": "integer",
      "format": "int32",
      "x-example": 100,
      "description": "Maximum file size supported."
    },
    "allowedFileExtensions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "jpg",
        "png"
      ],
      "description": "Allowed file extensions."
    }
  },
  "description": "Bucket"
}
object bucketList
{
  "type": "object",
  "required": [
    "total",
    "buckets"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of buckets documents that matched your query."
    },
    "buckets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/bucket"
      },
      "x-example": "",
      "description": "List of buckets."
    }
  },
  "description": "Buckets List"
}
object collection
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "$permissions",
    "databaseId",
    "name",
    "enabled",
    "documentSecurity",
    "attributes",
    "indexes"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Collection ID."
    },
    "name": {
      "type": "string",
      "x-example": "My Collection",
      "description": "Collection name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys."
    },
    "indexes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/index"
      },
      "x-example": {},
      "description": "Collection indexes."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Collection creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Collection update date in ISO 8601 format."
    },
    "attributes": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/attributeBoolean"
          },
          {
            "$ref": "#/components/schemas/attributeInteger"
          },
          {
            "$ref": "#/components/schemas/attributeFloat"
          },
          {
            "$ref": "#/components/schemas/attributeEmail"
          },
          {
            "$ref": "#/components/schemas/attributeEnum"
          },
          {
            "$ref": "#/components/schemas/attributeUrl"
          },
          {
            "$ref": "#/components/schemas/attributeIp"
          },
          {
            "$ref": "#/components/schemas/attributeDatetime"
          },
          {
            "$ref": "#/components/schemas/attributeRelationship"
          },
          {
            "$ref": "#/components/schemas/attributeString"
          }
        ]
      },
      "x-example": {},
      "description": "Collection attributes."
    },
    "databaseId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Database ID."
    },
    "$permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "read(\"any\")"
      ],
      "description": "Collection permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "documentSecurity": {
      "type": "boolean",
      "x-example": true,
      "description": "Whether document-level permissions are enabled. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    }
  },
  "description": "Collection"
}
object collectionList
{
  "type": "object",
  "required": [
    "total",
    "collections"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of collections documents that matched your query."
    },
    "collections": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/collection"
      },
      "x-example": "",
      "description": "List of collections."
    }
  },
  "description": "Collections List"
}
object continent
{
  "type": "object",
  "required": [
    "name",
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "EU",
      "description": "Continent two letter code."
    },
    "name": {
      "type": "string",
      "x-example": "Europe",
      "description": "Continent name."
    }
  },
  "description": "Continent"
}
object continentList
{
  "type": "object",
  "required": [
    "total",
    "continents"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of continents documents that matched your query."
    },
    "continents": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/continent"
      },
      "x-example": "",
      "description": "List of continents."
    }
  },
  "description": "Continents List"
}
object country
{
  "type": "object",
  "required": [
    "name",
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "US",
      "description": "Country two-character ISO 3166-1 alpha code."
    },
    "name": {
      "type": "string",
      "x-example": "United States",
      "description": "Country name."
    }
  },
  "description": "Country"
}
object countryList
{
  "type": "object",
  "required": [
    "total",
    "countries"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of countries documents that matched your query."
    },
    "countries": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/country"
      },
      "x-example": "",
      "description": "List of countries."
    }
  },
  "description": "Countries List"
}
object currency
{
  "type": "object",
  "required": [
    "symbol",
    "name",
    "symbolNative",
    "decimalDigits",
    "rounding",
    "code",
    "namePlural"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "USD",
      "description": "Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format."
    },
    "name": {
      "type": "string",
      "x-example": "US dollar",
      "description": "Currency name."
    },
    "symbol": {
      "type": "string",
      "x-example": "$",
      "description": "Currency symbol."
    },
    "rounding": {
      "type": "number",
      "format": "double",
      "x-example": 0,
      "description": "Currency digit rounding."
    },
    "namePlural": {
      "type": "string",
      "x-example": "US dollars",
      "description": "Currency plural name"
    },
    "symbolNative": {
      "type": "string",
      "x-example": "$",
      "description": "Currency native symbol."
    },
    "decimalDigits": {
      "type": "integer",
      "format": "int32",
      "x-example": 2,
      "description": "Number of decimal digits."
    }
  },
  "description": "Currency"
}
object currencyList
{
  "type": "object",
  "required": [
    "total",
    "currencies"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of currencies documents that matched your query."
    },
    "currencies": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/currency"
      },
      "x-example": "",
      "description": "List of currencies."
    }
  },
  "description": "Currencies List"
}
object database
{
  "type": "object",
  "required": [
    "$id",
    "name",
    "$createdAt",
    "$updatedAt",
    "enabled"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Database ID."
    },
    "name": {
      "type": "string",
      "x-example": "My Database",
      "description": "Database name."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Database creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Database update date in ISO 8601 format."
    }
  },
  "description": "Database"
}
object databaseList
{
  "type": "object",
  "required": [
    "total",
    "databases"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of databases documents that matched your query."
    },
    "databases": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/database"
      },
      "x-example": "",
      "description": "List of databases."
    }
  },
  "description": "Databases List"
}
object deployment
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "type",
    "resourceId",
    "resourceType",
    "entrypoint",
    "size",
    "buildId",
    "activate",
    "status",
    "buildLogs",
    "buildTime",
    "providerRepositoryName",
    "providerRepositoryOwner",
    "providerRepositoryUrl",
    "providerBranch",
    "providerCommitHash",
    "providerCommitAuthorUrl",
    "providerCommitAuthor",
    "providerCommitMessage",
    "providerCommitUrl",
    "providerBranchUrl"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Deployment ID."
    },
    "size": {
      "type": "integer",
      "format": "int32",
      "x-example": 128,
      "description": "The code size in bytes."
    },
    "type": {
      "type": "string",
      "x-example": "vcs",
      "description": "Type of deployment."
    },
    "status": {
      "type": "string",
      "x-example": "ready",
      "description": "The deployment status. Possible values are \"processing\", \"building\", \"waiting\", \"ready\", and \"failed\"."
    },
    "buildId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "The current build ID."
    },
    "activate": {
      "type": "boolean",
      "x-example": true,
      "description": "Whether the deployment should be automatically activated."
    },
    "buildLogs": {
      "type": "string",
      "x-example": "Compiling source files...",
      "description": "The build logs."
    },
    "buildTime": {
      "type": "integer",
      "format": "int32",
      "x-example": 128,
      "description": "The current build time in seconds."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Deployment creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Deployment update date in ISO 8601 format."
    },
    "entrypoint": {
      "type": "string",
      "x-example": "index.js",
      "description": "The entrypoint file to use to execute the deployment code."
    },
    "resourceId": {
      "type": "string",
      "x-example": "5e5ea6g16897e",
      "description": "Resource ID."
    },
    "resourceType": {
      "type": "string",
      "x-example": "functions",
      "description": "Resource type."
    },
    "providerBranch": {
      "type": "string",
      "x-example": "0.7.x",
      "description": "The branch of the vcs repository"
    },
    "providerBranchUrl": {
      "type": "string",
      "x-example": "https://github.com/vermakhushboo/appwrite/tree/0.7.x",
      "description": "The branch of the vcs repository"
    },
    "providerCommitUrl": {
      "type": "string",
      "x-example": "https://github.com/vermakhushboo/g4-node-function/commit/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb",
      "description": "The url of the vcs commit"
    },
    "providerCommitHash": {
      "type": "string",
      "x-example": "7c3f25d",
      "description": "The commit hash of the vcs commit"
    },
    "providerCommitAuthor": {
      "type": "string",
      "x-example": "Khushboo Verma",
      "description": "The name of vcs commit author"
    },
    "providerCommitMessage": {
      "type": "string",
      "x-example": "Update index.js",
      "description": "The commit message"
    },
    "providerRepositoryUrl": {
      "type": "string",
      "x-example": "https://github.com/vermakhushboo/g4-node-function",
      "description": "The url of the vcs provider repository"
    },
    "providerRepositoryName": {
      "type": "string",
      "x-example": "database",
      "description": "The name of the vcs provider repository"
    },
    "providerCommitAuthorUrl": {
      "type": "string",
      "x-example": "https://github.com/vermakhushboo",
      "description": "The url of vcs commit author"
    },
    "providerRepositoryOwner": {
      "type": "string",
      "x-example": "utopia",
      "description": "The name of the vcs provider repository owner"
    }
  },
  "description": "Deployment"
}
object deploymentList
{
  "type": "object",
  "required": [
    "total",
    "deployments"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of deployments documents that matched your query."
    },
    "deployments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/deployment"
      },
      "x-example": "",
      "description": "List of deployments."
    }
  },
  "description": "Deployments List"
}
object document
{
  "type": "object",
  "required": [
    "$id",
    "$collectionId",
    "$databaseId",
    "$createdAt",
    "$updatedAt",
    "$permissions"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Document ID."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Document creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Document update date in ISO 8601 format."
    },
    "$databaseId": {
      "type": "string",
      "x-example": "5e5ea5c15117e",
      "description": "Database ID."
    },
    "$permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "read(\"any\")"
      ],
      "description": "Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "$collectionId": {
      "type": "string",
      "x-example": "5e5ea5c15117e",
      "description": "Collection ID."
    }
  },
  "description": "Document",
  "additionalProperties": true
}
object documentList
{
  "type": "object",
  "required": [
    "total",
    "documents"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of documents documents that matched your query."
    },
    "documents": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/document"
      },
      "x-example": "",
      "description": "List of documents."
    }
  },
  "description": "Documents List"
}
object error
{
  "type": "object",
  "required": [
    "message",
    "code",
    "type",
    "version"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "404",
      "description": "Error code."
    },
    "type": {
      "type": "string",
      "x-example": "not_found",
      "description": "Error type. You can learn more about all the error types at https://appwrite.io/docs/error-codes#errorTypes"
    },
    "message": {
      "type": "string",
      "x-example": "Not found",
      "description": "Error message."
    },
    "version": {
      "type": "string",
      "x-example": "1.0",
      "description": "Server version number."
    }
  },
  "description": "Error"
}
object execution
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "$permissions",
    "functionId",
    "trigger",
    "status",
    "requestMethod",
    "requestPath",
    "requestHeaders",
    "responseStatusCode",
    "responseBody",
    "responseHeaders",
    "logs",
    "errors",
    "duration"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Execution ID."
    },
    "logs": {
      "type": "string",
      "x-example": "",
      "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."
    },
    "errors": {
      "type": "string",
      "x-example": "",
      "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."
    },
    "status": {
      "type": "string",
      "x-example": "processing",
      "description": "The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`."
    },
    "trigger": {
      "type": "string",
      "x-example": "http",
      "description": "The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`."
    },
    "duration": {
      "type": "number",
      "format": "double",
      "x-example": 0.4,
      "description": "Function execution duration in seconds."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Execution creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Execution upate date in ISO 8601 format."
    },
    "functionId": {
      "type": "string",
      "x-example": "5e5ea6g16897e",
      "description": "Function ID."
    },
    "requestPath": {
      "type": "string",
      "x-example": "/articles?id=5",
      "description": "HTTP request path and query."
    },
    "$permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "any"
      ],
      "description": "Execution roles."
    },
    "responseBody": {
      "type": "string",
      "x-example": "Developers are awesome.",
      "description": "HTTP response body. This will return empty unless execution is created as synchronous."
    },
    "requestMethod": {
      "type": "string",
      "x-example": "GET",
      "description": "HTTP request method type."
    },
    "requestHeaders": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/headers"
      },
      "x-example": [
        {
          "Content-Type": "application/json"
        }
      ],
      "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."
    },
    "responseHeaders": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/headers"
      },
      "x-example": [
        {
          "Content-Type": "application/json"
        }
      ],
      "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."
    },
    "responseStatusCode": {
      "type": "integer",
      "format": "int32",
      "x-example": 200,
      "description": "HTTP response status code."
    }
  },
  "description": "Execution"
}
object executionList
{
  "type": "object",
  "required": [
    "total",
    "executions"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of executions documents that matched your query."
    },
    "executions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/execution"
      },
      "x-example": "",
      "description": "List of executions."
    }
  },
  "description": "Executions List"
}
object file
{
  "type": "object",
  "required": [
    "$id",
    "bucketId",
    "$createdAt",
    "$updatedAt",
    "$permissions",
    "name",
    "signature",
    "mimeType",
    "sizeOriginal",
    "chunksTotal",
    "chunksUploaded"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "File ID."
    },
    "name": {
      "type": "string",
      "x-example": "Pink.png",
      "description": "File name."
    },
    "bucketId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Bucket ID."
    },
    "mimeType": {
      "type": "string",
      "x-example": "image/png",
      "description": "File mime type."
    },
    "signature": {
      "type": "string",
      "x-example": "5d529fd02b544198ae075bd57c1762bb",
      "description": "File MD5 signature."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "File creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "File update date in ISO 8601 format."
    },
    "chunksTotal": {
      "type": "integer",
      "format": "int32",
      "x-example": 17890,
      "description": "Total number of chunks available"
    },
    "$permissions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "read(\"any\")"
      ],
      "description": "File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)."
    },
    "sizeOriginal": {
      "type": "integer",
      "format": "int32",
      "x-example": 17890,
      "description": "File original size in bytes."
    },
    "chunksUploaded": {
      "type": "integer",
      "format": "int32",
      "x-example": 17890,
      "description": "Total number of chunks uploaded"
    }
  },
  "description": "File"
}
object fileList
{
  "type": "object",
  "required": [
    "total",
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/file"
      },
      "x-example": "",
      "description": "List of files."
    },
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of files documents that matched your query."
    }
  },
  "description": "Files List"
}
object function
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "execute",
    "name",
    "enabled",
    "live",
    "logging",
    "runtime",
    "deployment",
    "vars",
    "events",
    "schedule",
    "timeout",
    "entrypoint",
    "commands",
    "version",
    "installationId",
    "providerRepositoryId",
    "providerBranch",
    "providerRootDirectory",
    "providerSilentMode"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Function ID."
    },
    "live": {
      "type": "boolean",
      "x-example": false,
      "description": "Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration."
    },
    "name": {
      "type": "string",
      "x-example": "My Function",
      "description": "Function name."
    },
    "vars": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/variable"
      },
      "x-example": [],
      "description": "Function variables."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "account.create",
      "description": "Function trigger events."
    },
    "enabled": {
      "type": "boolean",
      "x-example": false,
      "description": "Function enabled."
    },
    "execute": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "users",
      "description": "Execution permissions."
    },
    "logging": {
      "type": "boolean",
      "x-example": false,
      "description": "Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project."
    },
    "runtime": {
      "type": "string",
      "x-example": "python-3.8",
      "description": "Function execution runtime."
    },
    "timeout": {
      "type": "integer",
      "format": "int32",
      "x-example": 300,
      "description": "Function execution timeout in seconds."
    },
    "version": {
      "type": "string",
      "x-example": "v2",
      "description": "Version of Open Runtimes used for the function."
    },
    "commands": {
      "type": "string",
      "x-example": "npm install",
      "description": "The build command used to build the deployment."
    },
    "schedule": {
      "type": "string",
      "x-example": "5 4 * * *",
      "description": "Function execution schedult in CRON format."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Function creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Function update date in ISO 8601 format."
    },
    "deployment": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Function's active deployment ID."
    },
    "entrypoint": {
      "type": "string",
      "x-example": "index.js",
      "description": "The entrypoint file used to execute the deployment."
    },
    "installationId": {
      "type": "string",
      "x-example": "6m40at4ejk5h2u9s1hboo",
      "description": "Function VCS (Version Control System) installation id."
    },
    "providerBranch": {
      "type": "string",
      "x-example": "main",
      "description": "VCS (Version Control System) branch name"
    },
    "providerSilentMode": {
      "type": "boolean",
      "x-example": false,
      "description": "Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests"
    },
    "providerRepositoryId": {
      "type": "string",
      "x-example": "appwrite",
      "description": "VCS (Version Control System) Repository ID"
    },
    "providerRootDirectory": {
      "type": "string",
      "x-example": "functions/helloWorld",
      "description": "Path to function in VCS (Version Control System) repository"
    }
  },
  "description": "Function"
}
object functionList
{
  "type": "object",
  "required": [
    "total",
    "functions"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of functions documents that matched your query."
    },
    "functions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/function"
      },
      "x-example": "",
      "description": "List of functions."
    }
  },
  "description": "Functions List"
}
object headers
{
  "type": "object",
  "required": [
    "name",
    "value"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "Content-Type",
      "description": "Header name."
    },
    "value": {
      "type": "string",
      "x-example": "application/json",
      "description": "Header value."
    }
  },
  "description": "Headers"
}
object healthAntivirus
{
  "type": "object",
  "required": [
    "version",
    "status"
  ],
  "properties": {
    "status": {
      "type": "string",
      "x-example": "online",
      "description": "Antivirus status. Possible values can are: `disabled`, `offline`, `online`"
    },
    "version": {
      "type": "string",
      "x-example": "1.0.0",
      "description": "Antivirus version."
    }
  },
  "description": "Health Antivirus"
}
object healthCertificate
{
  "type": "object",
  "required": [
    "name",
    "subjectSN",
    "issuerOrganisation",
    "validFrom",
    "validTo",
    "signatureTypeSN"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "/CN=www.google.com",
      "description": "Certificate name"
    },
    "validTo": {
      "type": "string",
      "x-example": "1711458597",
      "description": "Valid to"
    },
    "subjectSN": {
      "type": "string",
      "x-example": "",
      "description": "Subject SN"
    },
    "validFrom": {
      "type": "string",
      "x-example": "1704200998",
      "description": "Valid from"
    },
    "signatureTypeSN": {
      "type": "string",
      "x-example": "RSA-SHA256",
      "description": "Signature type SN"
    },
    "issuerOrganisation": {
      "type": "string",
      "x-example": "",
      "description": "Issuer organisation"
    }
  },
  "description": "Health Certificate"
}
object healthQueue
{
  "type": "object",
  "required": [
    "size"
  ],
  "properties": {
    "size": {
      "type": "integer",
      "format": "int32",
      "x-example": 8,
      "description": "Amount of actions in the queue."
    }
  },
  "description": "Health Queue"
}
object healthStatus
{
  "type": "object",
  "required": [
    "name",
    "ping",
    "status"
  ],
  "properties": {
    "name": {
      "type": "string",
      "x-example": "database",
      "description": "Name of the service."
    },
    "ping": {
      "type": "integer",
      "format": "int32",
      "x-example": 128,
      "description": "Duration in milliseconds how long the health check took."
    },
    "status": {
      "type": "string",
      "x-example": "pass",
      "description": "Service status. Possible values can are: `pass`, `fail`"
    }
  },
  "description": "Health Status"
}
object healthTime
{
  "type": "object",
  "required": [
    "remoteTime",
    "localTime",
    "diff"
  ],
  "properties": {
    "diff": {
      "type": "integer",
      "format": "int32",
      "x-example": 93,
      "description": "Difference of unix remote and local timestamps in milliseconds."
    },
    "localTime": {
      "type": "integer",
      "format": "int32",
      "x-example": 1639490844,
      "description": "Current unix timestamp of local server where Appwrite runs."
    },
    "remoteTime": {
      "type": "integer",
      "format": "int32",
      "x-example": 1639490751,
      "description": "Current unix timestamp on trustful remote server."
    }
  },
  "description": "Health Time"
}
object identity
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "userId",
    "provider",
    "providerUid",
    "providerEmail",
    "providerAccessToken",
    "providerAccessTokenExpiry",
    "providerRefreshToken"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Identity ID."
    },
    "userId": {
      "type": "string",
      "x-example": "5e5bb8c16897e",
      "description": "User ID."
    },
    "provider": {
      "type": "string",
      "x-example": "email",
      "description": "Identity Provider."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Identity creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Identity update date in ISO 8601 format."
    },
    "providerUid": {
      "type": "string",
      "x-example": "5e5bb8c16897e",
      "description": "ID of the User in the Identity Provider."
    },
    "providerEmail": {
      "type": "string",
      "x-example": "user@example.com",
      "description": "Email of the User in the Identity Provider."
    },
    "providerAccessToken": {
      "type": "string",
      "x-example": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
      "description": "Identity Provider Access Token."
    },
    "providerRefreshToken": {
      "type": "string",
      "x-example": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
      "description": "Identity Provider Refresh Token."
    },
    "providerAccessTokenExpiry": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "The date of when the access token expires in ISO 8601 format."
    }
  },
  "description": "Identity"
}
object identityList
{
  "type": "object",
  "required": [
    "total",
    "identities"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of identities documents that matched your query."
    },
    "identities": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/identity"
      },
      "x-example": "",
      "description": "List of identities."
    }
  },
  "description": "Identities List"
}
object index
{
  "type": "object",
  "required": [
    "key",
    "type",
    "status",
    "error",
    "attributes"
  ],
  "properties": {
    "key": {
      "type": "string",
      "x-example": "index1",
      "description": "Index Key."
    },
    "type": {
      "type": "string",
      "x-example": "primary",
      "description": "Index type."
    },
    "error": {
      "type": "string",
      "x-example": "string",
      "description": "Error message. Displays error generated on failure of creating or deleting an index."
    },
    "orders": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "nullable": true,
      "x-example": [],
      "description": "Index orders."
    },
    "status": {
      "type": "string",
      "x-example": "available",
      "description": "Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`"
    },
    "attributes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [],
      "description": "Index attributes."
    }
  },
  "description": "Index"
}
object indexList
{
  "type": "object",
  "required": [
    "total",
    "indexes"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of indexes documents that matched your query."
    },
    "indexes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/index"
      },
      "x-example": "",
      "description": "List of indexes."
    }
  },
  "description": "Indexes List"
}
object jwt
{
  "type": "object",
  "required": [
    "jwt"
  ],
  "properties": {
    "jwt": {
      "type": "string",
      "x-example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
      "description": "JWT encoded string."
    }
  },
  "description": "JWT"
}
object language
{
  "type": "object",
  "required": [
    "name",
    "code",
    "nativeName"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "it",
      "description": "Language two-character ISO 639-1 codes."
    },
    "name": {
      "type": "string",
      "x-example": "Italian",
      "description": "Language name."
    },
    "nativeName": {
      "type": "string",
      "x-example": "Italiano",
      "description": "Language native name."
    }
  },
  "description": "Language"
}
object languageList
{
  "type": "object",
  "required": [
    "total",
    "languages"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of languages documents that matched your query."
    },
    "languages": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/language"
      },
      "x-example": "",
      "description": "List of languages."
    }
  },
  "description": "Languages List"
}
object locale
{
  "type": "object",
  "required": [
    "ip",
    "countryCode",
    "country",
    "continentCode",
    "continent",
    "eu",
    "currency"
  ],
  "properties": {
    "eu": {
      "type": "boolean",
      "x-example": false,
      "description": "True if country is part of the European Union."
    },
    "ip": {
      "type": "string",
      "x-example": "127.0.0.1",
      "description": "User IP address."
    },
    "country": {
      "type": "string",
      "x-example": "United States",
      "description": "Country name. This field support localization."
    },
    "currency": {
      "type": "string",
      "x-example": "USD",
      "description": "Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format"
    },
    "continent": {
      "type": "string",
      "x-example": "North America",
      "description": "Continent name. This field support localization."
    },
    "countryCode": {
      "type": "string",
      "x-example": "US",
      "description": "Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format"
    },
    "continentCode": {
      "type": "string",
      "x-example": "NA",
      "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."
    }
  },
  "description": "Locale"
}
object localeCode
{
  "type": "object",
  "required": [
    "code",
    "name"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "en-us",
      "description": "Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)"
    },
    "name": {
      "type": "string",
      "x-example": "US",
      "description": "Locale name"
    }
  },
  "description": "LocaleCode"
}
object localeCodeList
{
  "type": "object",
  "required": [
    "total",
    "localeCodes"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of localeCodes documents that matched your query."
    },
    "localeCodes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/localeCode"
      },
      "x-example": "",
      "description": "List of localeCodes."
    }
  },
  "description": "Locale codes list"
}
object log
{
  "type": "object",
  "required": [
    "event",
    "userId",
    "userEmail",
    "userName",
    "mode",
    "ip",
    "time",
    "osCode",
    "osName",
    "osVersion",
    "clientType",
    "clientCode",
    "clientName",
    "clientVersion",
    "clientEngine",
    "clientEngineVersion",
    "deviceName",
    "deviceBrand",
    "deviceModel",
    "countryCode",
    "countryName"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "x-example": "127.0.0.1",
      "description": "IP session in use when the session was created."
    },
    "mode": {
      "type": "string",
      "x-example": "admin",
      "description": "API mode when event triggered."
    },
    "time": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Log creation date in ISO 8601 format."
    },
    "event": {
      "type": "string",
      "x-example": "account.sessions.create",
      "description": "Event name."
    },
    "osCode": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json)."
    },
    "osName": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system name."
    },
    "userId": {
      "type": "string",
      "x-example": "610fc2f985ee0",
      "description": "User ID."
    },
    "userName": {
      "type": "string",
      "x-example": "John Doe",
      "description": "User Name."
    },
    "osVersion": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system version."
    },
    "userEmail": {
      "type": "string",
      "x-example": "john@appwrite.io",
      "description": "User Email."
    },
    "clientCode": {
      "type": "string",
      "x-example": "CM",
      "description": "Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json)."
    },
    "clientName": {
      "type": "string",
      "x-example": "Chrome Mobile iOS",
      "description": "Client name."
    },
    "clientType": {
      "type": "string",
      "x-example": "browser",
      "description": "Client type."
    },
    "deviceName": {
      "type": "string",
      "x-example": "smartphone",
      "description": "Device name."
    },
    "countryCode": {
      "type": "string",
      "x-example": "US",
      "description": "Country two-character ISO 3166-1 alpha code."
    },
    "countryName": {
      "type": "string",
      "x-example": "United States",
      "description": "Country name."
    },
    "deviceBrand": {
      "type": "string",
      "x-example": "Google",
      "description": "Device brand name."
    },
    "deviceModel": {
      "type": "string",
      "x-example": "Nexus 5",
      "description": "Device model name."
    },
    "clientEngine": {
      "type": "string",
      "x-example": "WebKit",
      "description": "Client engine name."
    },
    "clientVersion": {
      "type": "string",
      "x-example": "84.0",
      "description": "Client version."
    },
    "clientEngineVersion": {
      "type": "string",
      "x-example": "605.1.15",
      "description": "Client engine name."
    }
  },
  "description": "Log"
}
object logList
{
  "type": "object",
  "required": [
    "total",
    "logs"
  ],
  "properties": {
    "logs": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/log"
      },
      "x-example": "",
      "description": "List of logs."
    },
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of logs documents that matched your query."
    }
  },
  "description": "Logs List"
}
object membership
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "userId",
    "userName",
    "userEmail",
    "teamId",
    "teamName",
    "invited",
    "joined",
    "confirm",
    "mfa",
    "roles"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Membership ID."
    },
    "mfa": {
      "type": "boolean",
      "x-example": false,
      "description": "Multi factor authentication status, true if the user has MFA enabled or false otherwise."
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "owner"
      ],
      "description": "User list of roles"
    },
    "joined": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Date, the user has accepted the invitation to join the team in ISO 8601 format."
    },
    "teamId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Team ID."
    },
    "userId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "User ID."
    },
    "confirm": {
      "type": "boolean",
      "x-example": false,
      "description": "User confirmation status, true if the user has joined the team or false otherwise."
    },
    "invited": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Date, the user has been invited to join the team in ISO 8601 format."
    },
    "teamName": {
      "type": "string",
      "x-example": "VIP",
      "description": "Team name."
    },
    "userName": {
      "type": "string",
      "x-example": "John Doe",
      "description": "User name."
    },
    "userEmail": {
      "type": "string",
      "x-example": "john@appwrite.io",
      "description": "User email address."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Membership creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Membership update date in ISO 8601 format."
    }
  },
  "description": "Membership"
}
object membershipList
{
  "type": "object",
  "required": [
    "total",
    "memberships"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of memberships documents that matched your query."
    },
    "memberships": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/membership"
      },
      "x-example": "",
      "description": "List of memberships."
    }
  },
  "description": "Memberships List"
}
object message
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "providerType",
    "topics",
    "users",
    "targets",
    "deliveredTotal",
    "data",
    "status"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Message ID."
    },
    "data": {
      "type": "object",
      "x-example": {
        "content": "Hi there, welcome to Appwrite family.",
        "subject": "Welcome to Appwrite"
      },
      "description": "Data of the message."
    },
    "users": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "5e5ea5c16897e"
      ],
      "description": "User IDs set as recipients."
    },
    "status": {
      "type": "string",
      "x-example": "Message status can be one of the following: draft, processing, scheduled, sent, or failed.",
      "description": "Status of delivery."
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "5e5ea5c16897e"
      ],
      "description": "Topic IDs set as recipients."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "5e5ea5c16897e"
      ],
      "description": "Target IDs set as recipients."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Message creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Message update date in ISO 8601 format."
    },
    "deliveredAt": {
      "type": "string",
      "nullable": true,
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "The time when the message was delivered."
    },
    "scheduledAt": {
      "type": "string",
      "nullable": true,
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "The scheduled time for message."
    },
    "providerType": {
      "type": "string",
      "x-example": "email",
      "description": "Message provider type."
    },
    "deliveredTotal": {
      "type": "integer",
      "format": "int32",
      "x-example": 1,
      "description": "Number of recipients the message was delivered to."
    },
    "deliveryErrors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "nullable": true,
      "x-example": [
        "Failed to send message to target 5e5ea5c16897e: Credentials not valid."
      ],
      "description": "Delivery errors if any."
    }
  },
  "description": "Message"
}
object messageList
{
  "type": "object",
  "required": [
    "total",
    "messages"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of messages documents that matched your query."
    },
    "messages": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/message"
      },
      "x-example": "",
      "description": "List of messages."
    }
  },
  "description": "Message list"
}
object mfaChallenge
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "userId",
    "expire"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "bb8ea5c16897e",
      "description": "Token ID."
    },
    "expire": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Token expiration date in ISO 8601 format."
    },
    "userId": {
      "type": "string",
      "x-example": "5e5ea5c168bb8",
      "description": "User ID."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Token creation date in ISO 8601 format."
    }
  },
  "description": "MFA Challenge"
}
object mfaFactors
{
  "type": "object",
  "required": [
    "totp",
    "phone",
    "email"
  ],
  "properties": {
    "totp": {
      "type": "boolean",
      "x-example": true,
      "description": "TOTP"
    },
    "email": {
      "type": "boolean",
      "x-example": true,
      "description": "Email"
    },
    "phone": {
      "type": "boolean",
      "x-example": true,
      "description": "Phone"
    }
  },
  "description": "MFAFactors"
}
object mfaRecoveryCodes
{
  "type": "object",
  "required": [
    "recoveryCodes"
  ],
  "properties": {
    "recoveryCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "a3kf0-s0cl2",
        "s0co1-as98s"
      ],
      "description": "Recovery codes."
    }
  },
  "description": "MFA Recovery Codes"
}
object mfaType
{
  "type": "object",
  "required": [
    "secret",
    "uri"
  ],
  "properties": {
    "uri": {
      "type": "string",
      "x-example": true,
      "description": "URI for authenticator apps."
    },
    "secret": {
      "type": "string",
      "x-example": true,
      "description": "Secret token used for TOTP factor."
    }
  },
  "description": "MFAType"
}
object phone
{
  "type": "object",
  "required": [
    "code",
    "countryCode",
    "countryName"
  ],
  "properties": {
    "code": {
      "type": "string",
      "x-example": "+1",
      "description": "Phone code."
    },
    "countryCode": {
      "type": "string",
      "x-example": "US",
      "description": "Country two-character ISO 3166-1 alpha code."
    },
    "countryName": {
      "type": "string",
      "x-example": "United States",
      "description": "Country name."
    }
  },
  "description": "Phone"
}
object phoneList
{
  "type": "object",
  "required": [
    "total",
    "phones"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of phones documents that matched your query."
    },
    "phones": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/phone"
      },
      "x-example": "",
      "description": "List of phones."
    }
  },
  "description": "Phones List"
}
object preferences
{
  "type": "object",
  "description": "Preferences",
  "additionalProperties": true
}
object provider
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "name",
    "provider",
    "enabled",
    "type",
    "credentials"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Provider ID."
    },
    "name": {
      "type": "string",
      "x-example": "Mailgun",
      "description": "The name for the provider instance."
    },
    "type": {
      "type": "string",
      "x-example": "sms",
      "description": "Type of provider."
    },
    "enabled": {
      "type": "boolean",
      "x-example": true,
      "description": "Is provider enabled?"
    },
    "options": {
      "type": "object",
      "nullable": true,
      "x-example": {
        "from": "sender-email@mydomain"
      },
      "description": "Provider options."
    },
    "provider": {
      "type": "string",
      "x-example": "mailgun",
      "description": "The name of the provider service."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Provider creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Provider update date in ISO 8601 format."
    },
    "credentials": {
      "type": "object",
      "x-example": {
        "key": "123456789"
      },
      "description": "Provider credentials."
    }
  },
  "description": "Provider"
}
object providerList
{
  "type": "object",
  "required": [
    "total",
    "providers"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of providers documents that matched your query."
    },
    "providers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/provider"
      },
      "x-example": "",
      "description": "List of providers."
    }
  },
  "description": "Provider list"
}
object runtime
{
  "type": "object",
  "required": [
    "$id",
    "name",
    "version",
    "base",
    "image",
    "logo",
    "supports"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "python-3.8",
      "description": "Runtime ID."
    },
    "base": {
      "type": "string",
      "x-example": "python:3.8-alpine",
      "description": "Base Docker image used to build the runtime."
    },
    "logo": {
      "type": "string",
      "x-example": "python.png",
      "description": "Name of the logo image."
    },
    "name": {
      "type": "string",
      "x-example": "Python",
      "description": "Runtime Name."
    },
    "image": {
      "type": "string",
      "x-example": "appwrite\\/runtime-for-python:3.8",
      "description": "Image name of Docker Hub."
    },
    "version": {
      "type": "string",
      "x-example": "3.8",
      "description": "Runtime version."
    },
    "supports": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "amd64",
      "description": "List of supported architectures."
    }
  },
  "description": "Runtime"
}
object runtimeList
{
  "type": "object",
  "required": [
    "total",
    "runtimes"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of runtimes documents that matched your query."
    },
    "runtimes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/runtime"
      },
      "x-example": "",
      "description": "List of runtimes."
    }
  },
  "description": "Runtimes List"
}
object session
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "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"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "x-example": "127.0.0.1",
      "description": "IP in use when the session was created."
    },
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Session ID."
    },
    "expire": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Session expiration date in ISO 8601 format."
    },
    "osCode": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json)."
    },
    "osName": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system name."
    },
    "secret": {
      "type": "string",
      "x-example": "5e5bb8c16897e",
      "description": "Secret used to authenticate the user. Only included if the request was made with an API key"
    },
    "userId": {
      "type": "string",
      "x-example": "5e5bb8c16897e",
      "description": "User ID."
    },
    "current": {
      "type": "boolean",
      "x-example": true,
      "description": "Returns true if this the current user session."
    },
    "factors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "email"
      ],
      "description": "Returns a list of active session factors."
    },
    "provider": {
      "type": "string",
      "x-example": "email",
      "description": "Session Provider."
    },
    "osVersion": {
      "type": "string",
      "x-example": "Mac",
      "description": "Operating system version."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Session creation date in ISO 8601 format."
    },
    "clientCode": {
      "type": "string",
      "x-example": "CM",
      "description": "Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json)."
    },
    "clientName": {
      "type": "string",
      "x-example": "Chrome Mobile iOS",
      "description": "Client name."
    },
    "clientType": {
      "type": "string",
      "x-example": "browser",
      "description": "Client type."
    },
    "deviceName": {
      "type": "string",
      "x-example": "smartphone",
      "description": "Device name."
    },
    "countryCode": {
      "type": "string",
      "x-example": "US",
      "description": "Country two-character ISO 3166-1 alpha code."
    },
    "countryName": {
      "type": "string",
      "x-example": "United States",
      "description": "Country name."
    },
    "deviceBrand": {
      "type": "string",
      "x-example": "Google",
      "description": "Device brand name."
    },
    "deviceModel": {
      "type": "string",
      "x-example": "Nexus 5",
      "description": "Device model name."
    },
    "providerUid": {
      "type": "string",
      "x-example": "user@example.com",
      "description": "Session Provider User ID."
    },
    "clientEngine": {
      "type": "string",
      "x-example": "WebKit",
      "description": "Client engine name."
    },
    "mfaUpdatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Most recent date in ISO 8601 format when the session successfully passed MFA challenge."
    },
    "clientVersion": {
      "type": "string",
      "x-example": "84.0",
      "description": "Client version."
    },
    "clientEngineVersion": {
      "type": "string",
      "x-example": "605.1.15",
      "description": "Client engine name."
    },
    "providerAccessToken": {
      "type": "string",
      "x-example": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
      "description": "Session Provider Access Token."
    },
    "providerRefreshToken": {
      "type": "string",
      "x-example": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
      "description": "Session Provider Refresh Token."
    },
    "providerAccessTokenExpiry": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "The date of when the access token expires in ISO 8601 format."
    }
  },
  "description": "Session"
}
object sessionList
{
  "type": "object",
  "required": [
    "total",
    "sessions"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of sessions documents that matched your query."
    },
    "sessions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/session"
      },
      "x-example": "",
      "description": "List of sessions."
    }
  },
  "description": "Sessions List"
}
object subscriber
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "targetId",
    "target",
    "userId",
    "userName",
    "topicId",
    "providerType"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "Subscriber ID."
    },
    "target": {
      "type": "object",
      "items": {
        "$ref": "#/components/schemas/target"
      },
      "x-example": {
        "$id": "259125845563242502",
        "name": "ageon-app-email",
        "userId": "5e5ea5c16897e",
        "$createdAt": "2020-10-15T06:38:00.000+00:00",
        "$updatedAt": "2020-10-15T06:38:00.000+00:00",
        "identifier": "random-mail@email.org",
        "providerId": "259125845563242502",
        "providerType": "email"
      },
      "description": "Target."
    },
    "userId": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Topic ID."
    },
    "topicId": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "Topic ID."
    },
    "targetId": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "Target ID."
    },
    "userName": {
      "type": "string",
      "x-example": "Aegon Targaryen",
      "description": "User Name."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Subscriber creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Subscriber update date in ISO 8601 format."
    },
    "providerType": {
      "type": "string",
      "x-example": "email",
      "description": "The target provider type. Can be one of the following: `email`, `sms` or `push`."
    }
  },
  "description": "Subscriber"
}
object subscriberList
{
  "type": "object",
  "required": [
    "total",
    "subscribers"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of subscribers documents that matched your query."
    },
    "subscribers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/subscriber"
      },
      "x-example": "",
      "description": "List of subscribers."
    }
  },
  "description": "Subscriber list"
}
object target
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "name",
    "userId",
    "providerType",
    "identifier"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "Target ID."
    },
    "name": {
      "type": "string",
      "x-example": "Aegon apple token",
      "description": "Target Name."
    },
    "userId": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "User ID."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Target creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Target update date in ISO 8601 format."
    },
    "identifier": {
      "type": "string",
      "x-example": "token",
      "description": "The target identifier."
    },
    "providerId": {
      "type": "string",
      "nullable": true,
      "x-example": "259125845563242502",
      "description": "Provider ID."
    },
    "providerType": {
      "type": "string",
      "x-example": "email",
      "description": "The target provider type. Can be one of the following: `email`, `sms` or `push`."
    }
  },
  "description": "Target"
}
object targetList
{
  "type": "object",
  "required": [
    "total",
    "targets"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of targets documents that matched your query."
    },
    "targets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/target"
      },
      "x-example": "",
      "description": "List of targets."
    }
  },
  "description": "Target list"
}
object team
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "name",
    "total",
    "prefs"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Team ID."
    },
    "name": {
      "type": "string",
      "x-example": "VIP",
      "description": "Team name."
    },
    "prefs": {
      "type": "object",
      "items": {
        "$ref": "#/components/schemas/preferences"
      },
      "x-example": {
        "theme": "pink",
        "timezone": "UTC"
      },
      "description": "Team preferences as a key-value object"
    },
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 7,
      "description": "Total number of team members."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Team creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Team update date in ISO 8601 format."
    }
  },
  "description": "Team"
}
object teamList
{
  "type": "object",
  "required": [
    "total",
    "teams"
  ],
  "properties": {
    "teams": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/team"
      },
      "x-example": "",
      "description": "List of teams."
    },
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of teams documents that matched your query."
    }
  },
  "description": "Teams List"
}
object token
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "userId",
    "secret",
    "expire",
    "phrase"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "bb8ea5c16897e",
      "description": "Token ID."
    },
    "expire": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Token expiration date in ISO 8601 format."
    },
    "phrase": {
      "type": "string",
      "x-example": "Golden Fox",
      "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."
    },
    "secret": {
      "type": "string",
      "x-example": "",
      "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."
    },
    "userId": {
      "type": "string",
      "x-example": "5e5ea5c168bb8",
      "description": "User ID."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Token creation date in ISO 8601 format."
    }
  },
  "description": "Token"
}
object topic
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "name",
    "emailTotal",
    "smsTotal",
    "pushTotal",
    "subscribe"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "259125845563242502",
      "description": "Topic ID."
    },
    "name": {
      "type": "string",
      "x-example": "events",
      "description": "The name of the topic."
    },
    "smsTotal": {
      "type": "integer",
      "format": "int32",
      "x-example": 100,
      "description": "Total count of SMS subscribers subscribed to the topic."
    },
    "pushTotal": {
      "type": "integer",
      "format": "int32",
      "x-example": 100,
      "description": "Total count of push subscribers subscribed to the topic."
    },
    "subscribe": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": "users",
      "description": "Subscribe permissions."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Topic creation time in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Topic update date in ISO 8601 format."
    },
    "emailTotal": {
      "type": "integer",
      "format": "int32",
      "x-example": 100,
      "description": "Total count of email subscribers subscribed to the topic."
    }
  },
  "description": "Topic"
}
object topicList
{
  "type": "object",
  "required": [
    "total",
    "topics"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of topics documents that matched your query."
    },
    "topics": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/topic"
      },
      "x-example": "",
      "description": "List of topics."
    }
  },
  "description": "Topic list"
}
object user
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "name",
    "registration",
    "status",
    "labels",
    "passwordUpdate",
    "email",
    "phone",
    "emailVerification",
    "phoneVerification",
    "mfa",
    "prefs",
    "targets",
    "accessedAt"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "User ID."
    },
    "mfa": {
      "type": "boolean",
      "x-example": true,
      "description": "Multi factor authentication status."
    },
    "hash": {
      "type": "string",
      "nullable": true,
      "x-example": "argon2",
      "description": "Password hashing algorithm."
    },
    "name": {
      "type": "string",
      "x-example": "John Doe",
      "description": "User name."
    },
    "email": {
      "type": "string",
      "x-example": "john@appwrite.io",
      "description": "User email address."
    },
    "phone": {
      "type": "string",
      "x-example": "+4930901820",
      "description": "User phone number in E.164 format."
    },
    "prefs": {
      "type": "object",
      "items": {
        "$ref": "#/components/schemas/preferences"
      },
      "x-example": {
        "theme": "pink",
        "timezone": "UTC"
      },
      "description": "User preferences as a key-value object"
    },
    "labels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-example": [
        "vip"
      ],
      "description": "Labels for the user."
    },
    "status": {
      "type": "boolean",
      "x-example": true,
      "description": "User status. Pass `true` for enabled and `false` for disabled."
    },
    "targets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/target"
      },
      "x-example": [],
      "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."
    },
    "password": {
      "type": "string",
      "nullable": true,
      "x-example": "$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L/4LdgrVRXxE",
      "description": "Hashed user password."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "User creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "User update date in ISO 8601 format."
    },
    "accessedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours."
    },
    "hashOptions": {
      "type": "object",
      "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,
      "x-example": {},
      "description": "Password hashing algorithm configuration."
    },
    "registration": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "User registration date in ISO 8601 format."
    },
    "passwordUpdate": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Password update time in ISO 8601 format."
    },
    "emailVerification": {
      "type": "boolean",
      "x-example": true,
      "description": "Email verification status."
    },
    "phoneVerification": {
      "type": "boolean",
      "x-example": true,
      "description": "Phone verification status."
    }
  },
  "description": "User"
}
object userList
{
  "type": "object",
  "required": [
    "total",
    "users"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of users documents that matched your query."
    },
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/user"
      },
      "x-example": "",
      "description": "List of users."
    }
  },
  "description": "Users List"
}
object variable
{
  "type": "object",
  "required": [
    "$id",
    "$createdAt",
    "$updatedAt",
    "key",
    "value",
    "resourceType",
    "resourceId"
  ],
  "properties": {
    "$id": {
      "type": "string",
      "x-example": "5e5ea5c16897e",
      "description": "Variable ID."
    },
    "key": {
      "type": "string",
      "x-example": "API_KEY",
      "description": "Variable key."
    },
    "value": {
      "type": "string",
      "x-example": "myPa$$word1",
      "description": "Variable value."
    },
    "$createdAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Variable creation date in ISO 8601 format."
    },
    "$updatedAt": {
      "type": "string",
      "x-example": "2020-10-15T06:38:00.000+00:00",
      "description": "Variable creation date in ISO 8601 format."
    },
    "resourceId": {
      "type": "string",
      "x-example": "myAwesomeFunction",
      "description": "ID of resource to which the variable belongs. If resourceType is \"project\", it is empty. If resourceType is \"function\", it is ID of the function."
    },
    "resourceType": {
      "type": "string",
      "x-example": "function",
      "description": "Service to which the variable belongs. Possible values are \"project\", \"function\""
    }
  },
  "description": "Variable"
}
object variableList
{
  "type": "object",
  "required": [
    "total",
    "variables"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "format": "int32",
      "x-example": 5,
      "description": "Total number of variables documents that matched your query."
    },
    "variables": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/variable"
      },
      "x-example": "",
      "description": "List of variables."
    }
  },
  "description": "Variables List"
}