# Table of Contents - [Docs - Appwrite](#docs-appwrite) - [Quick starts - Docs - Appwrite](#quick-starts-docs-appwrite) - [Storage - Overview - Appwrite](#storage-overview-appwrite) - [Databases - Overview - Appwrite](#databases-overview-appwrite) - [SDKs - Docs - Appwrite](#sdks-docs-appwrite) - [Installation - Docs - Appwrite](#installation-docs-appwrite) - [Authentication - Overview - Appwrite](#authentication-overview-appwrite) - [Messaging - Overview - Appwrite](#messaging-overview-appwrite) - [Model Context Protocol - Docs - Appwrite](#model-context-protocol-docs-appwrite) - [Command Center - Docs - Appwrite](#command-center-docs-appwrite) - [GraphQL - Docs - Appwrite](#graphql-docs-appwrite) - [Network - Overview - Appwrite](#network-overview-appwrite) - [Realtime - Docs - Appwrite](#realtime-docs-appwrite) - [Sites - Overview - Appwrite](#sites-overview-appwrite) - [Functions - Overview - Appwrite](#functions-overview-appwrite) - [Appwrite MCP and Cursor - Docs - Appwrite](#appwrite-mcp-and-cursor-docs-appwrite) - [REST - Docs - Appwrite](#rest-docs-appwrite) - [Integration - Docs - Appwrite](#integration-docs-appwrite) - [Appwrite MCP and Claude Desktop - Docs - Appwrite](#appwrite-mcp-and-claude-desktop-docs-appwrite) - [Appwrite MCP and VS Code - Docs - Appwrite](#appwrite-mcp-and-vs-code-docs-appwrite) - [Migrations - Docs - Appwrite](#migrations-docs-appwrite) - [Migrate from Cloud - Docs - Appwrite](#migrate-from-cloud-docs-appwrite) - [Sites API Reference - Docs - Appwrite](#sites-api-reference-docs-appwrite) - [Messaging API Reference - Docs - Appwrite](#messaging-api-reference-docs-appwrite) - [Tokens API Reference - Docs - Appwrite](#tokens-api-reference-docs-appwrite) - [Avatars API Reference - Docs - Appwrite](#avatars-api-reference-docs-appwrite) - [Locale API Reference - Docs - Appwrite](#locale-api-reference-docs-appwrite) - [Sites API Reference - Docs - Appwrite](#sites-api-reference-docs-appwrite) - [Users API Reference - Docs - Appwrite](#users-api-reference-docs-appwrite) - [Team - Docs - Appwrite](#team-docs-appwrite) - [Document - Docs - Appwrite](#document-docs-appwrite) - [Messaging API Reference - Docs - Appwrite](#messaging-api-reference-docs-appwrite) - [Preferences - Docs - Appwrite](#preferences-docs-appwrite) - [Transaction - Docs - Appwrite](#transaction-docs-appwrite) - [Token - Docs - Appwrite](#token-docs-appwrite) - [Documents List - Docs - Appwrite](#documents-list-docs-appwrite) - [Memberships List - Docs - Appwrite](#memberships-list-docs-appwrite) - [Session - Docs - Appwrite](#session-docs-appwrite) - [Transaction List - Docs - Appwrite](#transaction-list-docs-appwrite) - [Locale - Docs - Appwrite](#locale-docs-appwrite) - [Rows List - Docs - Appwrite](#rows-list-docs-appwrite) - [Subscriber - Docs - Appwrite](#subscriber-docs-appwrite) - [Index - Docs - Appwrite](#index-docs-appwrite) - [Variable - Docs - Appwrite](#variable-docs-appwrite) - [Provider - Docs - Appwrite](#provider-docs-appwrite) - [Deployment - Docs - Appwrite](#deployment-docs-appwrite) - [Topic - Docs - Appwrite](#topic-docs-appwrite) - [Continents List - Docs - Appwrite](#continents-list-docs-appwrite) - [Function - Docs - Appwrite](#function-docs-appwrite) - [Specifications List - Docs - Appwrite](#specifications-list-docs-appwrite) - [Countries List - Docs - Appwrite](#countries-list-docs-appwrite) - [Frameworks List - Docs - Appwrite](#frameworks-list-docs-appwrite) - [Sites List - Docs - Appwrite](#sites-list-docs-appwrite) - [Currencies List - Docs - Appwrite](#currencies-list-docs-appwrite) - [Phones List - Docs - Appwrite](#phones-list-docs-appwrite) - [MFA Recovery Codes - Docs - Appwrite](#mfa-recovery-codes-docs-appwrite) - [Target - Docs - Appwrite](#target-docs-appwrite) - [Deployments List - Docs - Appwrite](#deployments-list-docs-appwrite) - [JWT - Docs - Appwrite](#jwt-docs-appwrite) - [Locale codes list - Docs - Appwrite](#locale-codes-list-docs-appwrite) - [Message - Docs - Appwrite](#message-docs-appwrite) - [Target list - Docs - Appwrite](#target-list-docs-appwrite) - [MFAFactors - Docs - Appwrite](#mfafactors-docs-appwrite) - [Site - Docs - Appwrite](#site-docs-appwrite) - [Sessions List - Docs - Appwrite](#sessions-list-docs-appwrite) - [Identities List - Docs - Appwrite](#identities-list-docs-appwrite) - [Users List - Docs - Appwrite](#users-list-docs-appwrite) - [Logs List - Docs - Appwrite](#logs-list-docs-appwrite) - [Database - Docs - Appwrite](#database-docs-appwrite) - [Bucket - Docs - Appwrite](#bucket-docs-appwrite) - [File - Docs - Appwrite](#file-docs-appwrite) - [Membership - Docs - Appwrite](#membership-docs-appwrite) - [Executions List - Docs - Appwrite](#executions-list-docs-appwrite) --- # Docs - Appwrite [Skip to content](https://appwrite.io/docs#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ![](https://appwrite.io/images/bgs/docs-blur-1.svg) ![](https://appwrite.io/_app/immutable/assets/blur-2.DBgXfMgH.png) [New\ \ MCP Server](https://appwrite.io/docs/tooling/mcp) Docs\_ ====== Appwrite helps you build secure and scalable apps, faster. Leverage Appwrite's powerful APIs to stop fighting technologies and start delivering value. [Quickstart guides](https://appwrite.io/docs/quick-starts) [![Next.js](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20d='M64%200C28.7%200%200%2028.7%200%2064s28.7%2064%2064%2064c11.2%200%2021.7-2.9%2030.8-7.9L48.4%2055.3v36.6h-6.8V41.8h6.8l50.5%2075.8C116.4%20106.2%20128%2086.5%20128%2064c0-35.3-28.7-64-64-64zm22.1%2084.6-7.5-11.3V41.8h7.5v42.8z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/nextjs) [![React](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.6073%2011.9852C13.6073%2011.1024%2012.8877%2010.3868%2012%2010.3868C11.1123%2010.3868%2010.3927%2011.1024%2010.3927%2011.9852C10.3927%2012.868%2011.1123%2013.5836%2012%2013.5836C12.8877%2013.5836%2013.6073%2012.868%2013.6073%2011.9852Z'%20fill='%2353C1DE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.2202%209.01766C17.5597%207.64602%2017.9863%205.10245%2016.4822%204.2401C14.9852%203.38151%2013.0371%205.02672%2012.0084%206.01427C10.9827%205.03657%208.97981%203.39838%207.47698%204.26347C5.9805%205.12494%206.44199%207.62634%206.78894%209.00657C5.39299%209.40087%203%2010.2501%203%2011.9852C3%2013.7153%205.3905%2014.6393%206.77819%2015.0332C6.42995%2016.421%205.99158%2018.8867%207.48996%2019.7462C8.99836%2020.6112%2010.995%2019.012%2012.0332%2018.0137C13.0685%2019.007%2014.998%2020.6167%2016.4953%2019.7547C17.9974%2018.89%2017.6061%2016.3805%2017.2592%2014.9923C18.6044%2014.5975%2021%2013.6937%2021%2011.9852C21%2010.2668%2018.5942%209.41063%2017.2202%209.01766ZM17.0497%2014.2566C16.8219%2013.5394%2016.5144%2012.7768%2016.1383%2011.989C16.4973%2011.2198%2016.7928%2010.467%2017.0143%209.75439C18.0215%2010.0448%2020.2311%2010.7085%2020.2311%2011.9852C20.2311%2013.2738%2018.1108%2013.9438%2017.0497%2014.2566ZM16.11%2019.0929C14.9928%2019.736%2013.3333%2018.1967%2012.5687%2017.4652C13.0759%2016.9135%2013.5828%2016.2721%2014.0775%2015.56C14.9477%2015.4832%2015.7698%2015.3576%2016.5154%2015.1863C16.7596%2016.1682%2017.2321%2018.4469%2016.11%2019.0929ZM7.87417%2019.0837C6.75686%2018.4431%207.26755%2016.2428%207.52374%2015.2205C8.26101%2015.3827%209.07714%2015.4994%209.94943%2015.5697C10.4474%2016.2666%2010.9689%2016.9071%2011.4945%2017.4681C10.8452%2018.0928%208.99671%2019.7274%207.87417%2019.0837ZM3.76889%2011.9852C3.76889%2010.6917%205.96524%2010.0328%206.99542%209.74314C7.22071%2010.4717%207.51617%2011.2335%207.87274%2012.0038C7.51155%2012.7856%207.21186%2013.5595%206.98451%2014.2966C6.00222%2014.017%203.76889%2013.2795%203.76889%2011.9852ZM7.86222%204.92526C8.9841%204.27949%2010.7248%205.8522%2011.4695%206.56008C10.9466%207.11849%2010.4299%207.75421%209.93621%208.44705C9.08965%208.52508%208.27925%208.65041%207.53426%208.81827C7.25475%207.70505%206.74155%205.57033%207.86222%204.92526ZM14.6276%209.27821C15.2019%209.3503%2015.7521%209.44615%2016.2688%209.56348C16.1137%2010.0579%2015.9204%2010.5749%2015.6927%2011.1048C15.3626%2010.482%2015.0083%209.87176%2014.6276%209.27821ZM12.0086%207.10653C12.3633%207.48859%2012.7185%207.91526%2013.0679%208.37813C12.3591%208.34483%2011.6492%208.34467%2010.9404%208.37766C11.2901%207.91907%2011.6484%207.49303%2012.0086%207.10653ZM8.3139%2011.1043C8.08997%2010.5761%207.89839%2010.0568%207.74193%209.55539C8.25551%209.44108%208.80318%209.34768%209.3738%209.27678C8.99197%209.86902%208.63826%2010.4791%208.3139%2011.1043ZM9.39021%2014.7481C8.80071%2014.6827%208.24476%2014.5941%207.73134%2014.4829C7.89026%2013.9726%208.08607%2013.4422%208.31478%2012.9027C8.64362%2013.5343%209.00269%2014.1503%209.39021%2014.7481ZM12.0299%2016.9178C11.6654%2016.5267%2011.3019%2016.0942%2010.9469%2015.629C11.6597%2015.6568%2012.3739%2015.6569%2013.0866%2015.6252C12.7361%2016.099%2012.3821%2016.5321%2012.0299%2016.9178ZM15.7%2012.8752C15.9406%2013.4205%2016.1434%2013.9481%2016.3045%2014.4498C15.7826%2014.5682%2015.2191%2014.6636%2014.6254%2014.7344C15.009%2014.1297%2015.3689%2013.5099%2015.7%2012.8752ZM13.6484%2014.8271C12.5581%2014.9046%2011.4609%2014.9038%2010.3703%2014.8335C9.75053%2013.9332%209.19887%2012.9864%208.72265%2012.0035C9.19653%2011.0227%209.74422%2010.0778%2010.361%209.17895C11.4525%209.0969%2012.5507%209.09671%2013.6421%209.17943C14.2536%2010.0782%2014.8005%2011.0207%2015.2854%2011.9927C14.8062%2012.9731%2014.2557%2013.9199%2013.6484%2014.8271ZM16.0982%204.90252C17.2204%205.54618%2016.7209%207.83216%2016.4757%208.82619C15.729%208.65484%2014.918%208.5273%2014.069%208.44808C13.5743%207.74772%2013.0619%207.11088%2012.5474%206.55968C13.3017%205.83656%2014.9869%204.26516%2016.0982%204.90252Z'%20fill='%2353C1DE'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/react) [![Vue](data:image/svg+xml,%3csvg%20width='25'%20height='22'%20viewBox='0%200%2025%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%200.333008L12.4444%2021.6663L24.8889%200.333008H20L12.4444%2013.2219L4.88889%200.333008H0Z'%20fill='%23d1d5db'/%3e%3cpath%20d='M4.88867%200.333008L12.4442%2013.2219L19.9998%200.333008H15.5553L12.5022%205.67756L9.33312%200.333008H4.88867Z'%20fill='%239ca3af'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/vue) [![Angular](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20fill='%23C4473A'%20d='M52.864%2064h23.28L63.769%2038.123zM63.81%201.026%204.553%2021.88l9.363%2077.637%2049.957%2027.457%2050.214-27.828%209.36-77.635L63.81%201.026zM48.044%2075l-7.265%2018.176-13.581.056%2036.608-81.079-.07-.153h-.064l.001-.133.063.133h.141l.123-.274V12h-.124l-.069.153%2038.189%2081.417-13.074-.287-8.042-18.58-17.173.082'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/angular) [![Svelte](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20d='M110.846%2018.026C99.182%201.33%2076.145-3.618%2059.489%206.995L30.236%2025.639a33.56%2033.56%200%200%200-15.161%2022.479%2035.348%2035.348%200%200%200%203.485%2022.691%2033.647%2033.647%200%200%200-5.02%2012.543%2035.767%2035.767%200%200%200%206.109%2027.047c11.668%2016.695%2034.704%2021.641%2051.358%2011.029l29.252-18.644a33.555%2033.555%200%200%200%2015.162-22.479%2035.364%2035.364%200%200%200-3.482-22.69%2033.671%2033.671%200%200%200%205.017-12.543%2035.75%2035.75%200%200%200-6.109-27.046'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M56.632%20111.968a23.235%2023.235%200%200%201-24.94-9.243%2021.5%2021.5%200%200%201-3.675-16.266c.17-.925.404-1.837.699-2.731l.551-1.68%201.499%201.1a37.687%2037.687%200%200%200%2011.443%205.718l1.086.329-.1%201.085a6.56%206.56%200%200%200%201.181%204.35%206.995%206.995%200%200%200%207.508%202.788%206.442%206.442%200%200%200%201.797-.791l29.254-18.641a6.089%206.089%200%200%200%202.748-4.072%206.493%206.493%200%200%200-1.107-4.903%207%207%200%200%200-7.512-2.789%206.457%206.457%200%200%200-1.795.79l-11.162%207.116a21.325%2021.325%200%200%201-5.941%202.607%2023.235%2023.235%200%200%201-24.939-9.244%2021.497%2021.497%200%200%201-3.675-16.265A20.174%2020.174%200%200%201%2038.67%2037.71l29.251-18.643a21.316%2021.316%200%200%201%205.944-2.613%2023.239%2023.239%200%200%201%2024.94%209.245%2021.504%2021.504%200%200%201%203.675%2016.265%2020.763%2020.763%200%200%201-.699%202.732l-.551%201.68-1.498-1.099a37.732%2037.732%200%200%200-11.444-5.72l-1.088-.33.102-1.085a6.588%206.588%200%200%200-1.18-4.35%207.003%207.003%200%200%200-7.51-2.787%206.498%206.498%200%200%200-1.797.79L47.562%2050.439a6.079%206.079%200%200%200-2.747%204.071%206.489%206.489%200%200%200%201.106%204.902%207.003%207.003%200%200%200%207.512%202.789%206.551%206.551%200%200%200%201.797-.789l11.16-7.114a21.287%2021.287%200%200%201%205.94-2.611%2023.236%2023.236%200%200%201%2024.94%209.244%2021.508%2021.508%200%200%201%203.676%2016.265%2020.194%2020.194%200%200%201-9.12%2013.52l-29.25%2018.641a21.266%2021.266%200%200%201-5.944%202.611'%20style='fill:%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/sveltekit) [![TanStack Start](https://appwrite.io/_app/immutable/assets/tanstack.BR6LHet_.svg)](https://appwrite.io/docs/quick-starts/tanstack-start) [![React Native](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M16.4822%204.2401C17.9863%205.10245%2017.5597%207.64602%2017.2202%209.01766C17.6278%209.13422%2018.1261%209.29153%2018.6255%209.5H15.9759C15.5458%209.41118%2015.0946%209.33683%2014.6276%209.27821C14.7242%209.42879%2014.8191%209.58044%2014.9123%209.73311C14.6785%209.86086%2014.4777%2010.0356%2014.3244%2010.2436C14.1066%209.88288%2013.8792%209.52787%2013.6421%209.17943C12.5507%209.09671%2011.4525%209.0969%2010.361%209.17895C9.74422%2010.0778%209.19653%2011.0227%208.72265%2012.0035C9.19887%2012.9864%209.75053%2013.9332%2010.3703%2014.8335C11.4609%2014.9038%2012.5581%2014.9046%2013.6484%2014.8271C13.7678%2014.6487%2013.8851%2014.4687%2014%2014.2873V15.6708C13.5299%2016.3388%2013.0495%2016.9423%2012.5687%2017.4652C12.9101%2017.7918%2013.4298%2018.2794%2014%2018.6619V19.5311C13.2359%2019.1118%2012.5312%2018.4914%2012.0332%2018.0137C10.995%2019.012%208.99836%2020.6112%207.48996%2019.7462C5.99158%2018.8867%206.42995%2016.421%206.77819%2015.0332C5.3905%2014.6393%203%2013.7153%203%2011.9852C3%2010.2501%205.39299%209.40087%206.78894%209.00657C6.44199%207.62634%205.9805%205.12494%207.47698%204.26347C8.97981%203.39838%2010.9827%205.03657%2012.0084%206.01427C13.0371%205.02672%2014.9852%203.38151%2016.4822%204.2401ZM7.52374%2015.2205C7.26755%2016.2428%206.75686%2018.4431%207.87417%2019.0837C8.99671%2019.7274%2010.8452%2018.0928%2011.4945%2017.4681C10.9689%2016.9071%2010.4474%2016.2666%209.94943%2015.5697C9.07714%2015.4994%208.26101%2015.3827%207.52374%2015.2205ZM6.99542%209.74314C5.96524%2010.0328%203.76889%2010.6917%203.76889%2011.9852C3.76889%2013.2795%206.00222%2014.017%206.98451%2014.2966C7.21186%2013.5595%207.51155%2012.7856%207.87274%2012.0038C7.51617%2011.2335%207.22071%2010.4717%206.99542%209.74314ZM11.4695%206.56008C10.7248%205.8522%208.9841%204.27949%207.86222%204.92526C6.74155%205.57033%207.25475%207.70505%207.53426%208.81827C8.27925%208.65041%209.08965%208.52508%209.93621%208.44705C10.4299%207.75421%2010.9466%207.11849%2011.4695%206.56008ZM13.0679%208.37813C12.7185%207.91526%2012.3633%207.48859%2012.0086%207.10653C11.6484%207.49303%2011.2901%207.91907%2010.9404%208.37766C11.6492%208.34467%2012.3591%208.34483%2013.0679%208.37813ZM7.74193%209.55539C7.89839%2010.0568%208.08997%2010.5761%208.3139%2011.1043C8.63826%2010.4791%208.99197%209.86902%209.3738%209.27678C8.80318%209.34768%208.25551%209.44108%207.74193%209.55539ZM7.73134%2014.4829C8.24476%2014.5941%208.80071%2014.6827%209.39021%2014.7481C9.00269%2014.1503%208.64362%2013.5343%208.31478%2012.9027C8.08607%2013.4422%207.89026%2013.9726%207.73134%2014.4829ZM10.9469%2015.629C11.3019%2016.0942%2011.6654%2016.5267%2012.0299%2016.9178C12.3821%2016.5321%2012.7361%2016.099%2013.0866%2015.6252C12.3739%2015.6569%2011.6597%2015.6568%2010.9469%2015.629ZM16.4757%208.82619C16.7209%207.83216%2017.2204%205.54618%2016.0982%204.90252C14.9869%204.26516%2013.3017%205.83656%2012.5474%206.55968C13.0619%207.11088%2013.5743%207.74772%2014.069%208.44808C14.918%208.5273%2015.729%208.65484%2016.4757%208.82619ZM12%2010.3868C12.8877%2010.3868%2013.6073%2011.1024%2013.6073%2011.9852C13.6073%2012.868%2012.8877%2013.5836%2012%2013.5836C11.1123%2013.5836%2010.3927%2012.868%2010.3927%2011.9852C10.3927%2011.1024%2011.1123%2010.3868%2012%2010.3868Z'%20fill='%23d1d5db'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.9%2010C15.1268%2010%2014.5%2010.6156%2014.5%2011.375V19.625C14.5%2020.3844%2015.1268%2021%2015.9%2021H20.1C20.8732%2021%2021.5%2020.3844%2021.5%2019.625V11.375C21.5%2010.6156%2020.8732%2010%2020.1%2010H15.9ZM18%2019.625C18.3866%2019.625%2018.7%2019.3172%2018.7%2018.9375C18.7%2018.5578%2018.3866%2018.25%2018%2018.25C17.6134%2018.25%2017.3%2018.5578%2017.3%2018.9375C17.3%2019.3172%2017.6134%2019.625%2018%2019.625Z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/react-native) [![Flutter](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.647%203L5%2011.7147L7.67631%2014.4119L18.9996%203H13.647Z'%20fill='%2347C5FB'/%3e%3cpath%20d='M13.5868%2011.0365L8.95703%2015.7025L11.6432%2018.4501L14.3146%2015.7578L18.9998%2011.0365H13.5868Z'%20fill='%2347C5FB'/%3e%3cpath%20d='M11.6427%2018.4501L13.6763%2020.4995H18.9993L14.3141%2015.7578L11.6427%2018.4501Z'%20fill='%2300569E'/%3e%3cpath%20d='M8.92627%2015.7324L11.6026%2013.0351L14.314%2015.7578L11.6426%2018.4501L8.92627%2015.7324Z'%20fill='%2300B5F8'/%3e%3cpath%20d='M11.6427%2018.4501L13.8671%2017.7061L14.0881%2015.9855L11.6427%2018.4501Z'%20fill='url(%23paint0_linear_2689_27555)'%20fill-opacity='0.8'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27555'%20x1='11.688'%20y1='16.793'%20x2='13.4506'%20y2='17.4232'%20gradientUnits='userSpaceOnUse'%3e%3cstop/%3e%3cstop%20offset='1'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/flutter) [![iOS](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M19.6437%2017.5861C19.3385%2018.2848%2018.9772%2018.928%2018.5586%2019.5193C17.9881%2020.3255%2017.5209%2020.8835%2017.1609%2021.1934C16.6027%2021.702%2016.0048%2021.9625%2015.3644%2021.9773C14.9047%2021.9773%2014.3504%2021.8477%2013.705%2021.5847C13.0576%2021.323%2012.4626%2021.1934%2011.9186%2021.1934C11.348%2021.1934%2010.7361%2021.323%2010.0815%2021.5847C9.42602%2021.8477%208.89793%2021.9847%208.49417%2021.9983C7.88012%2022.0242%207.26806%2021.7563%206.65713%2021.1934C6.2672%2020.8563%205.77947%2020.2786%205.1952%2019.4601C4.56832%2018.586%204.05294%2017.5725%203.64918%2016.417C3.21677%2015.1689%203%2013.9603%203%2012.7902C3%2011.4498%203.29226%2010.2938%203.87766%209.32509C4.33773%208.54696%204.94978%207.93316%205.71581%207.48255C6.48185%207.03195%207.30955%206.80233%208.20091%206.78763C8.68863%206.78763%209.32822%206.93714%2010.123%207.23096C10.9156%207.52576%2011.4245%207.67526%2011.6476%207.67526C11.8144%207.67526%2012.3798%207.50045%2013.3382%207.15195C14.2445%206.82874%2015.0094%206.69492%2015.636%206.74764C17.334%206.88343%2018.6097%207.54675%2019.4581%208.74177C17.9395%209.6536%2017.1883%2010.9307%2017.2032%2012.5691C17.2169%2013.8452%2017.6841%2014.9071%2018.6022%2015.7503C19.0183%2016.1417%2019.483%2016.4441%2020%2016.6589C19.8879%2016.9812%2019.7695%2017.2898%2019.6437%2017.5861ZM15.7494%202.40011C15.7494%203.40034%2015.3806%204.33425%2014.6456%205.19867C13.7586%206.22629%2012.6857%206.8201%2011.5223%206.7264C11.5075%206.60641%2011.4989%206.48011%2011.4989%206.3474C11.4989%205.38718%2011.9207%204.35956%2012.6698%203.51934C13.0438%203.09392%2013.5194%202.74019%2014.0962%202.45801C14.6718%202.18005%2015.2162%202.02632%2015.7282%202C15.7431%202.13371%2015.7494%202.26744%2015.7494%202.4001V2.40011Z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/apple) [![Android](data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M23.1672%2012.7371L25.6008%208.52222C25.6437%208.45007%2025.6691%208.36232%2025.6691%208.26872C25.6691%207.98889%2025.4429%207.76269%2025.1631%207.76269C24.9768%207.76269%2024.814%207.86312%2024.7263%208.01327L24.7253%208.01522L22.2615%2012.2828C20.4216%2011.4375%2018.2698%2010.9441%2016.0029%2010.9441C13.7361%2010.9441%2011.5842%2011.4375%209.64886%2012.3218L9.74441%2012.2828L7.28059%208.01424C7.19186%207.86214%207.02806%207.76074%206.84184%207.76074C6.56201%207.76074%206.33581%207.98694%206.33581%208.26677C6.33581%208.36037%206.36116%208.44714%206.40504%208.52222L6.40406%208.52027L8.83766%2012.7352C4.65881%2015.043%201.78256%2019.2648%201.38574%2024.1856L1.38281%2024.2363H30.624C30.2243%2019.2648%2027.348%2015.043%2023.2433%2012.7722L23.1692%2012.7352L23.1672%2012.7371ZM9.27154%2020.0721C8.59879%2020.0721%208.05376%2019.527%208.05376%2018.8543C8.05376%2018.1815%208.59879%2017.6365%209.27154%2017.6365C9.94429%2017.6365%2010.4893%2018.1815%2010.4893%2018.8543C10.4883%2019.5261%209.94429%2020.0711%209.27154%2020.0721ZM22.7304%2020.0721C22.0577%2020.0721%2021.5127%2019.527%2021.5127%2018.8543C21.5127%2018.1815%2022.0577%2017.6365%2022.7304%2017.6365C23.4032%2017.6365%2023.9482%2018.1815%2023.9482%2018.8543C23.9472%2019.5261%2023.4032%2020.0711%2022.7304%2020.0721Z'%20fill='%233DDC84'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/android) [![Kotlin](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%2021.0001L12.03%2011.9701L21%2021.0001H3Z'%20fill='url(%23paint0_linear_2689_27616)'/%3e%3cpath%20d='M3%203H12.03L3%2012.5192V3Z'%20fill='url(%23paint1_linear_2689_27616)'/%3e%3cpath%20d='M12.03%203L3%2012.51V21L12.03%2011.97L21%203H12.03Z'%20fill='url(%23paint2_linear_2689_27616)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27616'%20x1='7.7877'%20y1='25.2043'%20x2='16.2921'%20y2='16.7002'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.097'%20stop-color='%230095D5'/%3e%3cstop%20offset='0.301'%20stop-color='%23238AD9'/%3e%3cstop%20offset='0.621'%20stop-color='%23557BDE'/%3e%3cstop%20offset='0.864'%20stop-color='%237472E2'/%3e%3cstop%20offset='1'%20stop-color='%23806EE3'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_2689_27616'%20x1='4.2627'%20y1='6.6177'%20x2='9.20189'%20y2='1.6785'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.118'%20stop-color='%230095D5'/%3e%3cstop%20offset='0.418'%20stop-color='%233C83DC'/%3e%3cstop%20offset='0.696'%20stop-color='%236D74E1'/%3e%3cstop%20offset='0.833'%20stop-color='%23806EE3'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_2689_27616'%20x1='-0.0306008'%20y1='19.5492'%20x2='16.7193'%20y2='2.79928'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.107'%20stop-color='%23C757BC'/%3e%3cstop%20offset='0.214'%20stop-color='%23D0609A'/%3e%3cstop%20offset='0.425'%20stop-color='%23E1725C'/%3e%3cstop%20offset='0.605'%20stop-color='%23EE7E2F'/%3e%3cstop%20offset='0.743'%20stop-color='%23F58613'/%3e%3cstop%20offset='0.823'%20stop-color='%23F88909'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/kotlin) [![Swift](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M16.5872%2018.8938C14.4653%2020.1088%2011.5479%2020.2337%208.61265%2018.9866C6.23606%2017.9843%204.26411%2016.2298%203%2014.2251C3.60678%2014.7263%204.31466%2015.1274%205.07311%2015.478C8.10435%2016.8864%2011.135%2016.79%2013.2677%2015.4816C10.2338%2013.1759%207.65188%2010.1649%205.73053%207.7091C5.32585%207.30808%205.02246%206.80683%204.71908%206.35574C7.04502%208.46089%2010.7364%2011.1172%2012.0508%2011.8694C9.27012%208.96205%206.79228%205.35341%206.89321%205.45346C11.2924%209.86433%2015.3883%2012.3706%2015.3883%2012.3706C15.5238%2012.4463%2015.6284%2012.5094%2015.7125%2012.5657C15.8012%2012.3422%2015.8789%2012.1101%2015.9444%2011.8694C16.6523%209.31314%2015.8434%206.40576%2014.0735%204C18.169%206.45601%2020.5963%2011.0672%2019.5847%2014.9269C19.5584%2015.031%2019.5297%2015.1337%2019.4988%2015.2347C21.5211%2017.741%2021.0005%2020.4406%2020.7477%2019.9394C19.6507%2017.8113%2017.6197%2018.462%2016.5872%2018.8938Z'%20fill='url(%23paint0_linear_2689_27628)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27628'%20x1='12.0066'%20y1='4'%20x2='12.0066'%20y2='20.0008'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23F88A36'/%3e%3cstop%20offset='1'%20stop-color='%23FD2020'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/swift) [![Node.js](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.2666%203.19203C11.8025%202.93541%2011.1975%202.93657%2010.733%203.19203C8.40657%204.45431%206.08015%205.71698%203.75333%206.97868C3.30057%207.21287%202.99519%207.69092%203.00006%208.18711V15.8139C2.99679%2016.3198%203.31791%2016.8025%203.78236%2017.0334C4.4507%2017.383%205.10002%2017.7681%205.78044%2018.0944C6.56641%2018.4741%207.54974%2018.5581%208.34532%2018.1621C8.99111%2017.8339%209.27794%2017.104%209.27714%2016.4331C9.28234%2013.9161%209.27794%2011.399%209.27914%208.88191C9.29449%208.77004%209.20908%208.65048%209.08498%208.65317C8.78768%208.64856%208.48997%208.65048%208.19266%208.6524C8.0803%208.64195%207.97068%208.73369%207.97915%208.84473C7.97515%2011.3456%207.97995%2013.8472%207.97675%2016.3484C7.98322%2016.6944%207.7455%2017.0269%207.40636%2017.1438C6.62309%2017.4137%204.38745%2015.9865%204.38745%2015.9865C4.3054%2015.9491%204.2533%2015.8617%204.26134%2015.7748C4.26134%2013.2585%204.26175%2010.7421%204.26134%208.22622C4.25007%208.1248%204.31365%208.03344%204.4084%207.99203C6.72714%206.73719%209.04468%205.4792%2011.3634%204.22359C11.4439%204.17074%2011.5562%204.1709%2011.6366%204.22398C13.9553%205.4792%2016.2733%206.73603%2018.5924%207.99094C18.6875%208.03229%2018.7483%208.12518%2018.7387%208.22622C18.7383%2010.7421%2018.7395%2013.2585%2018.7379%2015.7744C18.7447%2015.8634%2018.698%2015.9497%2018.6134%2015.9888C16.3163%2017.2368%2013.993%2018.4446%2011.7167%2019.7289C11.6174%2019.7849%2011.5049%2019.8484%2011.3937%2019.7867C10.795%2019.4611%2010.2037%2019.1229%209.60707%2018.7942C9.54222%2018.7544%209.45962%2018.7374%209.39196%2018.7819C9.12442%2018.9205%208.87287%2019.0327%208.5657%2019.1523C8.13424%2019.3202%208.2032%2019.3889%208.59225%2019.6117C9.29001%2020%209.98891%2020.3867%2010.6866%2020.7753C11.1459%2021.0571%2011.7631%2021.0772%2012.2372%2020.8167C14.564%2019.556%2016.89%2018.2938%2019.2173%2017.0331C19.6805%2016.8009%2020.0032%2016.3201%2020%2015.8139V8.18711C20.0044%207.70098%2019.7107%207.23146%2019.2716%206.99381C16.9371%205.72538%2014.6015%204.4597%2012.2666%203.19203Z'%20fill='%238CC84B'/%3e%3cpath%20d='M15.7774%208.9183C14.8642%208.43794%2013.7777%208.41237%2012.7629%208.47513C12.0298%208.54635%2011.2587%208.74527%2010.7245%209.26198C10.1767%209.78144%2010.0574%2010.6202%2010.3176%2011.2983C10.5041%2011.7775%2010.9735%2012.0891%2011.4589%2012.2539C12.0842%2012.4709%2012.7409%2012.538%2013.3979%2012.6052C13.9971%2012.6664%2014.5964%2012.7276%2015.1723%2012.9027C15.4076%2012.9794%2015.6816%2013.0966%2015.7536%2013.3482C15.8201%2013.6463%2015.7472%2013.9927%2015.5011%2014.1998C14.7193%2014.8081%2012.5448%2014.7149%2011.7724%2014.2361C11.4601%2014.0321%2011.3255%2013.671%2011.2708%2013.327C11.2648%2013.2197%2011.177%2013.1214%2011.0585%2013.1295C10.762%2013.126%2010.4655%2013.1268%2010.169%2013.1291C10.0655%2013.1206%209.95796%2013.193%209.95229%2013.2968C9.89137%2014.8728%2011.3636%2015.5599%2012.7448%2015.7112C13.534%2015.7851%2014.3405%2015.7809%2015.1176%2015.6144C15.7017%2015.4836%2016.2874%2015.2429%2016.6895%2014.8005C17.1854%2014.2628%2017.2829%2013.4624%2017.0605%2012.7927C16.8905%2012.2931%2016.4046%2011.9726%2015.9079%2011.8077C15.2325%2011.58%2014.4321%2011.4576%2013.8204%2011.4003C12.9312%2011.317%2011.8746%2011.351%2011.6229%2010.7766C11.5226%2010.4758%2011.608%2010.1023%2011.8891%209.91728C12.633%209.42117%2014.1469%209.48705%2014.9173%209.85766C15.2711%2010.0318%2015.4761%2010.3895%2015.5607%2010.7506C15.5763%2010.8567%2015.6489%2010.9674%2015.7738%2010.9627C16.0683%2010.9685%2016.3628%2010.9643%2016.6572%2010.9647C16.7584%2010.9717%2016.8691%2010.9155%2016.8889%2010.8137C16.8764%2010.059%2016.4844%209.2864%2015.7774%208.9183Z'%20fill='%238CC84B'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/node) [![Python](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.082%203C8.66956%203%207.52459%204.10863%207.52459%205.47619V7.19047H11.9508V7.66666H5.55737C4.14498%207.66666%203%208.77529%203%2010.1429L3%2013.8571C3%2015.2247%204.14498%2016.3333%205.55737%2016.3333H7.03278V14.2381C7.03278%2012.8705%208.17776%2011.7619%209.59016%2011.7619H14.3115C15.5066%2011.7619%2016.4754%2010.8238%2016.4754%209.66666V5.47619C16.4754%204.10863%2015.3304%203%2013.918%203H10.082ZM9.4918%206.04762C9.98071%206.04762%2010.377%205.66386%2010.377%205.19047C10.377%204.71709%209.98071%204.33333%209.4918%204.33333C9.00289%204.33333%208.60655%204.71709%208.60655%205.19047C8.60655%205.66386%209.00289%206.04762%209.4918%206.04762Z'%20fill='url(%23paint0_linear_2689_27561)'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M13.9176%2020.9999C15.33%2020.9999%2016.475%2019.8913%2016.475%2018.5237V16.8094H12.0488L12.0488%2016.3332L18.4422%2016.3332C19.8546%2016.3332%2020.9996%2015.2246%2020.9996%2013.857V10.1428C20.9996%208.77519%2019.8546%207.66657%2018.4422%207.66657L16.9668%207.66656V9.7618C16.9668%2011.1294%2015.8218%2012.238%2014.4094%2012.238L9.6881%2012.238C8.493%2012.238%207.52417%2013.1761%207.52417%2014.3332L7.52417%2018.5237C7.52417%2019.8913%208.66915%2020.9999%2010.0815%2020.9999H13.9176ZM14.5078%2017.9523C14.0189%2017.9523%2013.6225%2018.336%2013.6225%2018.8094C13.6225%2019.2828%2014.0189%2019.6666%2014.5078%2019.6666C14.9967%2019.6666%2015.393%2019.2828%2015.393%2018.8094C15.393%2018.336%2014.9967%2017.9523%2014.5078%2017.9523Z'%20fill='url(%23paint1_linear_2689_27561)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27561'%20x1='9.7377'%20y1='3'%20x2='9.7377'%20y2='16.3333'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23327EBD'/%3e%3cstop%20offset='1'%20stop-color='%231565A7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_2689_27561'%20x1='14.2619'%20y1='7.66656'%20x2='14.2619'%20y2='20.9999'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FFDA4B'/%3e%3cstop%20offset='1'%20stop-color='%23F9C600'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/python) [![PHP](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.5811%207H12.1084L11.6768%209.31387H13.0491C13.8017%209.3301%2014.3624%209.4997%2014.7314%209.82268C15.1077%2010.1457%2015.2184%2010.7596%2015.0634%2011.6641L14.3219%2015.6982H12.7724L13.4808%2011.8458C13.5545%2011.4419%2013.5323%2011.1553%2013.4144%2010.9857C13.2964%2010.8161%2013.0418%2010.7313%2012.6507%2010.7313L11.4222%2010.7191L10.5147%2015.6982H8.98735L10.5811%207Z'%20fill='%238892BF'%20/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.58265%209.31391H6.54874C7.41932%209.32191%208.05016%209.59666%208.44129%2010.1377C8.83241%2010.6787%208.96146%2011.4177%208.82865%2012.3546C8.77707%2012.7828%208.66264%2013.2027%208.48556%2013.6146C8.31578%2014.0264%208.07982%2014.3979%207.77724%2014.7291C7.40825%2015.149%207.01358%2015.4155%206.59301%2015.5286C6.17245%2015.6418%205.73706%2015.6982%205.28705%2015.6982H3.95895L3.53838%2018H2L3.58265%209.31391ZM4.2135%2014.3293L4.87534%2010.7071H5.0989C5.18013%2010.7071%205.26491%2010.703%205.35345%2010.695C5.94379%2010.687%206.43431%2010.7475%206.82543%2010.8767C7.22386%2011.0058%207.35667%2011.4945%207.22386%2012.3425C7.06161%2013.3521%206.7442%2013.9416%206.27206%2014.1112C5.79991%2014.2729%205.20958%2014.3494%204.50126%2014.3414H4.34631C4.30204%2014.3414%204.25777%2014.3373%204.2135%2014.3293Z'%20fill='%238892BF'%20/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.6696%209.31391H16.7035L15.1208%2018H16.6592L17.0798%2015.6982H18.4079C18.8579%2015.6982%2019.2933%2015.6418%2019.7139%2015.5286C20.1344%2015.4155%2020.5291%2015.149%2020.8981%2014.7291C21.2007%2014.3979%2021.4366%2014.0264%2021.6064%2013.6146C21.7835%2013.2027%2021.8979%2012.7828%2021.9495%2012.3546C22.0823%2011.4177%2021.9532%2010.6787%2021.5621%2010.1377C21.171%209.59666%2020.5402%209.32191%2019.6696%209.31391ZM17.9962%2010.7071L17.3343%2014.3293C17.3786%2014.3373%2017.4229%2014.3414%2017.4672%2014.3414H17.6221C18.3304%2014.3494%2018.9207%2014.2729%2019.3929%2014.1112C19.865%2013.9416%2020.1824%2013.3521%2020.3447%2012.3425C20.4775%2011.4945%2020.3447%2011.0058%2019.9463%2010.8767C19.5551%2010.7475%2019.0646%2010.687%2018.4743%2010.695C18.3858%2010.703%2018.301%2010.7071%2018.2197%2010.7071H17.9962Z'%20fill='%238892BF'%20/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/php) [![Ruby](https://appwrite.io/_app/immutable/assets/ruby.BSuMfOp5.svg)](https://appwrite.io/docs/quick-starts/ruby) [![.NET](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20style='filter:brightness(120%25)'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.5367%2013.7707C2.44246%2013.7689%202.35244%2013.789%202.27079%2013.823L2.27077%2013.823L2.26809%2013.8241C2.18619%2013.8601%202.11066%2013.9117%202.04778%2013.9776C1.98442%2014.0411%201.93372%2014.1166%201.90025%2014.2008L1.90024%2014.2008L1.89982%2014.2019C1.86787%2014.2841%201.85032%2014.3715%201.85012%2014.4602M2.5367%2013.7707C2.62683%2013.7709%202.71694%2013.7882%202.80221%2013.8257C2.88344%2013.8613%202.95839%2013.9123%203.02096%2013.9775C3.08783%2014.041%203.13744%2014.1165%203.17282%2014.198L3.17349%2014.1995L3.17348%2014.1995C3.20882%2014.2835%203.22627%2014.3729%203.22627%2014.4633C3.22627%2014.5537%203.20882%2014.6431%203.17348%2014.7271C3.13908%2014.8088%203.08878%2014.8848%203.02167%2014.9483C2.95873%2015.0122%202.88363%2015.063%202.80079%2015.0976L2.74298%2014.9591L2.80079%2015.0976C2.7175%2015.1323%202.62807%2015.1501%202.5378%2015.1499M2.5367%2013.7707C2.53724%2013.7707%202.53778%2013.7707%202.53832%2013.7707L2.53515%2013.9207V13.7707C2.53567%2013.7707%202.53619%2013.7707%202.5367%2013.7707ZM2.5378%2015.1499C2.44662%2015.1515%202.35607%2015.1342%202.27193%2015.099C2.1879%2015.0639%202.11207%2015.0118%202.0493%2014.9459C1.98586%2014.8824%201.93594%2014.8076%201.90138%2014.7256C1.86625%2014.6421%201.84837%2014.5522%201.85012%2014.4602M2.5378%2015.1499C2.53715%2015.1499%202.5365%2015.1499%202.53585%2015.1499L2.53667%2014.9999L2.53973%2015.1499C2.53908%2015.1499%202.53844%2015.1499%202.5378%2015.1499ZM1.85012%2014.4602C1.85013%2014.4597%201.85014%2014.4591%201.85015%2014.4586L2.00011%2014.4618H1.85011C1.85011%2014.4613%201.85011%2014.4607%201.85012%2014.4602ZM5.46673%2014.9062V9.91575C5.46994%209.80356%205.47033%209.69143%205.46804%209.57937L8.96337%2014.9876L9.0077%2015.0562H9.08935H10.0849H10.2349V14.9062V8V7.85H10.0849H9.27631H9.12631V8V12.8549C9.12306%2013.0013%209.12426%2013.1479%209.12979%2013.2945L5.68624%207.91909L5.64198%207.85H5.55993H4.5081H4.3581V8V14.9062V15.0562H4.5081H5.31673H5.46673V14.9062ZM15.7176%2014.1483L15.7185%2013.9974H15.5676H12.86V11.9046H15.2104H15.3604V11.7546V11.0261V10.8761H15.2104H12.86V8.88158H15.3928H15.5428V8.73158V8V7.85H15.3928H11.8816H11.7316V8V14.9062V15.0562H11.8816H15.563H15.7121L15.713%2014.9071L15.7176%2014.1483ZM16.1862%207.85H16.0362V8V8.73158V8.88158H16.1862H18.0274V14.9062V15.0562H18.1774H18.986H19.136V14.9062V8.88158H21H21.15V8.73158V8V7.85H21H16.1862Z'%20fill='%23512BD4'%20stroke='%23512BD4'%20stroke-width='0.3'%20/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/dotnet) [![Go](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M1.89654%2010.1159C1.84998%2010.1159%201.83834%2010.0926%201.86162%2010.0577L2.10606%209.74344C2.12934%209.70852%202.18754%209.68524%202.2341%209.68524H6.38966C6.43622%209.68524%206.44786%209.72016%206.42458%209.75508L6.2267%2010.0577C6.20342%2010.0926%206.14522%2010.1276%206.1103%2010.1276L1.89654%2010.1159Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M0.138846%2011.1874C0.0922852%2011.1874%200.0806449%2011.1641%200.103925%2011.1292L0.34837%2010.8149C0.371651%2010.78%200.429852%2010.7567%200.476413%2010.7567H5.78435C5.83092%2010.7567%205.8542%2010.7916%205.84256%2010.8265L5.74943%2011.1059C5.73779%2011.1525%205.69123%2011.1757%205.64467%2011.1757L0.138846%2011.1874Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.95586%2012.2578C2.9093%2012.2578%202.89766%2012.2229%202.92094%2012.188L3.08391%2011.897C3.10719%2011.8621%203.15375%2011.8271%203.20031%2011.8271H5.52835C5.57491%2011.8271%205.59819%2011.8621%205.59819%2011.9086L5.57491%2012.188C5.57491%2012.2346%205.52835%2012.2695%205.49343%2012.2695L2.95586%2012.2578Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.0384%209.90696C14.305%2010.0932%2013.8045%2010.2329%2013.0828%2010.4191C12.9082%2010.4657%2012.8966%2010.4773%2012.7453%2010.3027C12.5706%2010.1048%2012.4426%209.9768%2012.1982%209.8604C11.4648%209.49955%2010.7548%209.60431%2010.0913%2010.035C9.29975%2010.5472%208.89234%2011.3038%208.90398%2012.2466C8.91562%2013.1779%209.55583%2013.9461%2010.4754%2014.0742C11.2669%2014.1789%2011.9304%2013.8996%2012.4542%2013.3059C12.559%2013.1779%2012.6521%2013.0382%2012.7685%2012.8752C12.3495%2012.8752%2011.8257%2012.8752%2010.522%2012.8752C10.2775%2012.8752%2010.2193%2012.7239%2010.3008%2012.526C10.4521%2012.1652%2010.7315%2011.5599%2010.8945%2011.2572C10.9294%2011.1874%2011.0109%2011.071%2011.1855%2011.071H15.4225C15.3992%2011.3853%2015.3992%2011.6996%2015.3527%2012.0138C15.2246%2012.8519%2014.9103%2013.6202%2014.3982%2014.2953C13.5601%2015.4011%2012.4659%2016.0879%2011.0807%2016.2742C9.93996%2016.4255%208.8807%2016.2043%207.94948%2015.5059C7.0881%2014.8541%206.59921%2013.9927%206.47117%2012.9218C6.31985%2011.653%206.69234%2010.5123%207.46059%209.51119C8.28705%208.42865%209.38123%207.74188%2010.7199%207.49743C11.814%207.29955%2012.8617%207.42759%2013.8045%208.06781C14.4214%208.47521%2014.8638%209.03394%2015.1548%209.70908C15.2246%209.81384%2015.1781%209.87204%2015.0384%209.90696Z'%20fill='%23C3C3C6'/%3e%3cpath%20d='M18.8913%2016.3441C17.8321%2016.3208%2016.8659%2016.0181%2016.0511%2015.3197C15.3643%2014.7261%2014.9337%2013.9695%2014.794%2013.0732C14.5844%2011.7578%2014.9453%2010.5938%2015.7368%209.55782C16.5866%208.44035%2017.6109%207.85834%2018.9961%207.6139C20.1834%207.40437%2021.3009%207.52078%2022.3136%208.20755C23.2331%208.83612%2023.8035%209.68586%2023.9548%2010.8033C24.1527%2012.3747%2023.6987%2013.6552%2022.6162%2014.7494C21.8479%2015.5293%2020.9051%2016.0181%2019.8225%2016.2393C19.5083%2016.2975%2019.194%2016.3091%2018.8913%2016.3441ZM21.6617%2011.6414C21.6501%2011.4901%2021.6501%2011.3737%2021.6268%2011.2573C21.4173%2010.1049%2020.358%209.45305%2019.2522%209.70914C18.1696%209.95358%2017.4712%2010.6404%2017.2151%2011.7345C17.0056%2012.6425%2017.4479%2013.5621%2018.286%2013.9345C18.9263%2014.2139%2019.5665%2014.179%2020.1834%2013.8647C21.103%2013.3874%2021.6035%2012.6425%2021.6617%2011.6414Z'%20fill='%23C3C3C6'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/go) [![Deno](https://appwrite.io/_app/immutable/assets/deno.AEOw6YnR.svg)](https://appwrite.io/docs/quick-starts/deno) [![Dart](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6.66995%2017.3279L3.59227%2014.2494C3.22739%2013.8739%203%2013.3449%203%2012.8279C3%2012.5885%203.13485%2012.2143%203.23664%2011.9988L6.07768%206.07855L6.66995%2017.3279Z'%20fill='%2301579B'/%3e%3cpath%20d='M17.2066%206.67088L14.1289%203.59242C13.8605%203.32266%2013.3%203%2012.8267%203C12.4195%203%2012.0203%203.08199%2011.7612%203.2367L6.0791%206.07846L17.2066%206.67088Z'%20fill='%2340C4FF'/%3e%3cpath%20d='M10.3389%2020.9986H17.7978V17.8011L12.2334%2016.0251L7.14355%2017.8011L10.3389%2020.9986Z'%20fill='%2340C4FF'/%3e%3cpath%20d='M6.0791%2015.6709C6.0791%2016.6204%206.19808%2016.8544%206.67137%2017.3292L7.14465%2017.8026H17.7989L12.5901%2011.8824L6.0791%206.07983V15.6709Z'%20fill='%2329B6F6'/%3e%3cpath%20d='M15.5491%206.07855H6.07812L17.7979%2017.8013H20.9945V10.4595L17.2069%206.67097C16.6755%206.13674%2016.2022%206.07855%2015.5491%206.07855Z'%20fill='%2301579B'/%3e%3cpath%20opacity='0.2'%20d='M6.78938%2017.4469C6.31609%2016.9709%206.19711%2016.5027%206.19711%2015.671V6.19756L6.07812%206.07855V15.6696C6.07945%2016.5027%206.07945%2016.7328%206.78938%2017.4469L7.145%2017.8026L6.78938%2017.4469Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M20.8763%2010.3419V17.6836H17.6797L17.7987%2017.8013H20.9953V10.4609L20.8763%2010.3419Z'%20fill='%23263238'/%3e%3cpath%20opacity='0.2'%20d='M17.2066%206.67097C16.6196%206.08384%2016.1384%206.07855%2015.4311%206.07855H6.0791L6.19808%206.19756H15.4324C15.7841%206.19756%2016.6765%206.13806%2017.2066%206.67097Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M20.8771%2010.3418L17.2071%206.67088L14.1294%203.59242C13.8611%203.32266%2013.3005%203%2012.8273%203C12.4201%203%2012.0208%203.08199%2011.7617%203.2367L6.07963%206.07846L3.2386%2011.9987C3.1368%2012.2142%203.00195%2012.5885%203.00195%2012.8278C3.00195%2013.3448%203.22934%2013.8738%203.59422%2014.2493L6.43129%2017.066C6.49871%2017.1493%206.57803%2017.2339%206.67322%2017.3278L6.7922%2017.4468L7.14783%2017.8025L10.2255%2020.881L10.3445%2021H17.6844H17.8034V17.8025H21V17.7946V10.4608L20.8771%2010.3418Z'%20fill='url(%23paint0_radial_2689_27562)'/%3e%3cdefs%3e%3cradialGradient%20id='paint0_radial_2689_27562'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(12.0003%2011.9995)%20scale(8.99837%209.00066)'%3e%3cstop%20stop-color='white'%20stop-opacity='0.1'/%3e%3cstop%20offset='1'%20stop-color='white'%20stop-opacity='0'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/dart) [![Next.js](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20d='M64%200C28.7%200%200%2028.7%200%2064s28.7%2064%2064%2064c11.2%200%2021.7-2.9%2030.8-7.9L48.4%2055.3v36.6h-6.8V41.8h6.8l50.5%2075.8C116.4%20106.2%20128%2086.5%20128%2064c0-35.3-28.7-64-64-64zm22.1%2084.6-7.5-11.3V41.8h7.5v42.8z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/nextjs) [![React](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.6073%2011.9852C13.6073%2011.1024%2012.8877%2010.3868%2012%2010.3868C11.1123%2010.3868%2010.3927%2011.1024%2010.3927%2011.9852C10.3927%2012.868%2011.1123%2013.5836%2012%2013.5836C12.8877%2013.5836%2013.6073%2012.868%2013.6073%2011.9852Z'%20fill='%2353C1DE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.2202%209.01766C17.5597%207.64602%2017.9863%205.10245%2016.4822%204.2401C14.9852%203.38151%2013.0371%205.02672%2012.0084%206.01427C10.9827%205.03657%208.97981%203.39838%207.47698%204.26347C5.9805%205.12494%206.44199%207.62634%206.78894%209.00657C5.39299%209.40087%203%2010.2501%203%2011.9852C3%2013.7153%205.3905%2014.6393%206.77819%2015.0332C6.42995%2016.421%205.99158%2018.8867%207.48996%2019.7462C8.99836%2020.6112%2010.995%2019.012%2012.0332%2018.0137C13.0685%2019.007%2014.998%2020.6167%2016.4953%2019.7547C17.9974%2018.89%2017.6061%2016.3805%2017.2592%2014.9923C18.6044%2014.5975%2021%2013.6937%2021%2011.9852C21%2010.2668%2018.5942%209.41063%2017.2202%209.01766ZM17.0497%2014.2566C16.8219%2013.5394%2016.5144%2012.7768%2016.1383%2011.989C16.4973%2011.2198%2016.7928%2010.467%2017.0143%209.75439C18.0215%2010.0448%2020.2311%2010.7085%2020.2311%2011.9852C20.2311%2013.2738%2018.1108%2013.9438%2017.0497%2014.2566ZM16.11%2019.0929C14.9928%2019.736%2013.3333%2018.1967%2012.5687%2017.4652C13.0759%2016.9135%2013.5828%2016.2721%2014.0775%2015.56C14.9477%2015.4832%2015.7698%2015.3576%2016.5154%2015.1863C16.7596%2016.1682%2017.2321%2018.4469%2016.11%2019.0929ZM7.87417%2019.0837C6.75686%2018.4431%207.26755%2016.2428%207.52374%2015.2205C8.26101%2015.3827%209.07714%2015.4994%209.94943%2015.5697C10.4474%2016.2666%2010.9689%2016.9071%2011.4945%2017.4681C10.8452%2018.0928%208.99671%2019.7274%207.87417%2019.0837ZM3.76889%2011.9852C3.76889%2010.6917%205.96524%2010.0328%206.99542%209.74314C7.22071%2010.4717%207.51617%2011.2335%207.87274%2012.0038C7.51155%2012.7856%207.21186%2013.5595%206.98451%2014.2966C6.00222%2014.017%203.76889%2013.2795%203.76889%2011.9852ZM7.86222%204.92526C8.9841%204.27949%2010.7248%205.8522%2011.4695%206.56008C10.9466%207.11849%2010.4299%207.75421%209.93621%208.44705C9.08965%208.52508%208.27925%208.65041%207.53426%208.81827C7.25475%207.70505%206.74155%205.57033%207.86222%204.92526ZM14.6276%209.27821C15.2019%209.3503%2015.7521%209.44615%2016.2688%209.56348C16.1137%2010.0579%2015.9204%2010.5749%2015.6927%2011.1048C15.3626%2010.482%2015.0083%209.87176%2014.6276%209.27821ZM12.0086%207.10653C12.3633%207.48859%2012.7185%207.91526%2013.0679%208.37813C12.3591%208.34483%2011.6492%208.34467%2010.9404%208.37766C11.2901%207.91907%2011.6484%207.49303%2012.0086%207.10653ZM8.3139%2011.1043C8.08997%2010.5761%207.89839%2010.0568%207.74193%209.55539C8.25551%209.44108%208.80318%209.34768%209.3738%209.27678C8.99197%209.86902%208.63826%2010.4791%208.3139%2011.1043ZM9.39021%2014.7481C8.80071%2014.6827%208.24476%2014.5941%207.73134%2014.4829C7.89026%2013.9726%208.08607%2013.4422%208.31478%2012.9027C8.64362%2013.5343%209.00269%2014.1503%209.39021%2014.7481ZM12.0299%2016.9178C11.6654%2016.5267%2011.3019%2016.0942%2010.9469%2015.629C11.6597%2015.6568%2012.3739%2015.6569%2013.0866%2015.6252C12.7361%2016.099%2012.3821%2016.5321%2012.0299%2016.9178ZM15.7%2012.8752C15.9406%2013.4205%2016.1434%2013.9481%2016.3045%2014.4498C15.7826%2014.5682%2015.2191%2014.6636%2014.6254%2014.7344C15.009%2014.1297%2015.3689%2013.5099%2015.7%2012.8752ZM13.6484%2014.8271C12.5581%2014.9046%2011.4609%2014.9038%2010.3703%2014.8335C9.75053%2013.9332%209.19887%2012.9864%208.72265%2012.0035C9.19653%2011.0227%209.74422%2010.0778%2010.361%209.17895C11.4525%209.0969%2012.5507%209.09671%2013.6421%209.17943C14.2536%2010.0782%2014.8005%2011.0207%2015.2854%2011.9927C14.8062%2012.9731%2014.2557%2013.9199%2013.6484%2014.8271ZM16.0982%204.90252C17.2204%205.54618%2016.7209%207.83216%2016.4757%208.82619C15.729%208.65484%2014.918%208.5273%2014.069%208.44808C13.5743%207.74772%2013.0619%207.11088%2012.5474%206.55968C13.3017%205.83656%2014.9869%204.26516%2016.0982%204.90252Z'%20fill='%2353C1DE'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/react) [![Vue](data:image/svg+xml,%3csvg%20width='25'%20height='22'%20viewBox='0%200%2025%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%200.333008L12.4444%2021.6663L24.8889%200.333008H20L12.4444%2013.2219L4.88889%200.333008H0Z'%20fill='%23d1d5db'/%3e%3cpath%20d='M4.88867%200.333008L12.4442%2013.2219L19.9998%200.333008H15.5553L12.5022%205.67756L9.33312%200.333008H4.88867Z'%20fill='%239ca3af'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/vue) [![Angular](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20fill='%23C4473A'%20d='M52.864%2064h23.28L63.769%2038.123zM63.81%201.026%204.553%2021.88l9.363%2077.637%2049.957%2027.457%2050.214-27.828%209.36-77.635L63.81%201.026zM48.044%2075l-7.265%2018.176-13.581.056%2036.608-81.079-.07-.153h-.064l.001-.133.063.133h.141l.123-.274V12h-.124l-.069.153%2038.189%2081.417-13.074-.287-8.042-18.58-17.173.082'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/angular) [![Svelte](data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20128%20128'%3e%3cpath%20d='M110.846%2018.026C99.182%201.33%2076.145-3.618%2059.489%206.995L30.236%2025.639a33.56%2033.56%200%200%200-15.161%2022.479%2035.348%2035.348%200%200%200%203.485%2022.691%2033.647%2033.647%200%200%200-5.02%2012.543%2035.767%2035.767%200%200%200%206.109%2027.047c11.668%2016.695%2034.704%2021.641%2051.358%2011.029l29.252-18.644a33.555%2033.555%200%200%200%2015.162-22.479%2035.364%2035.364%200%200%200-3.482-22.69%2033.671%2033.671%200%200%200%205.017-12.543%2035.75%2035.75%200%200%200-6.109-27.046'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M56.632%20111.968a23.235%2023.235%200%200%201-24.94-9.243%2021.5%2021.5%200%200%201-3.675-16.266c.17-.925.404-1.837.699-2.731l.551-1.68%201.499%201.1a37.687%2037.687%200%200%200%2011.443%205.718l1.086.329-.1%201.085a6.56%206.56%200%200%200%201.181%204.35%206.995%206.995%200%200%200%207.508%202.788%206.442%206.442%200%200%200%201.797-.791l29.254-18.641a6.089%206.089%200%200%200%202.748-4.072%206.493%206.493%200%200%200-1.107-4.903%207%207%200%200%200-7.512-2.789%206.457%206.457%200%200%200-1.795.79l-11.162%207.116a21.325%2021.325%200%200%201-5.941%202.607%2023.235%2023.235%200%200%201-24.939-9.244%2021.497%2021.497%200%200%201-3.675-16.265A20.174%2020.174%200%200%201%2038.67%2037.71l29.251-18.643a21.316%2021.316%200%200%201%205.944-2.613%2023.239%2023.239%200%200%201%2024.94%209.245%2021.504%2021.504%200%200%201%203.675%2016.265%2020.763%2020.763%200%200%201-.699%202.732l-.551%201.68-1.498-1.099a37.732%2037.732%200%200%200-11.444-5.72l-1.088-.33.102-1.085a6.588%206.588%200%200%200-1.18-4.35%207.003%207.003%200%200%200-7.51-2.787%206.498%206.498%200%200%200-1.797.79L47.562%2050.439a6.079%206.079%200%200%200-2.747%204.071%206.489%206.489%200%200%200%201.106%204.902%207.003%207.003%200%200%200%207.512%202.789%206.551%206.551%200%200%200%201.797-.789l11.16-7.114a21.287%2021.287%200%200%201%205.94-2.611%2023.236%2023.236%200%200%201%2024.94%209.244%2021.508%2021.508%200%200%201%203.676%2016.265%2020.194%2020.194%200%200%201-9.12%2013.52l-29.25%2018.641a21.266%2021.266%200%200%201-5.944%202.611'%20style='fill:%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/sveltekit) [![TanStack Start](https://appwrite.io/_app/immutable/assets/tanstack.BR6LHet_.svg)](https://appwrite.io/docs/quick-starts/tanstack-start) [![React Native](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M16.4822%204.2401C17.9863%205.10245%2017.5597%207.64602%2017.2202%209.01766C17.6278%209.13422%2018.1261%209.29153%2018.6255%209.5H15.9759C15.5458%209.41118%2015.0946%209.33683%2014.6276%209.27821C14.7242%209.42879%2014.8191%209.58044%2014.9123%209.73311C14.6785%209.86086%2014.4777%2010.0356%2014.3244%2010.2436C14.1066%209.88288%2013.8792%209.52787%2013.6421%209.17943C12.5507%209.09671%2011.4525%209.0969%2010.361%209.17895C9.74422%2010.0778%209.19653%2011.0227%208.72265%2012.0035C9.19887%2012.9864%209.75053%2013.9332%2010.3703%2014.8335C11.4609%2014.9038%2012.5581%2014.9046%2013.6484%2014.8271C13.7678%2014.6487%2013.8851%2014.4687%2014%2014.2873V15.6708C13.5299%2016.3388%2013.0495%2016.9423%2012.5687%2017.4652C12.9101%2017.7918%2013.4298%2018.2794%2014%2018.6619V19.5311C13.2359%2019.1118%2012.5312%2018.4914%2012.0332%2018.0137C10.995%2019.012%208.99836%2020.6112%207.48996%2019.7462C5.99158%2018.8867%206.42995%2016.421%206.77819%2015.0332C5.3905%2014.6393%203%2013.7153%203%2011.9852C3%2010.2501%205.39299%209.40087%206.78894%209.00657C6.44199%207.62634%205.9805%205.12494%207.47698%204.26347C8.97981%203.39838%2010.9827%205.03657%2012.0084%206.01427C13.0371%205.02672%2014.9852%203.38151%2016.4822%204.2401ZM7.52374%2015.2205C7.26755%2016.2428%206.75686%2018.4431%207.87417%2019.0837C8.99671%2019.7274%2010.8452%2018.0928%2011.4945%2017.4681C10.9689%2016.9071%2010.4474%2016.2666%209.94943%2015.5697C9.07714%2015.4994%208.26101%2015.3827%207.52374%2015.2205ZM6.99542%209.74314C5.96524%2010.0328%203.76889%2010.6917%203.76889%2011.9852C3.76889%2013.2795%206.00222%2014.017%206.98451%2014.2966C7.21186%2013.5595%207.51155%2012.7856%207.87274%2012.0038C7.51617%2011.2335%207.22071%2010.4717%206.99542%209.74314ZM11.4695%206.56008C10.7248%205.8522%208.9841%204.27949%207.86222%204.92526C6.74155%205.57033%207.25475%207.70505%207.53426%208.81827C8.27925%208.65041%209.08965%208.52508%209.93621%208.44705C10.4299%207.75421%2010.9466%207.11849%2011.4695%206.56008ZM13.0679%208.37813C12.7185%207.91526%2012.3633%207.48859%2012.0086%207.10653C11.6484%207.49303%2011.2901%207.91907%2010.9404%208.37766C11.6492%208.34467%2012.3591%208.34483%2013.0679%208.37813ZM7.74193%209.55539C7.89839%2010.0568%208.08997%2010.5761%208.3139%2011.1043C8.63826%2010.4791%208.99197%209.86902%209.3738%209.27678C8.80318%209.34768%208.25551%209.44108%207.74193%209.55539ZM7.73134%2014.4829C8.24476%2014.5941%208.80071%2014.6827%209.39021%2014.7481C9.00269%2014.1503%208.64362%2013.5343%208.31478%2012.9027C8.08607%2013.4422%207.89026%2013.9726%207.73134%2014.4829ZM10.9469%2015.629C11.3019%2016.0942%2011.6654%2016.5267%2012.0299%2016.9178C12.3821%2016.5321%2012.7361%2016.099%2013.0866%2015.6252C12.3739%2015.6569%2011.6597%2015.6568%2010.9469%2015.629ZM16.4757%208.82619C16.7209%207.83216%2017.2204%205.54618%2016.0982%204.90252C14.9869%204.26516%2013.3017%205.83656%2012.5474%206.55968C13.0619%207.11088%2013.5743%207.74772%2014.069%208.44808C14.918%208.5273%2015.729%208.65484%2016.4757%208.82619ZM12%2010.3868C12.8877%2010.3868%2013.6073%2011.1024%2013.6073%2011.9852C13.6073%2012.868%2012.8877%2013.5836%2012%2013.5836C11.1123%2013.5836%2010.3927%2012.868%2010.3927%2011.9852C10.3927%2011.1024%2011.1123%2010.3868%2012%2010.3868Z'%20fill='%23d1d5db'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.9%2010C15.1268%2010%2014.5%2010.6156%2014.5%2011.375V19.625C14.5%2020.3844%2015.1268%2021%2015.9%2021H20.1C20.8732%2021%2021.5%2020.3844%2021.5%2019.625V11.375C21.5%2010.6156%2020.8732%2010%2020.1%2010H15.9ZM18%2019.625C18.3866%2019.625%2018.7%2019.3172%2018.7%2018.9375C18.7%2018.5578%2018.3866%2018.25%2018%2018.25C17.6134%2018.25%2017.3%2018.5578%2017.3%2018.9375C17.3%2019.3172%2017.6134%2019.625%2018%2019.625Z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/react-native) [![Flutter](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.647%203L5%2011.7147L7.67631%2014.4119L18.9996%203H13.647Z'%20fill='%2347C5FB'/%3e%3cpath%20d='M13.5868%2011.0365L8.95703%2015.7025L11.6432%2018.4501L14.3146%2015.7578L18.9998%2011.0365H13.5868Z'%20fill='%2347C5FB'/%3e%3cpath%20d='M11.6427%2018.4501L13.6763%2020.4995H18.9993L14.3141%2015.7578L11.6427%2018.4501Z'%20fill='%2300569E'/%3e%3cpath%20d='M8.92627%2015.7324L11.6026%2013.0351L14.314%2015.7578L11.6426%2018.4501L8.92627%2015.7324Z'%20fill='%2300B5F8'/%3e%3cpath%20d='M11.6427%2018.4501L13.8671%2017.7061L14.0881%2015.9855L11.6427%2018.4501Z'%20fill='url(%23paint0_linear_2689_27555)'%20fill-opacity='0.8'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27555'%20x1='11.688'%20y1='16.793'%20x2='13.4506'%20y2='17.4232'%20gradientUnits='userSpaceOnUse'%3e%3cstop/%3e%3cstop%20offset='1'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/flutter) [![iOS](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M19.6437%2017.5861C19.3385%2018.2848%2018.9772%2018.928%2018.5586%2019.5193C17.9881%2020.3255%2017.5209%2020.8835%2017.1609%2021.1934C16.6027%2021.702%2016.0048%2021.9625%2015.3644%2021.9773C14.9047%2021.9773%2014.3504%2021.8477%2013.705%2021.5847C13.0576%2021.323%2012.4626%2021.1934%2011.9186%2021.1934C11.348%2021.1934%2010.7361%2021.323%2010.0815%2021.5847C9.42602%2021.8477%208.89793%2021.9847%208.49417%2021.9983C7.88012%2022.0242%207.26806%2021.7563%206.65713%2021.1934C6.2672%2020.8563%205.77947%2020.2786%205.1952%2019.4601C4.56832%2018.586%204.05294%2017.5725%203.64918%2016.417C3.21677%2015.1689%203%2013.9603%203%2012.7902C3%2011.4498%203.29226%2010.2938%203.87766%209.32509C4.33773%208.54696%204.94978%207.93316%205.71581%207.48255C6.48185%207.03195%207.30955%206.80233%208.20091%206.78763C8.68863%206.78763%209.32822%206.93714%2010.123%207.23096C10.9156%207.52576%2011.4245%207.67526%2011.6476%207.67526C11.8144%207.67526%2012.3798%207.50045%2013.3382%207.15195C14.2445%206.82874%2015.0094%206.69492%2015.636%206.74764C17.334%206.88343%2018.6097%207.54675%2019.4581%208.74177C17.9395%209.6536%2017.1883%2010.9307%2017.2032%2012.5691C17.2169%2013.8452%2017.6841%2014.9071%2018.6022%2015.7503C19.0183%2016.1417%2019.483%2016.4441%2020%2016.6589C19.8879%2016.9812%2019.7695%2017.2898%2019.6437%2017.5861ZM15.7494%202.40011C15.7494%203.40034%2015.3806%204.33425%2014.6456%205.19867C13.7586%206.22629%2012.6857%206.8201%2011.5223%206.7264C11.5075%206.60641%2011.4989%206.48011%2011.4989%206.3474C11.4989%205.38718%2011.9207%204.35956%2012.6698%203.51934C13.0438%203.09392%2013.5194%202.74019%2014.0962%202.45801C14.6718%202.18005%2015.2162%202.02632%2015.7282%202C15.7431%202.13371%2015.7494%202.26744%2015.7494%202.4001V2.40011Z'%20fill='%23d1d5db'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/apple) [![Android](data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M23.1672%2012.7371L25.6008%208.52222C25.6437%208.45007%2025.6691%208.36232%2025.6691%208.26872C25.6691%207.98889%2025.4429%207.76269%2025.1631%207.76269C24.9768%207.76269%2024.814%207.86312%2024.7263%208.01327L24.7253%208.01522L22.2615%2012.2828C20.4216%2011.4375%2018.2698%2010.9441%2016.0029%2010.9441C13.7361%2010.9441%2011.5842%2011.4375%209.64886%2012.3218L9.74441%2012.2828L7.28059%208.01424C7.19186%207.86214%207.02806%207.76074%206.84184%207.76074C6.56201%207.76074%206.33581%207.98694%206.33581%208.26677C6.33581%208.36037%206.36116%208.44714%206.40504%208.52222L6.40406%208.52027L8.83766%2012.7352C4.65881%2015.043%201.78256%2019.2648%201.38574%2024.1856L1.38281%2024.2363H30.624C30.2243%2019.2648%2027.348%2015.043%2023.2433%2012.7722L23.1692%2012.7352L23.1672%2012.7371ZM9.27154%2020.0721C8.59879%2020.0721%208.05376%2019.527%208.05376%2018.8543C8.05376%2018.1815%208.59879%2017.6365%209.27154%2017.6365C9.94429%2017.6365%2010.4893%2018.1815%2010.4893%2018.8543C10.4883%2019.5261%209.94429%2020.0711%209.27154%2020.0721ZM22.7304%2020.0721C22.0577%2020.0721%2021.5127%2019.527%2021.5127%2018.8543C21.5127%2018.1815%2022.0577%2017.6365%2022.7304%2017.6365C23.4032%2017.6365%2023.9482%2018.1815%2023.9482%2018.8543C23.9472%2019.5261%2023.4032%2020.0711%2022.7304%2020.0721Z'%20fill='%233DDC84'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/android) [![Kotlin](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3%2021.0001L12.03%2011.9701L21%2021.0001H3Z'%20fill='url(%23paint0_linear_2689_27616)'/%3e%3cpath%20d='M3%203H12.03L3%2012.5192V3Z'%20fill='url(%23paint1_linear_2689_27616)'/%3e%3cpath%20d='M12.03%203L3%2012.51V21L12.03%2011.97L21%203H12.03Z'%20fill='url(%23paint2_linear_2689_27616)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27616'%20x1='7.7877'%20y1='25.2043'%20x2='16.2921'%20y2='16.7002'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.097'%20stop-color='%230095D5'/%3e%3cstop%20offset='0.301'%20stop-color='%23238AD9'/%3e%3cstop%20offset='0.621'%20stop-color='%23557BDE'/%3e%3cstop%20offset='0.864'%20stop-color='%237472E2'/%3e%3cstop%20offset='1'%20stop-color='%23806EE3'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_2689_27616'%20x1='4.2627'%20y1='6.6177'%20x2='9.20189'%20y2='1.6785'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.118'%20stop-color='%230095D5'/%3e%3cstop%20offset='0.418'%20stop-color='%233C83DC'/%3e%3cstop%20offset='0.696'%20stop-color='%236D74E1'/%3e%3cstop%20offset='0.833'%20stop-color='%23806EE3'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_2689_27616'%20x1='-0.0306008'%20y1='19.5492'%20x2='16.7193'%20y2='2.79928'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.107'%20stop-color='%23C757BC'/%3e%3cstop%20offset='0.214'%20stop-color='%23D0609A'/%3e%3cstop%20offset='0.425'%20stop-color='%23E1725C'/%3e%3cstop%20offset='0.605'%20stop-color='%23EE7E2F'/%3e%3cstop%20offset='0.743'%20stop-color='%23F58613'/%3e%3cstop%20offset='0.823'%20stop-color='%23F88909'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/kotlin) [![Swift](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M16.5872%2018.8938C14.4653%2020.1088%2011.5479%2020.2337%208.61265%2018.9866C6.23606%2017.9843%204.26411%2016.2298%203%2014.2251C3.60678%2014.7263%204.31466%2015.1274%205.07311%2015.478C8.10435%2016.8864%2011.135%2016.79%2013.2677%2015.4816C10.2338%2013.1759%207.65188%2010.1649%205.73053%207.7091C5.32585%207.30808%205.02246%206.80683%204.71908%206.35574C7.04502%208.46089%2010.7364%2011.1172%2012.0508%2011.8694C9.27012%208.96205%206.79228%205.35341%206.89321%205.45346C11.2924%209.86433%2015.3883%2012.3706%2015.3883%2012.3706C15.5238%2012.4463%2015.6284%2012.5094%2015.7125%2012.5657C15.8012%2012.3422%2015.8789%2012.1101%2015.9444%2011.8694C16.6523%209.31314%2015.8434%206.40576%2014.0735%204C18.169%206.45601%2020.5963%2011.0672%2019.5847%2014.9269C19.5584%2015.031%2019.5297%2015.1337%2019.4988%2015.2347C21.5211%2017.741%2021.0005%2020.4406%2020.7477%2019.9394C19.6507%2017.8113%2017.6197%2018.462%2016.5872%2018.8938Z'%20fill='url(%23paint0_linear_2689_27628)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27628'%20x1='12.0066'%20y1='4'%20x2='12.0066'%20y2='20.0008'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23F88A36'/%3e%3cstop%20offset='1'%20stop-color='%23FD2020'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/swift) [![Node.js](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.2666%203.19203C11.8025%202.93541%2011.1975%202.93657%2010.733%203.19203C8.40657%204.45431%206.08015%205.71698%203.75333%206.97868C3.30057%207.21287%202.99519%207.69092%203.00006%208.18711V15.8139C2.99679%2016.3198%203.31791%2016.8025%203.78236%2017.0334C4.4507%2017.383%205.10002%2017.7681%205.78044%2018.0944C6.56641%2018.4741%207.54974%2018.5581%208.34532%2018.1621C8.99111%2017.8339%209.27794%2017.104%209.27714%2016.4331C9.28234%2013.9161%209.27794%2011.399%209.27914%208.88191C9.29449%208.77004%209.20908%208.65048%209.08498%208.65317C8.78768%208.64856%208.48997%208.65048%208.19266%208.6524C8.0803%208.64195%207.97068%208.73369%207.97915%208.84473C7.97515%2011.3456%207.97995%2013.8472%207.97675%2016.3484C7.98322%2016.6944%207.7455%2017.0269%207.40636%2017.1438C6.62309%2017.4137%204.38745%2015.9865%204.38745%2015.9865C4.3054%2015.9491%204.2533%2015.8617%204.26134%2015.7748C4.26134%2013.2585%204.26175%2010.7421%204.26134%208.22622C4.25007%208.1248%204.31365%208.03344%204.4084%207.99203C6.72714%206.73719%209.04468%205.4792%2011.3634%204.22359C11.4439%204.17074%2011.5562%204.1709%2011.6366%204.22398C13.9553%205.4792%2016.2733%206.73603%2018.5924%207.99094C18.6875%208.03229%2018.7483%208.12518%2018.7387%208.22622C18.7383%2010.7421%2018.7395%2013.2585%2018.7379%2015.7744C18.7447%2015.8634%2018.698%2015.9497%2018.6134%2015.9888C16.3163%2017.2368%2013.993%2018.4446%2011.7167%2019.7289C11.6174%2019.7849%2011.5049%2019.8484%2011.3937%2019.7867C10.795%2019.4611%2010.2037%2019.1229%209.60707%2018.7942C9.54222%2018.7544%209.45962%2018.7374%209.39196%2018.7819C9.12442%2018.9205%208.87287%2019.0327%208.5657%2019.1523C8.13424%2019.3202%208.2032%2019.3889%208.59225%2019.6117C9.29001%2020%209.98891%2020.3867%2010.6866%2020.7753C11.1459%2021.0571%2011.7631%2021.0772%2012.2372%2020.8167C14.564%2019.556%2016.89%2018.2938%2019.2173%2017.0331C19.6805%2016.8009%2020.0032%2016.3201%2020%2015.8139V8.18711C20.0044%207.70098%2019.7107%207.23146%2019.2716%206.99381C16.9371%205.72538%2014.6015%204.4597%2012.2666%203.19203Z'%20fill='%238CC84B'/%3e%3cpath%20d='M15.7774%208.9183C14.8642%208.43794%2013.7777%208.41237%2012.7629%208.47513C12.0298%208.54635%2011.2587%208.74527%2010.7245%209.26198C10.1767%209.78144%2010.0574%2010.6202%2010.3176%2011.2983C10.5041%2011.7775%2010.9735%2012.0891%2011.4589%2012.2539C12.0842%2012.4709%2012.7409%2012.538%2013.3979%2012.6052C13.9971%2012.6664%2014.5964%2012.7276%2015.1723%2012.9027C15.4076%2012.9794%2015.6816%2013.0966%2015.7536%2013.3482C15.8201%2013.6463%2015.7472%2013.9927%2015.5011%2014.1998C14.7193%2014.8081%2012.5448%2014.7149%2011.7724%2014.2361C11.4601%2014.0321%2011.3255%2013.671%2011.2708%2013.327C11.2648%2013.2197%2011.177%2013.1214%2011.0585%2013.1295C10.762%2013.126%2010.4655%2013.1268%2010.169%2013.1291C10.0655%2013.1206%209.95796%2013.193%209.95229%2013.2968C9.89137%2014.8728%2011.3636%2015.5599%2012.7448%2015.7112C13.534%2015.7851%2014.3405%2015.7809%2015.1176%2015.6144C15.7017%2015.4836%2016.2874%2015.2429%2016.6895%2014.8005C17.1854%2014.2628%2017.2829%2013.4624%2017.0605%2012.7927C16.8905%2012.2931%2016.4046%2011.9726%2015.9079%2011.8077C15.2325%2011.58%2014.4321%2011.4576%2013.8204%2011.4003C12.9312%2011.317%2011.8746%2011.351%2011.6229%2010.7766C11.5226%2010.4758%2011.608%2010.1023%2011.8891%209.91728C12.633%209.42117%2014.1469%209.48705%2014.9173%209.85766C15.2711%2010.0318%2015.4761%2010.3895%2015.5607%2010.7506C15.5763%2010.8567%2015.6489%2010.9674%2015.7738%2010.9627C16.0683%2010.9685%2016.3628%2010.9643%2016.6572%2010.9647C16.7584%2010.9717%2016.8691%2010.9155%2016.8889%2010.8137C16.8764%2010.059%2016.4844%209.2864%2015.7774%208.9183Z'%20fill='%238CC84B'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/node) [![Python](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.082%203C8.66956%203%207.52459%204.10863%207.52459%205.47619V7.19047H11.9508V7.66666H5.55737C4.14498%207.66666%203%208.77529%203%2010.1429L3%2013.8571C3%2015.2247%204.14498%2016.3333%205.55737%2016.3333H7.03278V14.2381C7.03278%2012.8705%208.17776%2011.7619%209.59016%2011.7619H14.3115C15.5066%2011.7619%2016.4754%2010.8238%2016.4754%209.66666V5.47619C16.4754%204.10863%2015.3304%203%2013.918%203H10.082ZM9.4918%206.04762C9.98071%206.04762%2010.377%205.66386%2010.377%205.19047C10.377%204.71709%209.98071%204.33333%209.4918%204.33333C9.00289%204.33333%208.60655%204.71709%208.60655%205.19047C8.60655%205.66386%209.00289%206.04762%209.4918%206.04762Z'%20fill='url(%23paint0_linear_2689_27561)'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M13.9176%2020.9999C15.33%2020.9999%2016.475%2019.8913%2016.475%2018.5237V16.8094H12.0488L12.0488%2016.3332L18.4422%2016.3332C19.8546%2016.3332%2020.9996%2015.2246%2020.9996%2013.857V10.1428C20.9996%208.77519%2019.8546%207.66657%2018.4422%207.66657L16.9668%207.66656V9.7618C16.9668%2011.1294%2015.8218%2012.238%2014.4094%2012.238L9.6881%2012.238C8.493%2012.238%207.52417%2013.1761%207.52417%2014.3332L7.52417%2018.5237C7.52417%2019.8913%208.66915%2020.9999%2010.0815%2020.9999H13.9176ZM14.5078%2017.9523C14.0189%2017.9523%2013.6225%2018.336%2013.6225%2018.8094C13.6225%2019.2828%2014.0189%2019.6666%2014.5078%2019.6666C14.9967%2019.6666%2015.393%2019.2828%2015.393%2018.8094C15.393%2018.336%2014.9967%2017.9523%2014.5078%2017.9523Z'%20fill='url(%23paint1_linear_2689_27561)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_2689_27561'%20x1='9.7377'%20y1='3'%20x2='9.7377'%20y2='16.3333'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23327EBD'/%3e%3cstop%20offset='1'%20stop-color='%231565A7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_2689_27561'%20x1='14.2619'%20y1='7.66656'%20x2='14.2619'%20y2='20.9999'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FFDA4B'/%3e%3cstop%20offset='1'%20stop-color='%23F9C600'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/python) [![PHP](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.5811%207H12.1084L11.6768%209.31387H13.0491C13.8017%209.3301%2014.3624%209.4997%2014.7314%209.82268C15.1077%2010.1457%2015.2184%2010.7596%2015.0634%2011.6641L14.3219%2015.6982H12.7724L13.4808%2011.8458C13.5545%2011.4419%2013.5323%2011.1553%2013.4144%2010.9857C13.2964%2010.8161%2013.0418%2010.7313%2012.6507%2010.7313L11.4222%2010.7191L10.5147%2015.6982H8.98735L10.5811%207Z'%20fill='%238892BF'%20/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.58265%209.31391H6.54874C7.41932%209.32191%208.05016%209.59666%208.44129%2010.1377C8.83241%2010.6787%208.96146%2011.4177%208.82865%2012.3546C8.77707%2012.7828%208.66264%2013.2027%208.48556%2013.6146C8.31578%2014.0264%208.07982%2014.3979%207.77724%2014.7291C7.40825%2015.149%207.01358%2015.4155%206.59301%2015.5286C6.17245%2015.6418%205.73706%2015.6982%205.28705%2015.6982H3.95895L3.53838%2018H2L3.58265%209.31391ZM4.2135%2014.3293L4.87534%2010.7071H5.0989C5.18013%2010.7071%205.26491%2010.703%205.35345%2010.695C5.94379%2010.687%206.43431%2010.7475%206.82543%2010.8767C7.22386%2011.0058%207.35667%2011.4945%207.22386%2012.3425C7.06161%2013.3521%206.7442%2013.9416%206.27206%2014.1112C5.79991%2014.2729%205.20958%2014.3494%204.50126%2014.3414H4.34631C4.30204%2014.3414%204.25777%2014.3373%204.2135%2014.3293Z'%20fill='%238892BF'%20/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.6696%209.31391H16.7035L15.1208%2018H16.6592L17.0798%2015.6982H18.4079C18.8579%2015.6982%2019.2933%2015.6418%2019.7139%2015.5286C20.1344%2015.4155%2020.5291%2015.149%2020.8981%2014.7291C21.2007%2014.3979%2021.4366%2014.0264%2021.6064%2013.6146C21.7835%2013.2027%2021.8979%2012.7828%2021.9495%2012.3546C22.0823%2011.4177%2021.9532%2010.6787%2021.5621%2010.1377C21.171%209.59666%2020.5402%209.32191%2019.6696%209.31391ZM17.9962%2010.7071L17.3343%2014.3293C17.3786%2014.3373%2017.4229%2014.3414%2017.4672%2014.3414H17.6221C18.3304%2014.3494%2018.9207%2014.2729%2019.3929%2014.1112C19.865%2013.9416%2020.1824%2013.3521%2020.3447%2012.3425C20.4775%2011.4945%2020.3447%2011.0058%2019.9463%2010.8767C19.5551%2010.7475%2019.0646%2010.687%2018.4743%2010.695C18.3858%2010.703%2018.301%2010.7071%2018.2197%2010.7071H17.9962Z'%20fill='%238892BF'%20/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/php) [![Ruby](https://appwrite.io/_app/immutable/assets/ruby.BSuMfOp5.svg)](https://appwrite.io/docs/quick-starts/ruby) [![.NET](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20style='filter:brightness(120%25)'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.5367%2013.7707C2.44246%2013.7689%202.35244%2013.789%202.27079%2013.823L2.27077%2013.823L2.26809%2013.8241C2.18619%2013.8601%202.11066%2013.9117%202.04778%2013.9776C1.98442%2014.0411%201.93372%2014.1166%201.90025%2014.2008L1.90024%2014.2008L1.89982%2014.2019C1.86787%2014.2841%201.85032%2014.3715%201.85012%2014.4602M2.5367%2013.7707C2.62683%2013.7709%202.71694%2013.7882%202.80221%2013.8257C2.88344%2013.8613%202.95839%2013.9123%203.02096%2013.9775C3.08783%2014.041%203.13744%2014.1165%203.17282%2014.198L3.17349%2014.1995L3.17348%2014.1995C3.20882%2014.2835%203.22627%2014.3729%203.22627%2014.4633C3.22627%2014.5537%203.20882%2014.6431%203.17348%2014.7271C3.13908%2014.8088%203.08878%2014.8848%203.02167%2014.9483C2.95873%2015.0122%202.88363%2015.063%202.80079%2015.0976L2.74298%2014.9591L2.80079%2015.0976C2.7175%2015.1323%202.62807%2015.1501%202.5378%2015.1499M2.5367%2013.7707C2.53724%2013.7707%202.53778%2013.7707%202.53832%2013.7707L2.53515%2013.9207V13.7707C2.53567%2013.7707%202.53619%2013.7707%202.5367%2013.7707ZM2.5378%2015.1499C2.44662%2015.1515%202.35607%2015.1342%202.27193%2015.099C2.1879%2015.0639%202.11207%2015.0118%202.0493%2014.9459C1.98586%2014.8824%201.93594%2014.8076%201.90138%2014.7256C1.86625%2014.6421%201.84837%2014.5522%201.85012%2014.4602M2.5378%2015.1499C2.53715%2015.1499%202.5365%2015.1499%202.53585%2015.1499L2.53667%2014.9999L2.53973%2015.1499C2.53908%2015.1499%202.53844%2015.1499%202.5378%2015.1499ZM1.85012%2014.4602C1.85013%2014.4597%201.85014%2014.4591%201.85015%2014.4586L2.00011%2014.4618H1.85011C1.85011%2014.4613%201.85011%2014.4607%201.85012%2014.4602ZM5.46673%2014.9062V9.91575C5.46994%209.80356%205.47033%209.69143%205.46804%209.57937L8.96337%2014.9876L9.0077%2015.0562H9.08935H10.0849H10.2349V14.9062V8V7.85H10.0849H9.27631H9.12631V8V12.8549C9.12306%2013.0013%209.12426%2013.1479%209.12979%2013.2945L5.68624%207.91909L5.64198%207.85H5.55993H4.5081H4.3581V8V14.9062V15.0562H4.5081H5.31673H5.46673V14.9062ZM15.7176%2014.1483L15.7185%2013.9974H15.5676H12.86V11.9046H15.2104H15.3604V11.7546V11.0261V10.8761H15.2104H12.86V8.88158H15.3928H15.5428V8.73158V8V7.85H15.3928H11.8816H11.7316V8V14.9062V15.0562H11.8816H15.563H15.7121L15.713%2014.9071L15.7176%2014.1483ZM16.1862%207.85H16.0362V8V8.73158V8.88158H16.1862H18.0274V14.9062V15.0562H18.1774H18.986H19.136V14.9062V8.88158H21H21.15V8.73158V8V7.85H21H16.1862Z'%20fill='%23512BD4'%20stroke='%23512BD4'%20stroke-width='0.3'%20/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/dotnet) [![Go](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M1.89654%2010.1159C1.84998%2010.1159%201.83834%2010.0926%201.86162%2010.0577L2.10606%209.74344C2.12934%209.70852%202.18754%209.68524%202.2341%209.68524H6.38966C6.43622%209.68524%206.44786%209.72016%206.42458%209.75508L6.2267%2010.0577C6.20342%2010.0926%206.14522%2010.1276%206.1103%2010.1276L1.89654%2010.1159Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M0.138846%2011.1874C0.0922852%2011.1874%200.0806449%2011.1641%200.103925%2011.1292L0.34837%2010.8149C0.371651%2010.78%200.429852%2010.7567%200.476413%2010.7567H5.78435C5.83092%2010.7567%205.8542%2010.7916%205.84256%2010.8265L5.74943%2011.1059C5.73779%2011.1525%205.69123%2011.1757%205.64467%2011.1757L0.138846%2011.1874Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.95586%2012.2578C2.9093%2012.2578%202.89766%2012.2229%202.92094%2012.188L3.08391%2011.897C3.10719%2011.8621%203.15375%2011.8271%203.20031%2011.8271H5.52835C5.57491%2011.8271%205.59819%2011.8621%205.59819%2011.9086L5.57491%2012.188C5.57491%2012.2346%205.52835%2012.2695%205.49343%2012.2695L2.95586%2012.2578Z'%20fill='%23C3C3C6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.0384%209.90696C14.305%2010.0932%2013.8045%2010.2329%2013.0828%2010.4191C12.9082%2010.4657%2012.8966%2010.4773%2012.7453%2010.3027C12.5706%2010.1048%2012.4426%209.9768%2012.1982%209.8604C11.4648%209.49955%2010.7548%209.60431%2010.0913%2010.035C9.29975%2010.5472%208.89234%2011.3038%208.90398%2012.2466C8.91562%2013.1779%209.55583%2013.9461%2010.4754%2014.0742C11.2669%2014.1789%2011.9304%2013.8996%2012.4542%2013.3059C12.559%2013.1779%2012.6521%2013.0382%2012.7685%2012.8752C12.3495%2012.8752%2011.8257%2012.8752%2010.522%2012.8752C10.2775%2012.8752%2010.2193%2012.7239%2010.3008%2012.526C10.4521%2012.1652%2010.7315%2011.5599%2010.8945%2011.2572C10.9294%2011.1874%2011.0109%2011.071%2011.1855%2011.071H15.4225C15.3992%2011.3853%2015.3992%2011.6996%2015.3527%2012.0138C15.2246%2012.8519%2014.9103%2013.6202%2014.3982%2014.2953C13.5601%2015.4011%2012.4659%2016.0879%2011.0807%2016.2742C9.93996%2016.4255%208.8807%2016.2043%207.94948%2015.5059C7.0881%2014.8541%206.59921%2013.9927%206.47117%2012.9218C6.31985%2011.653%206.69234%2010.5123%207.46059%209.51119C8.28705%208.42865%209.38123%207.74188%2010.7199%207.49743C11.814%207.29955%2012.8617%207.42759%2013.8045%208.06781C14.4214%208.47521%2014.8638%209.03394%2015.1548%209.70908C15.2246%209.81384%2015.1781%209.87204%2015.0384%209.90696Z'%20fill='%23C3C3C6'/%3e%3cpath%20d='M18.8913%2016.3441C17.8321%2016.3208%2016.8659%2016.0181%2016.0511%2015.3197C15.3643%2014.7261%2014.9337%2013.9695%2014.794%2013.0732C14.5844%2011.7578%2014.9453%2010.5938%2015.7368%209.55782C16.5866%208.44035%2017.6109%207.85834%2018.9961%207.6139C20.1834%207.40437%2021.3009%207.52078%2022.3136%208.20755C23.2331%208.83612%2023.8035%209.68586%2023.9548%2010.8033C24.1527%2012.3747%2023.6987%2013.6552%2022.6162%2014.7494C21.8479%2015.5293%2020.9051%2016.0181%2019.8225%2016.2393C19.5083%2016.2975%2019.194%2016.3091%2018.8913%2016.3441ZM21.6617%2011.6414C21.6501%2011.4901%2021.6501%2011.3737%2021.6268%2011.2573C21.4173%2010.1049%2020.358%209.45305%2019.2522%209.70914C18.1696%209.95358%2017.4712%2010.6404%2017.2151%2011.7345C17.0056%2012.6425%2017.4479%2013.5621%2018.286%2013.9345C18.9263%2014.2139%2019.5665%2014.179%2020.1834%2013.8647C21.103%2013.3874%2021.6035%2012.6425%2021.6617%2011.6414Z'%20fill='%23C3C3C6'/%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/go) [![Deno](https://appwrite.io/_app/immutable/assets/deno.AEOw6YnR.svg)](https://appwrite.io/docs/quick-starts/deno) [![Dart](data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6.66995%2017.3279L3.59227%2014.2494C3.22739%2013.8739%203%2013.3449%203%2012.8279C3%2012.5885%203.13485%2012.2143%203.23664%2011.9988L6.07768%206.07855L6.66995%2017.3279Z'%20fill='%2301579B'/%3e%3cpath%20d='M17.2066%206.67088L14.1289%203.59242C13.8605%203.32266%2013.3%203%2012.8267%203C12.4195%203%2012.0203%203.08199%2011.7612%203.2367L6.0791%206.07846L17.2066%206.67088Z'%20fill='%2340C4FF'/%3e%3cpath%20d='M10.3389%2020.9986H17.7978V17.8011L12.2334%2016.0251L7.14355%2017.8011L10.3389%2020.9986Z'%20fill='%2340C4FF'/%3e%3cpath%20d='M6.0791%2015.6709C6.0791%2016.6204%206.19808%2016.8544%206.67137%2017.3292L7.14465%2017.8026H17.7989L12.5901%2011.8824L6.0791%206.07983V15.6709Z'%20fill='%2329B6F6'/%3e%3cpath%20d='M15.5491%206.07855H6.07812L17.7979%2017.8013H20.9945V10.4595L17.2069%206.67097C16.6755%206.13674%2016.2022%206.07855%2015.5491%206.07855Z'%20fill='%2301579B'/%3e%3cpath%20opacity='0.2'%20d='M6.78938%2017.4469C6.31609%2016.9709%206.19711%2016.5027%206.19711%2015.671V6.19756L6.07812%206.07855V15.6696C6.07945%2016.5027%206.07945%2016.7328%206.78938%2017.4469L7.145%2017.8026L6.78938%2017.4469Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M20.8763%2010.3419V17.6836H17.6797L17.7987%2017.8013H20.9953V10.4609L20.8763%2010.3419Z'%20fill='%23263238'/%3e%3cpath%20opacity='0.2'%20d='M17.2066%206.67097C16.6196%206.08384%2016.1384%206.07855%2015.4311%206.07855H6.0791L6.19808%206.19756H15.4324C15.7841%206.19756%2016.6765%206.13806%2017.2066%206.67097Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M20.8771%2010.3418L17.2071%206.67088L14.1294%203.59242C13.8611%203.32266%2013.3005%203%2012.8273%203C12.4201%203%2012.0208%203.08199%2011.7617%203.2367L6.07963%206.07846L3.2386%2011.9987C3.1368%2012.2142%203.00195%2012.5885%203.00195%2012.8278C3.00195%2013.3448%203.22934%2013.8738%203.59422%2014.2493L6.43129%2017.066C6.49871%2017.1493%206.57803%2017.2339%206.67322%2017.3278L6.7922%2017.4468L7.14783%2017.8025L10.2255%2020.881L10.3445%2021H17.6844H17.8034V17.8025H21V17.7946V10.4608L20.8771%2010.3418Z'%20fill='url(%23paint0_radial_2689_27562)'/%3e%3cdefs%3e%3cradialGradient%20id='paint0_radial_2689_27562'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(12.0003%2011.9995)%20scale(8.99837%209.00066)'%3e%3cstop%20stop-color='white'%20stop-opacity='0.1'/%3e%3cstop%20offset='1'%20stop-color='white'%20stop-opacity='0'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e)](https://appwrite.io/docs/quick-starts/dart) Show me some code ----------------- If you learn best from code examples, follow one of our tutorials. * [![](https://appwrite.io/images/tutorials/react.png)\ \ Learn Appwrite Auth, Databases, and more with React.](https://appwrite.io/docs/tutorials/react) * [![](https://appwrite.io/images/tutorials/nextjs.png)\ \ Learn Appwrite Auth, Databases, and more with Next.js.](https://appwrite.io/docs/tutorials/nextjs) * [![](https://appwrite.io/images/tutorials/svelte.png)\ \ Learn Appwrite Auth, Databases, and more with SvelteKit.](https://appwrite.io/docs/tutorials/sveltekit) * [![](https://appwrite.io/images/tutorials/vue.png)\ \ Learn Appwrite Auth, Databases, and more with Vue.](https://appwrite.io/docs/tutorials/vue) * [![](https://appwrite.io/images/tutorials/android.png)\ \ Learn Appwrite Auth, Databases, and more with Android.](https://appwrite.io/docs/tutorials/android) * [![](https://appwrite.io/images/tutorials/flutter.png)\ \ Learn Appwrite Auth, Databases, and more with Flutter.](https://appwrite.io/docs/tutorials/flutter) Explore capabilities -------------------- All the core functionalities you need with a scalable and flexible API. Explore Appwrite's product offerings. * [![](https://appwrite.io/images/icons/illustrated/dark/auth.png) ![](https://appwrite.io/images/icons/illustrated/light/auth.png)\ \ #### Auth\ \ Sign in users with multiple OAuth providers.](https://appwrite.io/docs/products/auth) * [![](https://appwrite.io/images/icons/illustrated/dark/databases.png) ![](https://appwrite.io/images/icons/illustrated/light/databases.png)\ \ #### Databases\ \ Store your application and user data.](https://appwrite.io/docs/products/databases) * [![](https://appwrite.io/images/icons/illustrated/dark/functions.png) ![](https://appwrite.io/images/icons/illustrated/light/functions.png)\ \ #### Functions\ \ Extend and customize your server's functionality.](https://appwrite.io/docs/products/functions) * [![](https://appwrite.io/images/icons/illustrated/dark/sites.png) ![](https://appwrite.io/images/icons/illustrated/light/sites.png)\ \ #### Sites\ \ Deploy websites on the internet at scale.](https://appwrite.io/docs/products/sites) * [![](https://appwrite.io/images/icons/illustrated/dark/messaging.png) ![](https://appwrite.io/images/icons/illustrated/light/messaging.png)\ \ #### Messaging\ \ Send and schedule email, SMS, and push notifications.](https://appwrite.io/docs/products/messaging) * [![](https://appwrite.io/images/icons/illustrated/dark/storage.png) ![](https://appwrite.io/images/icons/illustrated/light/storage.png)\ \ #### Storage\ \ Store images, videos, documents, and files.](https://appwrite.io/docs/products/storage) * [![](https://appwrite.io/images/icons/illustrated/dark/avatars.png) ![](https://appwrite.io/images/icons/illustrated/light/avatars.png)\ \ #### Avatars\ \ Generate icons, screenshots, and QR codes for your apps.](https://appwrite.io/docs/products/avatars) * [![](https://appwrite.io/images/icons/illustrated/dark/realtime.png) ![](https://appwrite.io/images/icons/illustrated/light/realtime.png)\ \ #### Realtime\ \ Respond to server events in realtime.](https://appwrite.io/docs/apis/realtime) Build faster with AI -------------------- Appwrite’s Model Context Protocol (MCP) server lets LLMs interact directly with your Appwrite API. * [![Claude](https://appwrite.io/images/docs/mcp/logos/dark/claude.svg)\ \ #### Claude Desktop](https://appwrite.io/docs/tooling/mcp/claude-desktop) * [![Claude](https://appwrite.io/images/docs/mcp/logos/dark/claude.svg)\ \ #### Claude Code](https://appwrite.io/docs/tooling/mcp/claude-code) * [![Cursor](https://appwrite.io/images/docs/mcp/logos/dark/cursor-ai.svg)\ \ #### Cursor](https://appwrite.io/docs/tooling/mcp/cursor) * [![Windsurf](https://appwrite.io/images/docs/mcp/logos/dark/windsurf.svg)\ \ #### Windsurf Editor](https://appwrite.io/docs/tooling/mcp/windsurf) * [![VS Code](https://appwrite.io/images/docs/mcp/logos/dark/vscode.svg)\ \ #### VS Code](https://appwrite.io/docs/tooling/mcp/vscode) * [![OpenCode](https://appwrite.io/images/docs/mcp/logos/dark/opencode.svg)\ \ #### OpenCode](https://appwrite.io/docs/tooling/mcp/opencode) Explore ways to integrate ------------------------- Choose how you integrate with Appwrite. Explore references for the Appwrite SDK, REST API, GraphQL API, or Realtime API. * [#### SDKs\ \ Light-weight SDKs for your favorite platforms.](https://appwrite.io/docs/sdks) * [#### REST API\ \ Integrate with HTTP requests without needing an SDK.](https://appwrite.io/docs/apis/rest) * [#### GraphQL\ \ Leverage GraphQL through our SDKs or integrate directly with REST endpoints.](https://appwrite.io/docs/apis/graphql) * [#### Realtime\ \ Respond to auth, databases, storage, and function events in realtime.](https://appwrite.io/docs/apis/realtime) Migrate to Appwrite ------------------- Own your data with automatic data migrations. * [#### Self-hosted\ \ Move data from self-hosted to Appwrite Cloud.](https://appwrite.io/docs/advanced/migrations/self-hosted) * [#### Firebase\ \ Migrate users and data from Firebase to Appwrite.](https://appwrite.io/docs/advanced/migrations/firebase) * [#### Supabase\ \ Migrate users and data from Supabase to Appwrite.](https://appwrite.io/docs/advanced/migrations/supabase) * [#### Nhost\ \ Migrate users and data from NHost to Appwrite.](https://appwrite.io/docs/advanced/migrations/nhost) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Quick starts - Docs - Appwrite [Skip to content](https://appwrite.io/docs/quick-starts#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Web app ------- * [](https://appwrite.io/docs/quick-starts/nextjs) * [](https://appwrite.io/docs/quick-starts/react) * [](https://appwrite.io/docs/quick-starts/vue) * [](https://appwrite.io/docs/quick-starts/sveltekit) * [](https://appwrite.io/docs/quick-starts/angular) * [](https://appwrite.io/docs/quick-starts/nuxt) * [](https://appwrite.io/docs/quick-starts/refine) * [](https://appwrite.io/docs/quick-starts/solid) * [](https://appwrite.io/docs/quick-starts/tanstack-start) * [](https://appwrite.io/docs/quick-starts/web) Mobile and native ----------------- * [](https://appwrite.io/docs/quick-starts/flutter) * [](https://appwrite.io/docs/quick-starts/react-native) * [](https://appwrite.io/docs/quick-starts/android) * [](https://appwrite.io/docs/quick-starts/apple) Server ------ * [](https://appwrite.io/docs/quick-starts/node) * [](https://appwrite.io/docs/quick-starts/python) * [](https://appwrite.io/docs/quick-starts/dotnet) * [](https://appwrite.io/docs/quick-starts/php) * [](https://appwrite.io/docs/quick-starts/dart) * [](https://appwrite.io/docs/quick-starts/ruby) * [](https://appwrite.io/docs/quick-starts/deno) * [](https://appwrite.io/docs/quick-starts/go) * [](https://appwrite.io/docs/quick-starts/swift) * [](https://appwrite.io/docs/quick-starts/kotlin) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Storage - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/storage#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Storage allows you to manage files in your project. You can use it to store images, videos, rows, and other files for your projects. It provides APIs to upload, download, delete, and list files, with many added utilities. ##### Looking for a database? Appwrite Storage stores files like images, PDFs or videos. If you need to store data like profiles, recipes, or transactions, use [Appwrite Databases](https://appwrite.io/docs/products/databases) . [Get started](https://appwrite.io/docs/products/storage#get-started) --------------------------------------------------------------------- Get started with Appwrite Storage. Learn to setup up a bucket, upload, and download your first file. [Quick start](https://appwrite.io/docs/products/storage/quick-start) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Databases - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/databases#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Databases let you store and query structured data. Databases provide high-performance and scalable data storage for your key application, business, and user data. ##### Looking for file storage? Databases store data, if you need to store files like images, PDFs or videos, use [Appwrite Storage](https://appwrite.io/docs/products/storage) . You can organize data into databases, tables, and rows. You can also paginate, order, and query rows. For complex business logic, Appwrite supports relationships to help you model your data. [Quick start](https://appwrite.io/docs/products/databases/quick-start) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # SDKs - Docs - Appwrite [Skip to content](https://appwrite.io/docs/sdks#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite provides SDK libraries for major programming languages and platforms so you don't have to write code for interacting with our API protocols from scratch. We're always working on improving and extending the current stack of available platforms and SDKs, listed below is a list of official libraries the Appwrite team is maintaining. [Client](https://appwrite.io/docs/sdks#client) ----------------------------------------------- Client libraries for integrating with Appwrite to build client-based applications and websites. Read one of the many [quick starts](https://appwrite.io/docs/quick-starts) guides for your framework of choice to start building your first application. | | Platform | GitHub Repository | | | --- | --- | --- | --- | | ![Javascript logo](https://appwrite.io/images/platforms/dark/javascript.svg) ![Javascript logo](https://appwrite.io/images/platforms/javascript.svg) | Web SDK `21.0.0` | [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web) | | | ![Flutter logo](https://appwrite.io/images/platforms/dark/flutter.svg) ![Flutter logo](https://appwrite.io/images/platforms/flutter.svg) | Flutter SDK `20.0.0` | [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter) | | | ![React logo](https://appwrite.io/images/platforms/dark/react.svg) ![React logo](https://appwrite.io/images/platforms/react.svg) | React Native SDK `0.15.0` | [appwrite/sdk-for-react-native](https://github.com/appwrite/sdk-for-react-native) | `beta` | | ![Apple logo](https://appwrite.io/images/platforms/dark/apple.svg) ![Apple logo](https://appwrite.io/images/platforms/apple.svg) | Apple SDK `13.0.0` | [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple) | | | ![Android logo](https://appwrite.io/images/platforms/dark/android.svg) ![Android logo](https://appwrite.io/images/platforms/android.svg) | Android SDK `11.0.0` | [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android) | | [Server](https://appwrite.io/docs/sdks#server) ----------------------------------------------- Server libraries for integrating with Appwrite to build server side integrations or use inside your [Appwrite Functions](https://appwrite.io/docs/products/functions) . Read one of the many [quick starts](https://appwrite.io/docs/quick-starts) guides for your language/runtime of choice to start building your first server integration. | | Platform | GitHub Repository | | | --- | --- | --- | --- | | ![Node.js logo](https://appwrite.io/images/platforms/dark/nodejs.svg) ![Node.js logo](https://appwrite.io/images/platforms/nodejs.svg) | Node.js SDK `20.0.0` | [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node) | | | ![Python logo](https://appwrite.io/images/platforms/dark/python.svg) ![Python logo](https://appwrite.io/images/platforms/python.svg) | Python SDK `13.2.0` | [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python) | | | ![Dart logo](https://appwrite.io/images/platforms/dark/dart.svg) ![Dart logo](https://appwrite.io/images/platforms/dart.svg) | Dart SDK `19.0.0` | [appwrite/sdk-for-dart](https://github.com/appwrite/sdk-for-dart) | | | ![PHP logo](https://appwrite.io/images/platforms/dark/php.svg) ![PHP logo](https://appwrite.io/images/platforms/php.svg) | PHP SDK `17.2.0` | [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php) | | | ![Ruby logo](https://appwrite.io/images/platforms/dark/ruby.svg) ![Ruby logo](https://appwrite.io/images/platforms/ruby.svg) | Ruby SDK `19.0.0` | [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby) | | | ![.NET logo](https://appwrite.io/images/platforms/dark/dotnet.svg) ![.NET logo](https://appwrite.io/images/platforms/dotnet.svg) | .NET SDK `0.19.0` | [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet) | `beta` | | ![Go logo](https://appwrite.io/images/platforms/dark/go.svg) ![Go logo](https://appwrite.io/images/platforms/go.svg) | Go SDK `0.13.0` | [appwrite/sdk-for-go](https://github.com/appwrite/sdk-for-go) | `beta` | | ![Swift logo](https://appwrite.io/images/platforms/dark/swift.svg) ![Swift logo](https://appwrite.io/images/platforms/swift.svg) | Swift SDK `13.0.0` | [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift) | | | ![Kotlin logo](https://appwrite.io/images/platforms/dark/kotlin.svg) ![Kotlin logo](https://appwrite.io/images/platforms/kotlin.svg) | Kotlin SDK `12.0.0` | [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin) | | If you would like to help us extend our platforms and SDKs stack, you are more than welcome to contact us or contribute to the [Appwrite SDK Generator](https://github.com/appwrite/sdk-generator) project GitHub repository and read our contribution guide. [Protocols](https://appwrite.io/docs/sdks#protocols) ----------------------------------------------------- We are always looking to add new SDKs to our platform. If the SDK you are looking for is still missing, labeled as beta or experimental, or you simply do not want to integrate with an SDK, you can always integrate with Appwrite directly using any standard HTTP, GraphQL, or WebSocket clients and the relevant Appwrite protocol. Appwrite supports multiple API protocols for maximum flexibility and developer convenience. You can learn more about how to integrate directly with them using one of the following available guides: [Integrate with the Appwrite Realtime API](https://appwrite.io/docs/apis/realtime) [Integrate with the Appwrite REST API](https://appwrite.io/docs/apis/rest) [Integrate with the Appwrite GraphQL API](https://appwrite.io/docs/apis/graphql) [Utility classes](https://appwrite.io/docs/sdks#utility-classes) ----------------------------------------------------------------- Appwrite's SDKs provide useful utility classes to make your development experience easier. Use these classes and methods to reduce guess work and get better code suggestions in your IDE. ### [IDs](https://appwrite.io/docs/sdks#ids) Appwrite has utility classes to help you handle IDs. These generate the correct ID format to be passed to the Appwrite APIs. Appwrite generates unique IDs that are both **random** and **ordered**. Appwrite IDs combine a timestamp prefix based on microseconds and a random UID string, formatted as ``. ### [Enums](https://appwrite.io/docs/sdks#enums) Appwrite has enumeration classes for predefined strings used different parameters used for the Appwrite APIs. These enums are available for authenticator type, name, OAuth provider, password hash types, browsers, authentication factors, index types, credit cards, image gravity, image format, relationship types, SMTP encryption, Function runtime, messaging provider type, compression algorithms, execution methods, and country flags. You can discover the available enums in each SDK at the source. | | Platform | Enums | | | --- | --- | --- | --- | | ![Javascript logo](https://appwrite.io/images/platforms/dark/javascript.svg) ![Javascript logo](https://appwrite.io/images/platforms/javascript.svg) | Web SDK `14.0.1` | [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web/tree/dev/src/enums) | | | ![Flutter logo](https://appwrite.io/images/platforms/dark/flutter.svg) ![Flutter logo](https://appwrite.io/images/platforms/flutter.svg) | Flutter SDK `12.0.3` | [appwrite/sdk-for-flutter](https://github.com/appwrite/sdk-for-flutter/tree/dev/lib/src/enums) | | | ![React logo](https://appwrite.io/images/platforms/dark/react.svg) ![React logo](https://appwrite.io/images/platforms/react.svg) | React Native SDK `0.1.0` | [appwrite/sdk-for-react-native](https://github.com/appwrite/sdk-for-react-native) | `beta` | | ![Apple logo](https://appwrite.io/images/platforms/dark/apple.svg) ![Apple logo](https://appwrite.io/images/platforms/apple.svg) | Apple SDK `5.0.0` | [appwrite/sdk-for-apple](https://github.com/appwrite/sdk-for-apple/tree/dev/Sources/AppwriteEnums) | | | ![Android logo](https://appwrite.io/images/platforms/dark/android.svg) ![Android logo](https://appwrite.io/images/platforms/android.svg) | Android SDK `5.1.0` | [appwrite/sdk-for-android](https://github.com/appwrite/sdk-for-android/tree/dev/library/src/main/java/io/appwrite/enums) | | You can discover the available enums in each SDK at the source. | | Platform | Enums | | | --- | --- | --- | --- | | ![Node.js logo](https://appwrite.io/images/platforms/dark/nodejs.svg) ![Node.js logo](https://appwrite.io/images/platforms/nodejs.svg) | Node.js SDK `14.1.0` | [appwrite/sdk-for-node](https://github.com/appwrite/sdk-for-node/tree/dev/lib/enums) | | | ![Python logo](https://appwrite.io/images/platforms/dark/python.svg) ![Python logo](https://appwrite.io/images/platforms/python.svg) | Python SDK `6.1.0` | [appwrite/sdk-for-python](https://github.com/appwrite/sdk-for-python/tree/dev/appwrite/enums) | | | ![Dart logo](https://appwrite.io/images/platforms/dark/dart.svg) ![Dart logo](https://appwrite.io/images/platforms/dart.svg) | Dart SDK `12.1.0` | [appwrite/sdk-for-dart](https://github.com/appwrite/sdk-for-dart/blob/dev/lib/enums.dart) | | | ![PHP logo](https://appwrite.io/images/platforms/dark/php.svg) ![PHP logo](https://appwrite.io/images/platforms/php.svg) | PHP SDK `12.1.0` | [appwrite/sdk-for-php](https://github.com/appwrite/sdk-for-php/tree/dev/src/Appwrite/Enums) | | | ![Ruby logo](https://appwrite.io/images/platforms/dark/ruby.svg) ![Ruby logo](https://appwrite.io/images/platforms/ruby.svg) | Ruby SDK `12.1.0` | [appwrite/sdk-for-ruby](https://github.com/appwrite/sdk-for-ruby/tree/dev/lib/appwrite/enums) | | | ![.NET logo](https://appwrite.io/images/platforms/dark/dotnet.svg) ![.NET logo](https://appwrite.io/images/platforms/dotnet.svg) | .NET SDK `0.10.1` | [appwrite/sdk-for-dotnet](https://github.com/appwrite/sdk-for-dotnet/tree/dev/src/Appwrite/Enums) | | | ![Go logo](https://appwrite.io/images/platforms/dark/go.svg) ![Go logo](https://appwrite.io/images/platforms/go.svg) | Go SDK `0.2.0` | [appwrite/sdk-for-go](https://github.com/appwrite/sdk-for-go) | `beta` | | ![Swift logo](https://appwrite.io/images/platforms/dark/swift.svg) ![Swift logo](https://appwrite.io/images/platforms/swift.svg) | Swift SDK `6.1.0` | [appwrite/sdk-for-swift](https://github.com/appwrite/sdk-for-swift/tree/dev/Sources/AppwriteEnums) | | | ![Kotlin logo](https://appwrite.io/images/platforms/dark/kotlin.svg) ![Kotlin logo](https://appwrite.io/images/platforms/kotlin.svg) | Kotlin SDK `6.1.0` | [appwrite/sdk-for-kotlin](https://github.com/appwrite/sdk-for-kotlin/tree/dev/src/main/kotlin/io/appwrite/enums) | | ### [Queries and permissions](https://appwrite.io/docs/sdks#queries-and-permissions) Appwrite has utility classes for queries and permissions. You can learn more about [query utility classes](https://appwrite.io/docs/products/databases/queries) and [permissions utility classes](https://appwrite.io/docs/advanced/platform/permissions) in their own pages. ### [File I/O](https://appwrite.io/docs/sdks#file-io) Depending on your platform, you will also need some helpers to interface with system I/O. Learn more about [storage input file classes](https://appwrite.io/docs/products/storage/upload-download#input-file) . [Community](https://appwrite.io/docs/sdks#community) ----------------------------------------------------- If you have created your own framework or any other technology specific integration and would like us to list it here please [contact us](https://appwrite.io/contact-us) . If you would like to help us expand Appwrite's list of SDKs, you can contribute to Appwrite's [SDK Generator](https://github.com/appwrite/sdk-generator) project on GitHub and read our [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md) . ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Installation - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/command-line/installation#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The [Appwrite Command Line Interface (CLI)](https://github.com/appwrite/sdk-for-cli) is an application that allows you to interact with Appwrite to perform server-side tasks using your terminal. This includes creating and managing projects, managing resources (rows, files, users), creating and deploying Appwrite Functions, and other operations available through Appwrite's API. [Getting started](https://appwrite.io/docs/tooling/command-line/installation#getting-started) ---------------------------------------------------------------------------------------------- The CLI is packaged both as an [npm module](https://www.npmjs.com/package/appwrite-cli) as well as a [standalone binary](https://github.com/appwrite/sdk-for-cli/releases/latest) for your operating system, making it completely dependency free, platform independent, and language agnostic. If you plan to use the CLI to initialize new Appwrite Functions, ensure that [Git is installed](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) on your machine. ### [Install with npm](https://appwrite.io/docs/tooling/command-line/installation#install-with-npm) If you have npm set up, run the command below to install the CLI. npm install -g appwrite-cli ### [Install with script](https://appwrite.io/docs/tooling/command-line/installation#install-with-script) For a completely dependency-free installation, the CLI also ships with a convenient installation script for your operating system Using [Homebrew](https://brew.sh/) brew install appwrite or terminal curl -sL https://appwrite.io/cli/install.sh | bash Using [Powershell](https://learn.microsoft.com/en-us/powershell/) iwr -useb https://appwrite.io/cli/install.ps1 | iex or [Scoop](https://scoop.sh/) scoop install https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/scoop/appwrite.config.json curl -sL https://appwrite.io/cli/install.sh | bash [Update your CLI](https://appwrite.io/docs/tooling/command-line/installation#update-your-cli) ---------------------------------------------------------------------------------------------- npm install -g appwrite-cli Using [Homebrew](https://brew.sh/) brew install appwrite or terminal curl -sL https://appwrite.io/cli/install.sh | bash iwr -useb https://appwrite.io/cli/install.ps1 | iex curl -sL https://appwrite.io/cli/install.sh | bash scoop install https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/scoop/appwrite.config.json ### [Verify installation](https://appwrite.io/docs/tooling/command-line/installation#verify-installation) After the installation or the update is complete, you can verify the Appwrite CLI is available by checking its version number. appwrite -v [Login](https://appwrite.io/docs/tooling/command-line/installation#login) -------------------------------------------------------------------------- Before you can use the CLI, you need to login to your Appwrite account using appwrite login Add the `--endpoint` flag if you're using a self-hosted instance of Appwrite. This flag requires you to add the URL string you're using for your self-hosted instance after the `--endpoint` flag. appwrite login --endpoint "" You can log in to multiple accounts or change the **current** account by re-running the command. [Initialization](https://appwrite.io/docs/tooling/command-line/installation#initialization) -------------------------------------------------------------------------------------------- After you're logged in, the CLI needs to be initialized with your Appwrite project. You can initialize the CLI using: appwrite init project This will create your `appwrite.config.json` file, where you will configure your various services like tables, functions, teams, topics, and buckets. { "projectId": "", "endpoint": "https://.cloud.appwrite.io/v1" } You can run your first CLI command after logging in. Try fetching information about your Appwrite project. appwrite projects get --project-id "" ##### Self-signed certificates By default, requests to domains with self-signed SSL certificates (or no certificates) are disabled. If you trust the domain, you can bypass the certificate validation using appwrite client --self-signed true ### [Next steps](https://appwrite.io/docs/tooling/command-line/installation#next-steps) You can use the CLI to create and deploy tables, functions, teams, topics, and buckets. Deployment commands allow you to configure your Appwrite project programmatically and replicate functions and table schemas across Appwrite projects. [Learn more about deployment](https://appwrite.io/docs/tooling/command-line/tables) Besides utility commands, the CLI can be used to execute commands like a Server SDK. [Find a full list of commands](https://appwrite.io/docs/tooling/command-line/commands) You can choose to use the CLI in a headless and non-interactive mode without the need for config files or sessions. This is useful for CI or scripting use cases. [Learn more about CI mode](https://appwrite.io/docs/tooling/command-line/non-interactive) [Help](https://appwrite.io/docs/tooling/command-line/installation#help) ------------------------------------------------------------------------ If you get stuck anywhere, you can always use the `help` command to get the usage examples. appwrite help [Configuration](https://appwrite.io/docs/tooling/command-line/installation#configuration) ------------------------------------------------------------------------------------------ At any point, if you would like to change your server's endpoint, project ID, or self-signed certificate acceptance, use the `client` command. appwrite client --endpoint https://.cloud.appwrite.io/v1 appwrite client --key 23f24gwrhSDgefaY appwrite client --self-signed true appwrite client --reset // Resets your CLI configuration appwrite client --debug // Prints your current configuration [Uninstall](https://appwrite.io/docs/tooling/command-line/installation#uninstall) ---------------------------------------------------------------------------------- If you installed Appwrite CLI using NPM, you can use the following command to uninstall it. npm uninstall -g appwrite-cli If you installed the Appwrite CLI with brew or the installation script for your operating system, use the following command to uninstall it. Using [Homebrew](https://brew.sh/) brew uninstall appwrite or terminal rm -f /usr/local/bin/appwrite | bash Using [Powershell](https://learn.microsoft.com/en-us/powershell/) $APPWRITE_INSTALL_DIR = Join-Path -Path $env:LOCALAPPDATA -ChildPath "Appwrite"; Remove-Item -Force -Path $APPWRITE_INSTALL_DIR or [Scoop](https://scoop.sh/) scoop uninstall appwrite rm -f /usr/local/bin/appwrite | bash You can also remove the configuration, cookies, and API Keys the Appwrite CLI stored. To remove those, run the following command. rm -rf ~/.appwrite | bash Using [Powershell](https://learn.microsoft.com/en-us/powershell/) $APPWRITE_CONFIG_DIR = Join-Path -Path $env:UserProfile -ChildPath ".appwrite"; Remove-Item -Recurse -Force -Path $APPWRITE_CONFIG_DIR or [Scoop](https://scoop.sh/) appwrite client --reset rm -rf ~/.appwrite | bash ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Authentication - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/auth#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite **Authentication** delivers more than just user sign up and log in. Authentication makes it easy to build secure and robust authentication with support for many different authentication methods. [Add authentication to your app in 5 minutes](https://appwrite.io/docs/products/auth/quick-start) [Authentication methods](https://appwrite.io/docs/products/auth#auth-methods) ------------------------------------------------------------------------------ Appwrite supports a variety of authentication methods to fit every app and every niche. Explore Appwrite's authentication flows. [Email and password login with just a few lines of code secured with state of the art Argon2 hashing.](https://appwrite.io/docs/products/auth/email-password) [Log in users without a password using their phone number and SMS verification.](https://appwrite.io/docs/products/auth/phone-sms) [Passwordless login with a magic link sent to the user's email.](https://appwrite.io/docs/products/auth/magic-url) [Generate a time-based single-use password sent to the user's email.](https://appwrite.io/docs/products/auth/email-otp) [Authenticate users with existing accounts from GitHub, Google, Facebook, and 30+ other providers.](https://appwrite.io/docs/products/auth/oauth2) [Create guest sessions for visitors and convert to full accounts when they're ready.](https://appwrite.io/docs/products/auth/anonymous) [Deligate access for a user through passing JWT tokens.](https://appwrite.io/docs/products/auth/jwt) [Authenticate users in server-side rendered applications.](https://appwrite.io/docs/products/auth/server-side-rendering) [Implement custom authentication methods like biometric and passkey login by generating custom tokens.](https://appwrite.io/docs/products/auth/custom-token) [Implementing MFA to add extra layers of security to your app.](https://appwrite.io/docs/products/auth/mfa) [Flexible permissions](https://appwrite.io/docs/products/auth#flexible-permissions) ------------------------------------------------------------------------------------ When users sign up using Appwrite, their identity is automatically attached to a robust permissions system. Appwrite Authentication provides permissions for individual users and groups of users through [teams](https://appwrite.io/docs/products/auth/teams) and [labels](https://appwrite.io/docs/products/auth/labels) . [Built in preferences](https://appwrite.io/docs/products/auth#built-in-preferences) ------------------------------------------------------------------------------------ Appwrite **Authentication** comes with built-in [preferences](https://appwrite.io/docs/products/auth/preferences) for users to manage their account settings. Store notification settings, themes, and other user preferences to be shared across devices. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Messaging - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/messaging#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Messaging helps you communicate with your users through push notifications, emails, and SMS text messages. Sending personalized communication for marketing, updates, and realtime alerts can increase user engagement and retention. You can also use Appwrite Messaging to implement security checks and custom authentication flows. ![Messaging overview](https://appwrite.io/images/docs/messaging/dark/message-overview.png) ![Messaging overview](https://appwrite.io/images/docs/messaging/message-overview.png) Explore what you can build with Appwrite Messaging. [Send newsletters, invoices, promotions and other emails.](https://appwrite.io/docs/products/messaging/send-email-messages) [Send SMS messages straight to your user's phone.](https://appwrite.io/docs/products/messaging/send-sms-messages) [Send push notifications to your user's devices.](https://appwrite.io/docs/products/messaging/send-push-notifications) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Model Context Protocol - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/mcp#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite offers [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) servers that allow LLMs to directly interact with Appwrite's API and docs. Using MCP servers, you can use applications such as Claude Desktop, Cursor, Windsurf Editor, etc. to operate on your Appwrite project as well as gain context about the latest updates to Appwrite's SDKs, APIs, and CLI. [What is MCP?](https://appwrite.io/docs/tooling/mcp#) ------------------------------------------------------ The Model Context Protocol (MCP) is an open standard that enables Large Language Models (LLMs) and AI code-generation tools to interact with APIs and documentation in a structured manner. MCP servers provide a bridge between LLMs and external services, allowing them to perform actions such as querying databases, managing users, and accessing files. The key benefits of using MCP servers include: * **Enhanced capabilities**: LLMs can perform complex tasks by interacting with APIs, going beyond simple text generation. * **Improved context**: By accessing up-to-date documentation and API definitions, LLMs can provide more accurate and relevant responses. * **Seamless integration**: MCP servers can be easily integrated with popular AI tools and code editors, enhancing their functionality. [Available MCP servers](https://appwrite.io/docs/tooling/mcp#) --------------------------------------------------------------- Appwrite currently offers the following MCP servers: [](https://appwrite.io/docs/tooling/mcp/api) [](https://appwrite.io/docs/tooling/mcp/docs) ### [Why use Appwrite's MCP servers?](https://appwrite.io/docs/tooling/mcp#) Some **popular use cases** for Appwrite's MCP servers include: * **Code generation**: Automatically generate code snippets or entire files based on user input and context. * **Documentation lookup**: Quickly find relevant documentation for specific API endpoints or SDK features. * **Project management**: Create, update, or delete resources in your Appwrite project using natural language commands. * **Debugging assistance**: Get help with debugging issues by providing context about your project and recent changes. * **Learning and exploration**: Explore Appwrite's features and capabilities through interactive conversations with LLMs. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Command Center - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/command-center#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Appwrite **Command Center** is designed to improve the developer experience by enabling straightforward navigation and exploration of features, settings, and sections of the Appwrite Console. The Command Center is enhanced with [AI capabilities](https://appwrite.io/docs/tooling/assistant) and is the home of the Appwrite assistant. It allows you to execute tasks and access features within the Appwrite Console efficiently using keyboard shortcuts and advanced context-aware search. ![Command center](https://appwrite.io/images/docs/command-center/dark/command-center.png) ![Command center](https://appwrite.io/images/docs/command-center/command-center.png) [Getting started](https://appwrite.io/docs/tooling/command-center#getting-started) ----------------------------------------------------------------------------------- You can access the Command Center by pressing `⌘` + `K` on Mac or `Ctrl` + `K` on Windows and Linux devices or by clicking the search icon in the Console top navigation bar. A modal will appear, presenting a search input and a list of commands relevant to your current Console context. The Command Center emphasizes keyboard navigation. You can browse through commands using the `up` and `down` arrow keys and execute them with the `Enter` key. The search input lets you quickly filter and find specific commands or entities within the Console. Additionally, some commands have dedicated keyboard shortcuts that can be used for immediate execution without opening the Command Center. [Navigation](https://appwrite.io/docs/tooling/command-center#navigation) ------------------------------------------------------------------------- The Command Center includes a variety of navigation commands that are also useful for exploring the different options and features the Console offers. You can quickly access different sections like Databases, Auth, Security, and Functions screens using the Command Center. You will also find context-sensitive commands on each page that adapt based on your current location within the Console, providing relevant options and shortcuts. [Resource creation](https://appwrite.io/docs/tooling/command-center#resource-creation) --------------------------------------------------------------------------------------- The Command Center offers context-sensitive commands for creating entities like buckets, functions, database columns, etc. Specific commands trigger the opening of new panels, facilitating deeper interaction and task completion directly from the Command Center. [AI Assistant](https://appwrite.io/docs/tooling/command-center#ai-assistant) ----------------------------------------------------------------------------- An integral part of the Command Center is the [Appwrite AI Assistant](https://appwrite.io/docs/tooling/assistant) , trained on Appwrite's extensive documentation, content, and knowledge base. The Assistant can answer Appwrite-related queries with detailed explanations, step-by-step instructions, and relevant code snippets, enhancing your ability to utilize Appwrite quickly and efficiently. [Keyboard optimization](https://appwrite.io/docs/tooling/command-center#keyboard-optimization) ----------------------------------------------------------------------------------------------- Many developers favor keyboard interactions for efficiency and speed. The Command Center was designed with keyboard optimization in mind. It caters to the needs of keyboard-centric developers, enabling various tasks and efficient navigation across the Console without relying on a mouse or trackpad. You can use your `up` and `down` arrow keys to navigate between different commands and your `Enter` and `Escape` keys to enter and exit specific context screens. The Command Center also includes many built-in shortcuts that can be used from any console screen and allow greater productivity. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # GraphQL - Docs - Appwrite [Skip to content](https://appwrite.io/docs/apis/graphql#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite supports multiple protocols for accessing the platform, including [REST](https://appwrite.io/docs/apis/rest) , [GraphQL](https://appwrite.io/docs/apis/graphql) , and [Realtime](https://appwrite.io/docs/apis/realtime) . The GraphQL API allows you to query and mutate any resource type on the Appwrite platform through the endpoint `/v1/graphql`. Every endpoint available through REST is available through GraphQL, except for OAuth. [Requests](https://appwrite.io/docs/apis/graphql#requests) ----------------------------------------------------------- Although every query executes through the same endpoint, there are multiple ways to make a GraphQL request. All requests, however, share a common structure. | Name | Type | Description | | --- | --- | --- | | query | string | **Required**, the GraphQL query to execute. | | operationName | string | **Optional**, if the query contains several named operations, controls which one to execute. | | variables | object | **Optional**, an object containing variable names and values for the query. Variables are made available to your query with the `$` prefix. | ### [GraphQL model parameters](https://appwrite.io/docs/apis/graphql#graphql-model-parameters) In Appwrite's GraphQL API, all internal model parameters are prefixed with `_` instead of `$` because `$` is reserved by GraphQL. For example, `$tableId` in the REST API would be referenced as `_tableId` in the GraphQL API. ### [GET requests](https://appwrite.io/docs/apis/graphql#get-resquest) You can execute a GraphQL query via a GET request, passing a `query` and optionally `operationName` and `variables` as query parameters. ### [POST requests](https://appwrite.io/docs/apis/graphql#post-request) There are multiple ways to make a GraphQL POST request, differentiated by content type. There are two ways to make requests with the `application/json` content type. You can send a JSON object containing a `query` and optionally `operationName` and `variables`, or an array of objects with the same structure. #### [Object](https://appwrite.io/docs/apis/graphql#) { "query": "", "operationName": "", "variables": {} } #### [Array](https://appwrite.io/docs/apis/graphql#) [\ {\ "query": "",\ "operationName": "",\ "variables": {}\ }\ ] The `application/graphql` content type can be used to send a query as the raw POST body. query GetAccount { accountGet { _id email } } ### [Multipart form data](https://appwrite.io/docs/apis/graphql#multipart-form-data) The `multipart/form-data` content type can be used to upload files via GraphQL. In this case, the form data must include the following parts in addition to the files to upload. | Name | Type | Description | | --- | --- | --- | | operations | string | **Required**, JSON encoded GraphQL query and optionally operation name and variables. File variables should contain null values. | | map | string | **Required**, JSON encoded map of form-data filenames to the operations dot-path to inject the file to, e.g. `variables.file`. | [Responses](https://appwrite.io/docs/apis/graphql#responses) ------------------------------------------------------------- A response to a GraphQL request will have the following structure: | Name | Type | Description | | --- | --- | --- | | data | object | The data returned by the query, maps requested field names to their results. | | errors | object\[\] | An array of errors that occurred during the request. | The data object will contain a map of requested field names to their results. If no data is returned, the object will not be present in the response. The errors array will contain error objects, each with their own **message** and **path**. The path will contain the field key that is null due to the error. If no errors occur, the array will not be present in the response. [Authentication](https://appwrite.io/docs/apis/graphql#authentication) ----------------------------------------------------------------------- GraphQL authenticates using Appwrite accounts and sessions. Both accounts and sessions can be created with GraphQL using the `accountCreate`, `accountCreateEmailPasswordSession`, `accountCreateAnonymousSession`, or `accountCreatePhoneToken` mutations. More information and examples of authenticating users can be found in the dedicated [authentication guide](https://appwrite.io/docs/products/auth) . [Database queries](https://appwrite.io/docs/apis/graphql#database-queries) --------------------------------------------------------------------------- The GraphQL API can be used to query and manipulate database rows. For detailed examples of how to create, list, update, and delete rows using GraphQL, refer to the [Rows documentation](https://appwrite.io/docs/products/databases/rows) . [GraphQL vs REST](https://appwrite.io/docs/apis/graphql#graphql-vs-rest) ------------------------------------------------------------------------- There are two main features that make GraphQL appealing when compared to the REST API: **selection sets** and **query batching**. ### [Selection sets](https://appwrite.io/docs/apis/graphql#selection-sets) Selection sets can be used to tell a GraphQL API exactly which fields of a particular resource you would like to receive in the response. The server will respond with only those fields, nothing more, nothing less. This gives you full control over what data comes into your application. For example, to retrieve only the email of a currently authenticated user, you could query the `accountGet` field, passing only email as the **field selection set**. query GetAccount { accountGet { _id email } } Given this query, the GraphQL API will respond with: { "data": { "accountGet": { "_id": "...", "email": "..." } } } This can be a useful feature for performance, network efficiency, and app responsiveness. As the processing happens on the server, the bandwidth consumed for the request can be dramatically reduced. [Query batching](https://appwrite.io/docs/apis/graphql#query-batching) ----------------------------------------------------------------------- GraphQL allows sending multiple queries or mutations in the same request. There are two different ways to batch queries. The simplest way is to include multiple fields in a single query **or** mutation. query GetAccountAndLocale { accountGet { _id email } localeGet { ip } } If both field executions succeed, the response will contain a data key for each field, containing the values of the selected fields. { "data": { "accountGet": { "_id": "...", "email": "..." }, "localeGet": { "ip": "..." } } } If there was no authenticated user, the `accountGet` field would fail to resolve. In such a case the value of the data key for that field will be null, and an object will be added to the errors array instead. { "data": { "accountGet": null, "localeGet": { "ip": "...", "country": "..." } }, "errors": [\ {\ "message": "User (role: guest) missing scope (account)",\ "path": ["accountGet"]\ }\ ] } Batching with a single query or mutation has some down-sides. You cannot mix and match queries and mutations within the same request unless you provide an operationName, in which case you can only execute one query per request. Additionally, all **variables** must be passed in the same object, which can be cumbersome and hard to maintain. The second way to batch is to pass an array of queries or mutations in the request. In this way, you can execute queries **and** mutations and keep variables separated for each. [\ {\ "query": "query GetAccount { accountGet{ email } }",\ },\ {\ "query": "query GetLocale { localeGet { ip } }"\ }\ ] This allows you to execute complex actions in a single network request. [SDK usage](https://appwrite.io/docs/apis/graphql#sdk-usage) ------------------------------------------------------------- Appwrite SDKs also support GraphQL in addition to the REST services. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Network - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/network#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite's network is designed to deliver low-latency, high-performance experiences for developers and end-users alike. It leverages a robust Content Delivery Network (CDN) with edge locations across multiple regions to ensure fast and reliable data delivery. With distributed infrastructure and multiple deployment regions, Appwrite enables developers to build globally scalable applications while maintaining data sovereignty. Its architecture integrates seamlessly with APIs, storage, and databases, optimizing both speed and availability. ![Network map](https://appwrite.io/images/docs/network/dark/all-maps.png) ![Network map](https://appwrite.io/images/docs/network/all-maps.png) [Components](https://appwrite.io/docs/products/network#components) ------------------------------------------------------------------- The Appwrite Network is composed of multiple components that work together to deliver a seamless experience for developers and end-users. These components include: [Multi-region deployments for geo-redundancy, compliance and low-latency.](https://appwrite.io/docs/products/network/regions) [Edge nodes for fast request processing and reduced round-trip times.](https://appwrite.io/docs/products/network/edges) [Global infrastructure for optimized routing, enabling faster and more consistent data delivery.](https://appwrite.io/docs/products/network/cdn) [Dedicated endpoints for region-specific, edge, and compute workloads.](https://appwrite.io/docs/products/network/endpoints) ### [Region vs Edge](https://appwrite.io/docs/products/network#region-vs-edge) In Appwrite, Regions are where all your core data and services live. This includes your databases, auth, functions, messaging, and storage. Regions are the source of truth, handling heavy workloads and ensuring your application runs reliably while keeping your data compliant with local regulations. Edges are about speed. They process requests closer to your users using smart geo-routing, reducing latency by handling compute tasks at the nearest edge location. Edges are perfect for serving cached content, executing lightweight computations, and optimizing user interactions. ##### Where to execute? The Appwrite Network is designed for flexibility. You can choose to run your serverless compute workload in your project's home region by using the `..appwrite.run` endpoint, or on the edge using the `.appwrite.network` endpoint. Both your region and edge endpoints can be customized to use your own custom domain. [Architecture](https://appwrite.io/docs/products/network#architecture) ----------------------------------------------------------------------- Appwrite's network is designed to provide a balance between centralized compute and distributed delivery: * Regions: Core infrastructure and data resides in global regions, where all services like databases, auth, functions, messaging, and storage operate. These regions ensure data sovereignty, compliance, and high availability for critical workloads. * Edges: Distributed edge locations process requests closer to end-users, leveraging smart geo-routing to minimize latency. These edge handle tasks like caching, static content delivery, and lightweight compute to improve performance. * Private Routing: Data moves between edge nodes and regions through optimized, low-latency connections to ensure fast and reliable communication. This setup separates heavy backend processing in regions from latency-sensitive tasks at the edge, enabling efficient handling of global workloads with minimal performance trade-offs. ##### Self-Hosting? Appwrite's self-hosted setup is designed and optimized for straightforward, single-region environments - making it an ideal choice for small to medium-scale workloads. All Cloud users have access to the Appwrite Network. If you need to scale your self-hosted deployment or require additional solutions, please [contact us](https://appwrite.io/contact-us/enterprise) . [Features](https://appwrite.io/docs/products/network#features) --------------------------------------------------------------- [Provides dedicated nameservers and DNS management for apex domains with SSL certification.](https://appwrite.io/docs/products/network/dns) [Protects against distributed denial-of-service attacks, ensuring uninterrupted access.](https://appwrite.io/docs/products/network/ddos) [Encrypts data in transit for secure and private communication.](https://appwrite.io/docs/products/network/tls) [Shields applications from common web vulnerabilities and attacks on the application layer.](https://appwrite.io/docs/products/network/waf) [Reduces data size in transit to improve transfer speed and efficiency.](https://appwrite.io/docs/products/network/compression) [Stores frequently accessed data for faster retrieval and lower latency.](https://appwrite.io/docs/products/network/caching) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Realtime - Docs - Appwrite [Skip to content](https://appwrite.io/docs/apis/realtime#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite supports multiple protocols for accessing the server, including [REST](https://appwrite.io/docs/apis/rest) , [GraphQL](https://appwrite.io/docs/apis/graphql) , and [Realtime](https://appwrite.io/docs/apis/realtime) . The Appwrite Realtime allows you to listen to any Appwrite events in realtime using the `subscribe` method. Instead of requesting new data via HTTP, the subscription will receive new data every time it changes, any connected client receives that update within milliseconds via a WebSocket connection. This lets you build an interactive and responsive user experience by providing information from all of Appwrite's services in realtime. The example below shows subscribing to realtime events for file uploads. To subscribe to updates from different Appwrite resources, you need to specify one or more [channels](https://appwrite.io/docs/apis/realtime#channels) . The channels offer a wide and powerful selection that will allow you to listen to all possible resources. This allows you to receive updates not only from the database, but from _all_ the services that Appwrite offers. If you subscribe to a channel, you will receive callbacks for a variety of events related to the channel. The events column in the callback can be used to filter and respond to specific events in a channel. [View a list of all available events](https://appwrite.io/docs/advanced/platform/events) . ##### Permissions All subscriptions are secured by the [permissions system](https://appwrite.io/docs/advanced/platform/permissions) offered by Appwrite, meaning a user will only receive updates to resources they have permission to access. Using `Role.any()` on read permissions will allow any client to receive updates. [Authentication](https://appwrite.io/docs/apis/realtime#authentication) ------------------------------------------------------------------------ Realtime authenticates using an existing user session. If you authenticate **after** creating a subscription, the subscription will not receive updates for the newly authenticated user. You will need to re-create the subscription to work with the new user. More information and examples of authenticating users can be found in the dedicated [authentication docs](https://appwrite.io/docs/products/auth) . [Examples](https://appwrite.io/docs/apis/realtime#examples) ------------------------------------------------------------ The examples below will show you how you can use Realtime in various ways. ### [Subscribe to a Channel](https://appwrite.io/docs/apis/realtime#subscribe-to-a-channel) In this example we are subscribing to all updates related to our account by using the `account` channel. This will be triggered by any update related to the authenticated user, like updating the user's name or e-mail address. ### [Subscribe to Multiple Channels](https://appwrite.io/docs/apis/realtime#subscribe-to-multiple-channel) You can also listen to multiple channels at once by passing an array of channels. This will trigger the callback for any events for all channels passed. In this example we are listening to the row A and all files by subscribing to the `databases.A.tables.A.rows.A` and `files` channels. ### [Unsubscribe](https://appwrite.io/docs/apis/realtime#unsubscribe) If you no longer want to receive updates from a subscription, you can unsubscribe so that your callbacks are no longer called. Leaving old subscriptions alive and resubscribing can result in duplicate subscriptions and cause race conditions. [Payload](https://appwrite.io/docs/apis/realtime#payload) ---------------------------------------------------------- The payload from the subscription will contain following properties: | Name | Type | Description | | --- | --- | --- | | events | string\[\] | The [Appwrite events](https://appwrite.io/docs/advanced/platform/events)
that triggered this update. | | channels | string\[\] | An array of [channels](https://appwrite.io/docs/apis/realtime#channels)
that can receive this message. | | timestamp | string | The [ISO 8601 timestamp](https://en.wikipedia.org/wiki/ISO_8601)
in UTC timezone from the server | | payload | object | Payload contains the data equal to the response model. | If you subscribe to the `rows` channel and a row the user is allowed to read is updated, you will receive an object containing information about the event and the updated row. The response will look like this: { "events": [\ "databases.default.tables.sample.rows.63c98b9baea0938e1206.update",\ "databases.*.tables.*.rows.*.update",\ "databases.default.tables.*.rows.63c98b9baea0938e1206.update",\ "databases.*.tables.*.rows.63c98b9baea0938e1206.update",\ "databases.*.tables.sample.rows.63c98b9baea0938e1206.update",\ "databases.default.tables.sample.rows.*.update",\ "databases.*.tables.sample.rows.*.update",\ "databases.default.tables.*.rows.*.update",\ "databases.default.tables.sample.rows.63c98b9baea0938e1206",\ "databases.*.tables.*.rows.*",\ "databases.default.tables.*.rows.63c98b9baea0938e1206",\ "databases.*.tables.*.rows.63c98b9baea0938e1206",\ "databases.*.tables.sample.rows.63c98b9baea0938e1206",\ "databases.default.tables.sample.rows.*",\ "databases.*.tables.sample.rows.*",\ "databases.default.tables.*.rows.*",\ "databases.default.tables.sample",\ "databases.*.tables.*",\ "databases.default.tables.*",\ "databases.*.tables.sample",\ "databases.default",\ "databases.*"\ ], "channels": [\ "rows",\ "databases.default.tables.sample.rows",\ "databases.default.tables.sample.rows.63c98b9baea0938e1206"\ ], "timestamp": "2023-01-19 18:30:04.051", "payload": { "ip": "127.0.0.1", "stringArray": [\ "sss"\ ], "email": "joe@example.com", "stringRequired": "req", "float": 3.3, "boolean": false, "integer": 3, "enum": "apple", "stringDefault": "default", "datetime": "2023-01-19T10:27:09.428+00:00", "url": "https://appwrite.io", "$id": "63c98b9baea0938e1206", "$createdAt": "2023-01-19T18:27:39.715+00:00", "$updatedAt": "2023-01-19T18:30:04.040+00:00", "$permissions": [], "$tableId": "sample", "$databaseId": "default" } } [Channels](https://appwrite.io/docs/apis/realtime#channels) ------------------------------------------------------------ A list of all channels available you can subscribe to. IDs cannot be wildcards. | Channel | Description | | --- | --- | | `account` | All account related events (session create, name update...) | | `databases..tables..rows` | Any create/update/delete events to any row in a table | | `rows` | Any create/update/delete events to any row | | `databases..tables..rows.` | Any update/delete events to a given row | | `files` | Any create/update/delete events to any file | | `buckets..files.` | Any update/delete events to a given file of the given bucket | | `buckets..files` | Any update/delete events to any file of the given bucket | | `teams` | Any create/update/delete events to a any team | | `teams.` | Any update/delete events to a given team | | `memberships` | Any create/update/delete events to a any membership | | `memberships.` | Any update/delete events to a given membership | | `executions` | Any update to executions | | `executions.` | Any update to a given execution | | `functions.` | Any execution event to a given function | [Custom endpoint](https://appwrite.io/docs/apis/realtime#custom-endpoint) -------------------------------------------------------------------------- The SDK will guess the endpoint of the Realtime API when setting the endpoint of your Appwrite instance. If you are running Appwrite with a custom proxy and changed the route of the Realtime API, you can call the `setEndpointRealtime` method on the Client SDK and set your new endpoint value. By default the endpoint is `wss://.cloud.appwrite.io/v1/realtime`. [Limitations](https://appwrite.io/docs/apis/realtime#limitations) ------------------------------------------------------------------ While the Realtime API offers robust capabilities, there are currently some limitations to be aware of in its implementation. ### [Subscription changes](https://appwrite.io/docs/apis/realtime#subscription-changes) The SDK creates a single WebSocket connection for all subscribed channels. Each time a channel is added or unsubscribed, the SDK currently creates a completely new connection and terminates the old one. Therefore, subscriptions to channels should always be done in conjunction with state management so as not to be unnecessarily built up several times by multiple components' life cycles. ### [Server SDKs](https://appwrite.io/docs/apis/realtime#server-sdks) We currently are not offering access to realtime with Server SDKs and an API key. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Sites - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/sites#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Sites empowers developers to host and manage web applications seamlessly within the Appwrite ecosystem. Appwrite Sites provides a fast, scalable, and secure way to deploy web apps directly from source control, allowing for quick iterations and live updates. Each site has a dedicated URL, runs within its own isolated container, and can be configured with custom domains and environment variables. Appwrite Sites leverages the [Appwrite Network](https://appwrite.io/docs/products/network) infrastructure to enhance your sites' performance and reliability. Your deployed sites automatically benefit from global content distribution across strategic edge locations, reducing latency and improving load times, while also gaining advanced security features including DDoS protection, Web Application Firewall (WAF), and TLS encryption. [Getting started](https://appwrite.io/docs/products/sites#) ------------------------------------------------------------ Appwrite Sites lets you host any web application with ease. However, to make this process even simpler, you can begin by exploring starter kits developed by the Appwrite team or leverage a pre-configured template with built-in integrations to implement essential features. ![Create first site](https://appwrite.io/images/docs/sites/dark/create-first-site.png) ![Create first site](https://appwrite.io/images/docs/sites/create-first-site.png) Try out one of our most popular framework quick-starts: [](https://appwrite.io/docs/products/sites/quick-start/nextjs) [](https://appwrite.io/docs/products/sites/quick-start/nuxt) [](https://appwrite.io/docs/products/sites/quick-start/sveltekit) [](https://appwrite.io/docs/products/sites/quick-start/astro) [](https://appwrite.io/docs/products/sites/quick-start/vue) [](https://appwrite.io/docs/products/sites/quick-start/tanstack-start) Or, [setup your first site using your favorite framework >](https://appwrite.io/docs/products/sites/quick-start) [Migrating from other platforms?](https://appwrite.io/docs/products/sites#) ---------------------------------------------------------------------------- Looking to migrate existing web applications from other hosting platforms to Appwrite Sites? Find detailed migration guides for various platforms: [](https://appwrite.io/docs/products/sites/migrations/vercel) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Functions - Overview - Appwrite [Skip to content](https://appwrite.io/docs/products/functions#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Functions unlock limitless potential for developers to extend Appwrite with code snippets. Appwrite Functions are user-defined functions that can start small and scale big, deploying automatically from source control. These Functions can be triggered by HTTP requests, SDK methods, server events, webhooks, and scheduled executions. Each function will have its own URL, execute in its own isolated container, and have its own configurable environment variables and permissions. [Getting started](https://appwrite.io/docs/products/functions#getting-started) ------------------------------------------------------------------------------- Appwrite Functions let you build anything you can imagine, but this flexibility makes it difficult to know where to start. Start exploring by cloning one of the quick start templates or using a template with pre-built integration to quickly implement features. ![Create project screen](https://appwrite.io/images/docs/functions/dark/template.png) ![Create project screen](https://appwrite.io/images/docs/functions/template.png) [Quick start](https://appwrite.io/docs/products/functions/quick-start) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Appwrite MCP and Cursor - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/mcp/cursor#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Learn how you can add the Appwrite MCP servers to Cursor to interact with both the Appwrite API and documentation. Before you begin, ensure you have the following **pre-requisites** installed on your system: [uv](https://docs.astral.sh/uv/getting-started/installation/) must be installed on your system. [Node.js](https://nodejs.org/en/download) and npm must be installed on your system. Open the **Cursor Settings** page, head to the **MCP** tab, and click on the **Add new global MCP server** button. This will open an `mcp.json` file in your editor. Choose which MCP server you want to configure: Update the `mcp.json` file to include the API server: { "mcpServers": { "appwrite-api": { "command": "uvx", "args": [\ "mcp-server-appwrite",\ "--users"\ ], "env": { "APPWRITE_API_KEY": "your-api-key", "APPWRITE_PROJECT_ID": "your-project-id", "APPWRITE_ENDPOINT": "https://.cloud.appwrite.io/v1" } } } } **Configuration:** * Replace `your-project-id` with your actual Appwrite project ID * Replace `your-api-key` with your Appwrite API key * Replace `` with your Appwrite Cloud region (e.g., `nyc`, `fra`) Update the `mcp.json` file to include the docs server: { "mcpServers": { "appwrite-docs": { "command": "npx", "args": [\ "mcp-remote",\ "https://mcp-for-docs.appwrite.io"\ ] } } } You can also **directly add the MCP servers to Cursor** using the following links: [](https://apwr.dev/api-mcp-cursor?ref=docs) [](https://apwr.dev/docs-mcp-cursor?ref=docs) [](https://apwr.dev/api-mcp-cursor?ref=docs) [](https://apwr.dev/docs-mcp-cursor?ref=docs) Once you save the details, Cursor will connect with the MCP server(s) and load all available tools. You may need to restart Cursor if it is unable to start the MCP server. ##### Enable other API MCP tools To enable additional API tools, learn more about [command-line arguments](https://appwrite.io/docs/tooling/mcp/api#command-line-arguments) . Open Cursor Agent and test your MCP integrations. You can try out the following example prompts based on the MCP server you have configured: **Example prompts:** * `Create a new user in my Appwrite project` * `List all databases in my project` * `Show me the collections in my database` * `Create a new document in my collection` * `Delete a specific user by ID` **Example prompts:** * `How do I set up real-time subscriptions in Appwrite?` * `Show me how to authenticate users with OAuth` * `What are the best practices for database queries?` * `How do I implement file uploads with Appwrite Storage?` * `Show me an example of using Appwrite Functions` ![Create user in Appwrite project](https://appwrite.io/images/docs/mcp/cursor/cursor-create-user.png) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # REST - Docs - Appwrite [Skip to content](https://appwrite.io/docs/apis/rest#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite supports multiple protocols for accessing the server, including [REST](https://appwrite.io/docs/apis/rest) , [GraphQL](https://appwrite.io/docs/apis/graphql) , and [Realtime](https://appwrite.io/docs/apis/realtime) . The REST API allows you to access your Appwrite server through HTTP requests without needing an SDK. Each endpoint in the API represents a specific operation on a specific resource. [Headers](https://appwrite.io/docs/apis/rest#headers) ------------------------------------------------------ Appwrite's REST APIs expect certain headers to be included with each request: | Header | | Description | | --- | --- | --- | | X-Appwrite-Project: \[PROJECT-ID\] | required | The ID of your Appwrite project | | Content-Type: application/json | required | Content type of the HTTP request. Typically set to `application/json`. | | X-Appwrite-Key: \[API-KEY\] | optional | API key used for server authentication. Your API key is a secret, **do not** use it in client applications. | | X-Appwrite-JWT: \[TOKEN\] | optional | Token used for JWT authentication, tokens can be generated using the [Create JWT](https://appwrite.io/docs/products/auth/jwt)
method. | | X-Appwrite-Response-Format: \[VERSION-NUMBER\] | optional | Version number used for backward compatibility. The response will be formatted to be compatible with the provided version number. This helps Appwrite SDKs keep backward compatibility with Appwrite server API version. | | X-Fallback-Cookies: \[FALLBACK-COOKIES\] | optional | Fallback cookies used in scenarios where browsers do not allow third-party cookies. Often used when there is no Custom Domain set for your Appwrite API. | [Authentication](https://appwrite.io/docs/apis/rest#authentication) -------------------------------------------------------------------- Appwrite supports multiple authentication methods, including account sessions, API keys, and JWTs. The authentication method you use depends on your use case. Below are examples showing how you can authenticate using the REST API. ### [Client integrations](https://appwrite.io/docs/apis/rest#client-integration) You can create account sessions with POST requests to the Account API. Sessions are persisted using secured cookies. You can learn more about session persistence in the Authentication Guide. The example below shows creating an account session with the Create Account Session with Email endpoint. POST /v1/account/sessions/email HTTP/1.1 Content-Type: application/json X-Appwrite-Project: { "email": "example@email.com", "password": "password" } You can find the cookies used to persist the new session in the response headers. Set-Cookie: a_session_61e71ec784ab035f7259_legacy=eyJ0...aSJ9; expires=Tue, 19-Dec-2023 21:26:51 GMT; path=/; domain=.cloud.appwrite.io; secure; httponly Set-Cookie: a_session_61e71ec784ab035f7259=eyJ0...aSJ9; expires=Tue, 19-Dec-2023 21:26:51 GMT; path=/; domain=.cloud.appwrite.io; secure; httponly; samesite=None These cookies are used in subsequent requests to authenticate the user. GET /v1/account HTTP/1.1 Cookie: a_session_61e71ec784ab035f7259_legacy=eyJ0...aSJ9; a_session_61e71ec784ab035f7259=eyJ0...aSJ9 Content-Type: application/json X-Appwrite-Project: ### [Server integrations](https://appwrite.io/docs/apis/rest#server-integrations) Server integrations use API keys to authenticate and are typically used for backend applications. Server APIs are authenticated with API keys instead of account sessions. Simply pass an [API key](https://appwrite.io/docs/advanced/platform/api-keys) in the `X-Appwrite-key: [API-KEY]` header with the appropriate scopes. GET /v1/tablesdb/{databaseId}/tables/{tableId}/rows HTTP/1.1 Content-Type: application/json X-Appwrite-Project: X-Appwrite-Key: [API_KEY] ### [JWT](https://appwrite.io/docs/apis/rest#jwt) JWT authentication is frequently used by server applications to act on behalf of a user. Users generate tokens using the [Create JWT](https://appwrite.io/docs/references/cloud/client-web/account#createJWT) endpoint. When issuing requests authenticated with a JWT, Appwrite will treat the request like it is from the authenticated user. GET /v1/account HTTP/1.1 Content-Type: application/json X-Appwrite-Project: X-Appwrite-JWT: [TOKEN] [Files](https://appwrite.io/docs/apis/rest#files) -------------------------------------------------- Appwrite implements resumable, chunked uploads for files larger than 5MB. Chunked uploads send files in chunks of 5MB to reduce memory footprint and increase resilience when handling large files. [Appwrite SDKs](https://appwrite.io/docs/sdks) will automatically handle chunked uploads, but it is possible to implement this with the REST API directly. Upload endpoints in Appwrite, such as [Create File](https://appwrite.io/docs/references/cloud/client-web/storage#createFile) and [Create Deployment](https://appwrite.io/docs/references/cloud/server-nodejs/functions#createDeployment) , are different from other endpoints. These endpoints take multipart form data instead of JSON data. To implement chunked uploads, you will need to implement the following headers. If you wish, this logic is already available in any of the [Appwrite SDKs](https://appwrite.io/docs/sdks) . | Header | | Description | | --- | --- | --- | | X-Appwrite-Project: \[PROJECT-ID\] | required | The ID of your Appwrite project | | Content-Type: multipart/form-data; boundary=\[FORM-BOUNDARY\] | required | Contains the content type of the HTTP request and provides a [boundary](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)
that is used to parse the form data. | | Content-Range: bytes \[BYTE-RANGE\] | required | Contains information about which bytes are being transmitted in this chunk, with the format `[FIRST-BYTE]-[LAST-BYTE]/[TOTAL-BYTES]`. | | X-Appwrite-ID: \[FILE-ID\] | required | Contains ID of the file this chunk belongs to. | | X-Appwrite-Key: \[API-KEY\] | optional | API key used for server authentication. Your API key is a secret, **do not** use it in client applications. | The multipart form data is structured as follows: | Key | | Value | File Name | Description | | --- | --- | --- | --- | --- | | fileId | optional | \[FILE-ID\] | N/A | Contains the file ID of the new file. Only used by file chunks following the first chunk uploaded. | | file | required | \[CHUNK-DATA\] | \[FILE-NAME\] | Contains file chunk data. | | permissions | required | \[PERMISSION ARRAY\] | N/A | Contains an array of permission strings about who can access the new file. | While cURL and fetch are great tools to explore other REST endpoints, it's impractical to use for chunked file uploads because you need to split files into chunks. The multipart form data posted to file upload endpoints have the following format: POST /v1/storage/buckets/default/files HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye0m6iNBQNHlzTpVM X-Appwrite-Project: demo-project Content-Range: bytes 10485760-12582912/12582912 X-Appwrite-ID: 6369b0bc1dcf4ff59051 ------WebKitFormBoundarye0m6iNBQNHlzTpVM Content-Disposition: form-data; name="fileId" unique() ------WebKitFormBoundarye0m6iNBQNHlzTpVM Content-Disposition: form-data; name="file"; filename="file.txt" Content-Type: application/octet-stream [CHUNKED-DATA] ------WebKitFormBoundarye0m6iNBQNHlzTpVM Content-Disposition: form-data; name="permissions[]" read("user:627a958ded6424a98a9f") ------WebKitFormBoundarye0m6iNBQNHlzTpVM-- [Images](https://appwrite.io/docs/apis/rest#images) ---------------------------------------------------- Some use cases do not allow custom headers, such as embedding images from Appwrite in HTML. In these cases, you can provide the Appwrite project ID using the query parameter project. [Permissions](https://appwrite.io/docs/apis/rest#permissions) -------------------------------------------------------------- Appwrite SDKs have helpers to generate permission string formats, but when using Appwrite without SDKs, you'd need to create the strings yourself. | Query method | API string | | --- | --- | | `Permission.read()` | `read("")` | | `Permission.create()` | `read("")` | | `Permission.update()` | `update("")` | | `Permission.delete()` | `delete("")` | | `Permission.write()` | `write("")` | ### [Roles](https://appwrite.io/docs/apis/rest#roles) Appwrite SDKs have helpers to generate roles string formats, but when using Appwrite without SDKs, you'd need to create the strings yourself. | Role method | API string | | --- | --- | | `Role.any()` | `any` | | `Role.guests()` | `guests` | | `Role.users()` | `users` | | `Role.users([STATUS])` | `users/[STATUS]` | | `Role.user([USER_ID])` | `user:[USER_ID]` | | `Role.user([USER_ID], [STATUS])` | `user:[USER_ID]/[STATUS]` | | `Role.team([TEAM_ID])` | `team:[TEAM_ID]` | | `Role.team([TEAM_ID], [ROLE])` | `team:[TEAM_ID]/[ROLE]` | | `Role.member([MEMBERSHIP_ID])` | `member:[MEMBERSHIP_ID]` | [Unique ID](https://appwrite.io/docs/apis/rest#unique-id) ---------------------------------------------------------- Appwrite's SDKs have a helper `ID.unique()` to generate unique IDs. When using Appwrite without an SDK, pass the string `"unique()"` into the ID parameter. [Queries](https://appwrite.io/docs/apis/rest#queries) ------------------------------------------------------ Appwrite's SDKs provide a `Query` class to generate JSON query strings. When using Appwrite without an SDK, you can template your own JSON strings. You can discover the query methods available in the [Queries page.](https://appwrite.io/docs/products/databases/queries) ### [Query string format](https://appwrite.io/docs/apis/rest#queries-string-format) Appwrite Queries are escaped JSON strings, which look like this. "{\"method\":\"equal\",\"column\":\"name\",\"values\":[\"John\"]}" Query strings are passed to Appwrite using the `queries` parameter. You can attach multiple query strings by including the array parameter multiple times in the query string: `queries[]="..."&queries[]="..."` For example, the unescaped query string might look like this. ?queries[0]={"method":"equal","column":"name","values":["John"]}&queries[1]={"method":"limit","values":[6]} The JSON has a general format like this. { "method": "", "column": "", "values": [\ ,\ ,\ ...\ ] } ##### Best practice When using greater than, greater than or equal to, less than, or less than or equal to, it is not recommended to pass in multiple values. While the API will accept multiple values and return results with **or logic**, it's best practice to pass in only one value for performance reasons. For example, to query for all rows with the name "John" or "Jane", the query string would look like this. { "method": "equal", "column": "name", "values": [\ "John",\ "Jane"\ ] } Here are some more examples of the JSON query format. When in doubt, you can use the Appwrite SDKs to generate the query strings for you. { "method": "isNull", "column": "name" } { "method": "select", "values": ["name", "age", "email"] } { "method": "between", "column": "age", "values": [18, 30] } { "method": "cursorAfter", "values": ["rowId"] } ### [Query nesting](https://appwrite.io/docs/apis/rest#query-nesting) Some Appwrite query methods, like `and` and `or`, allow you to nest queries. When using Appwrite without an SDK, you can template your own JSON strings. In these cases, `column` is empty and `values` is an array of queries. { "method": "and", "values": [\ {\ "method": "equal",\ "column": "name",\ "values": ["John"]\ },\ {\ "method": "between",\ "column": "age",\ "values": [20, 30]\ }\ ] } [Rate limits](https://appwrite.io/docs/apis/rest#rate-limits) -------------------------------------------------------------- Appwrite's REST APIs are protected by the same rate limit policies, just like when using an SDK. Each API has a different rate limit, which is documented in the References section of each service in the Appwrite documentation. [Learn more about Rate Limits](https://appwrite.io/docs/advanced/platform/rate-limits) . [Specifications](https://appwrite.io/docs/apis/rest#specifications) -------------------------------------------------------------------- Appwrite provides a full REST API specification in the OpenAPI 3 and Swagger 2 formats every release. These can be accessed through Appwrite's GitHub repository and rendered using a variety of parsers and tools. [Find the REST API specification for your Appwrite version](https://github.com/appwrite/appwrite/tree/master/app/config/specs) . ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Integration - Docs - Appwrite [Skip to content](https://appwrite.io/docs/advanced/integration#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Integration ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Appwrite MCP and Claude Desktop - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/mcp/claude-desktop#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Learn how you can add the Appwrite MCP servers to Claude Desktop to interact with both the Appwrite API and documentation. Before you begin, ensure you have the following **pre-requisites** installed on your system: [uv](https://docs.astral.sh/uv/getting-started/installation/) must be installed on your system. [Node.js](https://nodejs.org/en/download) and npm must be installed on your system. In the Claude Desktop app, open the app's **Settings** page (press `CTRL + ,` on Windows or `CMD + ,` on MacOS) and head to the **Developer** tab. ![Claude Settings](https://appwrite.io/images/docs/mcp/claude-desktop/claude-settings.png) Clicking on the **Edit Config** button will take you to the `claude_desktop_config.json` file. In case the file is missing, please visit the [Model Context Protocol](https://modelcontextprotocol.io/quickstart/user#2-add-the-filesystem-mcp-server) docs. Choose which MCP server you want to configure: Add the API server to your configuration: { "mcpServers": { "appwrite-api": { "command": "uvx", "args": [\ "mcp-server-appwrite",\ "--users"\ ], "env": { "APPWRITE_PROJECT_ID": "your-project-id", "APPWRITE_API_KEY": "your-api-key", "APPWRITE_ENDPOINT": "https://.cloud.appwrite.io/v1" } } } } **Configuration:** * Replace `your-project-id` with your actual Appwrite project ID * Replace `your-api-key` with your Appwrite API key * Replace `` with your Appwrite Cloud region (e.g., `nyc`, `fra`) Add the docs server to your configuration: { "mcpServers": { "appwrite-docs": { "command": "npx", "args": [\ "mcp-remote",\ "https://mcp-for-docs.appwrite.io"\ ] } } } **Why do we use the `mcp-remote` package?** Unlike other IDEs, Claude Desktop only supports local (stdio) MCP servers and not remote servers. The `mcp-remote` package acts as a proxy to connect to the docs MCP server. ##### Enable other API MCP tools To enable additional API tools, learn more about [command-line arguments](https://appwrite.io/docs/tooling/mcp/api#command-line-arguments) . Restart the Claude Desktop app, click on the MCP tools button (at the bottom right section of the prompt input) and click on it to view available Appwrite MCP tools. ![Appwrite MCP tools](https://appwrite.io/images/docs/mcp/claude-desktop/claude-mcp-tools.png) ##### uvx ENOENT error In case you see a `uvx ENOENT` error, ensure that you either add `uvx` to the `PATH` environment variable on your system or use the full path to your `uvx` installation in the config file. Try out the following example prompts based on the MCP server you have configured: **Example prompts:** * `Create a new user in my Appwrite project` * `List all databases in my project` * `Show me the collections in my database` * `Create a new document in my collection` * `Delete a specific user by ID` **Example prompts:** * `How do I set up real-time subscriptions in Appwrite?` * `Show me how to authenticate users with OAuth` * `What are the best practices for database queries?` * `How do I implement file uploads with Appwrite Storage?` * `Show me an example of using Appwrite Functions` ![List users in Appwrite project](https://appwrite.io/images/docs/mcp/claude-desktop/claude-list-users.png) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Appwrite MCP and VS Code - Docs - Appwrite [Skip to content](https://appwrite.io/docs/tooling/mcp/vscode#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Learn how you can add the Appwrite MCP servers to GitHub Copilot Chat in VS Code to interact with both the Appwrite API and documentation. Before you begin, ensure you have the following **pre-requisites** installed on your system: [uv](https://docs.astral.sh/uv/getting-started/installation/) must be installed on your system. [Node.js](https://nodejs.org/en/download) and npm must be installed on your system. In VS Code, open the **Command Palette** (press `CTRL + Shift + P` on Windows or `CMD + Shift + P` on MacOS) and run the `MCP: Open User Configuration` command. Choose which MCP servers you want to configure: Update the `mcp.json` file to include the API server: { "servers": { "appwrite-api": { "command": "uvx", "args": [\ "mcp-server-appwrite",\ "--sites"\ ], "env": { "APPWRITE_PROJECT_ID": "your-project-id", "APPWRITE_API_KEY": "your-api-key", "APPWRITE_ENDPOINT": "https://.cloud.appwrite.io/v1" } } } } **Configuration:** * Replace `your-project-id` with your actual Appwrite project ID * Replace `your-api-key` with your Appwrite API key * Replace `` with your Appwrite Cloud region (e.g., `nyc`, `fra`) Update the `mcp.json` file to include the docs server: { "servers": { "appwrite-docs": { "url": "https://mcp-for-docs.appwrite.io", "type": "http" } } } Once you save the configuration, Copilot Chat will connect with the MCP server(s) and load all available tools. ##### Enable other API MCP tools To enable additional API tools, learn more about [command-line arguments](https://appwrite.io/docs/tooling/mcp/api#command-line-arguments) . Open **Copilot Chat** in VS Code and switch to **Agent Mode** to test your MCP integrations. You can try out the following example prompts based on the MCP server you have configured: **Example prompts:** * `Create a new user in my Appwrite project` * `List all databases in my project` * `Show me the collections in my database` * `Create a new document in my collection` * `Delete a specific user by ID` **Example prompts:** * `How do I set up real-time subscriptions in Appwrite?` * `Show me how to authenticate users with OAuth` * `What are the best practices for database queries?` * `How do I implement file uploads with Appwrite Storage?` * `Show me an example of using Appwrite Functions` ![Search for portfolio site in Appwrite project](https://appwrite.io/images/docs/mcp/vscode/copilot-chat.png) ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Migrations - Docs - Appwrite [Skip to content](https://appwrite.io/docs/advanced/migrations#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) If you're looking to migrate existing projects to Appwrite, Migrations can help you make the move more quickly. You can move your app from Firebase, Supabase, Nhost, and even move between self-hosted and Cloud projects using Migrations. You can also use Migrations to move between two self-hosted instances or even to duplicate projects on the same instance. Migrations will automatically move accounts, database rows, and storage files from one source to another. [Sources](https://appwrite.io/docs/advanced/migrations#sources) ---------------------------------------------------------------- Appwrite supports multiple source destinations for migrating your data. You can transfer data from these sources to a new or existing Appwrite project. Resources marked as 'enabled' are migrated automatically. Resources marked as 'partial' can be migrated but with limitations or caveats; please refer to the guide for each source to learn more. Resources marked as 'manual' require manual migration. | Source | Users | Databases | Documents | Files | Functions | | --- | --- | --- | --- | --- | --- | | [Firebase](https://appwrite.io/docs/advanced/migrations/firebase) | enabled | enabled | partial | enabled | manual | | [Supabase](https://appwrite.io/docs/advanced/migrations/supabase) | enabled | enabled | partial | enabled | manual | | [Nhost](https://appwrite.io/docs/advanced/migrations/nhost) | enabled | enabled | partial | enabled | manual | | [Cloud](https://appwrite.io/docs/advanced/migrations/cloud) | enabled | enabled | enabled | enabled | enabled | | [Self hosted](https://appwrite.io/docs/advanced/migrations/self-hosted) | enabled | enabled | enabled | enabled | enabled | [Limitations](https://appwrite.io/docs/advanced/migrations#limitations) ------------------------------------------------------------------------ Migrations cannot transfer all data perfectly, so certain fields, such as `$createdAt` and `$updatedAt`, may not be transferred. More information can be found on the migration page for each source. Migrations help you jump-start your move, but because each product is unique, complex databases and product unique features like functions might need to be migrated manually. We also recommend you carefully **validate permissions and data integrity** when moving between platforms. [Charges](https://appwrite.io/docs/advanced/migrations#charges) ---------------------------------------------------------------- When you migrate data from another source to Appwrite Cloud, the resource usage during the migration will not count towards your Appwrite Cloud usage charges. However, your source vendor may have data transfer charges. The same is true for moving data between self-hosted Appwrite instances hosted on different cloud providers. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Migrate from Cloud - Docs - Appwrite [Skip to content](https://appwrite.io/docs/advanced/migrations/cloud#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Migrations make it as easy as a couple of clicks to move all your Appwrite Cloud data into a self-hosted instance. 1. Data transferred by migrations will reset `$createdAt` and `$updatedAt` timestamps to the date of the migration. 2. Your self-hosted Appwrite project must be accessible from the internet for the migration to work. 3. Migrations are non-destructive. No data will be deleted or lost in the source project. To begin migrating to self-hosted, make sure to read the [migration overview](https://appwrite.io/docs/advanced/migrations) and [things to keep in mind](https://appwrite.io/docs/advanced/migrations/cloud#notices) sections above. 1. Navigate to your Cloud project's console, navigate to **Settings** and click on the **Migrations** tab. 2. Under **Export to self-hosted instance**, click **Export data**. 3. You will complete the migration on your self-hosted instance. 1. Once redirected to your self-hosted project, you'll be prompted to select an organization and a project. You can migrate to an existing project or create a new one. 2. Select the data you wish to migrate. You can choose among accounts, databases, rows, files, and functions. 3. Click **Start Migration** to start the migration process. You do not need to keep the Appwrite Console open through the process. ##### Keep in mind Your self-hosted instance will generate an API Key in the background to pass to Appwrite Cloud. You can revoke this key after the migration process is complete. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Sites API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/client-web/sites#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Sites service allows you to host, deploy and manage web applications directly within the Appwrite platform. You can use this service to create and manage sites, handle deployments, configure domains, and set up environment variables. Sites supports both static and server-side rendered (SSR) websites. Static sites are pre-built and served as-is, while SSR sites generate content dynamically for each request. The service automatically handles SSL certificates, provides unique domains for each site, and allows custom domain configuration. Each deployed site benefits from a global CDN with strategic edge locations as well as advanced security features offered by [Appwrite Network](https://appwrite.io/docs/products/network) . Site deployments can be configured with custom environment variables, build settings, and timeouts. You can deploy sites manually or set up automatic deployments from Git repositories for continuous integration and delivery. You can find more information on how to build and deploy a web app in the [Sites product pages](https://appwrite.io/docs/products/sites) . https://.cloud.appwrite.io/v1 ##### No endpoint found for this version and platform Please switch to a newer version or different platform. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Messaging API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/client-web/messaging#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Messaging helps you communicate with your users through push notifications, emails, and SMS text messages. Sending personalized communication for marketing, updates, and realtime alerts can increase user engagement and retention. You can also use Appwrite Messaging to implement security checks and custom authentication flows. You can find guides and examples on using the Messaging API in the [Appwrite Messaging product pages](https://appwrite.io/docs/products/messaging) . https://.cloud.appwrite.io/v1 Create a new subscriber. * Request * Topic ID. The topic ID to subscribe to. * Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID. * Target ID. The target ID to link to the specified Topic ID. * Response * * [Subscriber](https://appwrite.io/docs/references/cloud/models/subscriber) POST /messaging/topics/{topicId}/subscribers import { Client, Messaging } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const messaging = new Messaging(client); const result = await messaging.createSubscriber({ topicId: '', subscriberId: '', targetId: '' }); console.log(result); Delete a subscriber by its unique ID. * Request * Topic ID. The topic ID subscribed to. * Subscriber ID. * Response DELETE /messaging/topics/{topicId}/subscribers/{subscriberId} import { Client, Messaging } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const messaging = new Messaging(client); const result = await messaging.deleteSubscriber({ topicId: '', subscriberId: '' }); console.log(result); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Tokens API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/client-web/tokens#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Tokens service allows you to create, manage, and validate file tokens for your storage files. These tokens provide a way to grant temporary, controlled access to files without requiring user authentication or exposing sensitive permissions. File tokens are particularly useful when you need to share access to private storage files with unauthenticated users or services for a limited time period. Each token is linked to a specific file and can be configured with an expiry date to ensure access is only granted for the necessary duration. You can use tokens to generate secure URLs to view, preview, or download files. The Tokens service provides endpoints to create, list, retrieve, update, and delete tokens, giving you complete control over file access management. For more detailed information about using file tokens in your application, refer to the [File tokens documentation](https://appwrite.io/docs/products/storage/file-tokens) . https://.cloud.appwrite.io/v1 ##### No endpoint found for this version and platform Please switch to a newer version or different platform. ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Avatars API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/client-web/avatars#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars. The Avatars service allows you to fetch country flags, browser icons, payment methods logos, remote websites favicons, generate QR codes, and manipulate remote image URLs. All endpoints in this service allow you to resize, crop, and change the output image quality for maximum performance and visibility in your app. https://.cloud.appwrite.io/v1 You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings. When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. * Request * Browser Code. * Image width. Pass an integer between 0 to 2000. Defaults to 100. * Image height. Pass an integer between 0 to 2000. Defaults to 100. * Image quality. Pass an integer between 0 to 100. Defaults to keep existing image quality. * Response GET /avatars/browsers/{code} import { Client, Avatars, Browser } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getBrowser({ code: Browser.AvantBrowser, width: 0, // optional height: 0, // optional quality: -1 // optional }); console.log(result); You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. * Request * Country Code. ISO Alpha-2 country code format. * Image width. Pass an integer between 0 to 2000. Defaults to 100. * Image height. Pass an integer between 0 to 2000. Defaults to 100. * Image quality. Pass an integer between 0 to 100. Defaults to keep existing image quality. * Response GET /avatars/flags/{code} import { Client, Avatars, Flag } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getFlag({ code: Flag.Afghanistan, width: 0, // optional height: 0, // optional quality: -1 // optional }); console.log(result); The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. * Request * Credit Card Code. Possible values: amex, argencard, cabal, cencosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, unionpay, visa, mir, maestro, rupay. * Image width. Pass an integer between 0 to 2000. Defaults to 100. * Image height. Pass an integer between 0 to 2000. Defaults to 100. * Image quality. Pass an integer between 0 to 100. Defaults to keep existing image quality. * Response GET /avatars/credit-cards/{code} import { Client, Avatars, CreditCard } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getCreditCard({ code: CreditCard.AmericanExpress, width: 0, // optional height: 0, // optional quality: -1 // optional }); console.log(result); Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL. This endpoint does not follow HTTP redirects. * Request * Website URL which you want to fetch the favicon from. * Response GET /avatars/favicon import { Client, Avatars } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getFavicon({ url: 'https://example.com' }); console.log(result); Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol. When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px. This endpoint does not follow HTTP redirects. * Request * Image URL which you want to crop. * Resize preview image width, Pass an integer between 0 to 2000. Defaults to 400. * Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400. * Response GET /avatars/image import { Client, Avatars } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getImage({ url: 'https://example.com', width: 0, // optional height: 0 // optional }); console.log(result); Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. * Request * Plain text to be converted to QR code image. * QR code size. Pass an integer between 1 to 1000. Defaults to 400. * Margin from edge. Pass an integer between 0 to 10. Defaults to 1. * Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0. * Response GET /avatars/qr import { Client, Avatars } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getQR({ text: '', size: 1, // optional margin: 0, // optional download: false // optional }); console.log(result); Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned. You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials. When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. * Request * Full Name. When empty, current user name or email will be used. Max length: 128 chars. * Image width. Pass an integer between 0 to 2000. Defaults to 100. * Image height. Pass an integer between 0 to 2000. Defaults to 100. * Changes background color. By default a random color will be picked and stay will persistent to the given name. * Response GET /avatars/initials import { Client, Avatars } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getInitials({ name: '', // optional width: 0, // optional height: 0, // optional background: '' // optional }); console.log(result); Use this endpoint to capture a screenshot of any website URL. This endpoint uses a headless browser to render the webpage and capture it as an image. You can configure the browser viewport size, theme, user agent, geolocation, permissions, and more. Capture either just the viewport or the full page scroll. When width and height are specified, the image is resized accordingly. If both dimensions are 0, the API provides an image at original size. If dimensions are not specified, the default viewport size is 1280x720px. * Request * Website URL which you want to capture. * HTTP headers to send with the browser request. Defaults to empty. * Browser viewport width. Pass an integer between 1 to 1920. Defaults to 1280. * Browser viewport height. Pass an integer between 1 to 1080. Defaults to 720. * Browser scale factor. Pass a number between 0.1 to 3. Defaults to 1. * Browser theme. Pass "light" or "dark". Defaults to "light". * Custom user agent string. Defaults to browser default. * Capture full page scroll. Pass 0 for viewport only, or 1 for full page. Defaults to 0. * Browser locale (e.g., "en-US", "fr-FR"). Defaults to browser default. * IANA timezone identifier (e.g., "America/New\_York", "Europe/London"). Defaults to browser default. * Geolocation latitude. Pass a number between -90 to 90. Defaults to 0. * Geolocation longitude. Pass a number between -180 to 180. Defaults to 0. * Geolocation accuracy in meters. Pass a number between 0 to 100000. Defaults to 0. * Enable touch support. Pass 0 for no touch, or 1 for touch enabled. Defaults to 0. * Browser permissions to grant. Pass an array of permission names like \["geolocation", "camera", "microphone"\]. Defaults to empty. * Wait time in seconds before taking the screenshot. Pass an integer between 0 to 10. Defaults to 0. * Output image width. Pass 0 to use original width, or an integer between 1 to 2000. Defaults to 0 (original width). * Output image height. Pass 0 to use original height, or an integer between 1 to 2000. Defaults to 0 (original height). * Screenshot quality. Pass an integer between 0 to 100. Defaults to keep existing image quality. * Output format type (jpeg, jpg, png, gif and webp). * Response * Rate limits This endpoint is rate limited. You can only make a limited number of request to his endpoint within a specific time frame. The limit is applied for each unique limit key. | Time frame | Attempts | Key | | --- | --- | --- | | 60 minutes | 60 requests | URL + IP | [Learn more about rate limits](https://appwrite.io/docs/advanced/platform/rate-limits) GET /avatars/screenshots import { Client, Avatars, Theme, Timezone, Output } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const avatars = new Avatars(client); const result = avatars.getScreenshot({ url: 'https://example.com', headers: {}, // optional viewportWidth: 1, // optional viewportHeight: 1, // optional scale: 0.1, // optional theme: Theme.Light, // optional userAgent: '', // optional fullpage: false, // optional locale: '', // optional timezone: Timezone.AfricaAbidjan, // optional latitude: -90, // optional longitude: -180, // optional accuracy: 0, // optional touch: false, // optional permissions: [], // optional sleep: 0, // optional width: 0, // optional height: 0, // optional quality: -1, // optional output: Output.Jpg // optional }); console.log(result); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Locale API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/client-web/locale#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Locale service allows you to customize your app based on your users' location. Using this service, you can get your users' location, IP address, list of countries and continents names, phone codes, currencies, and more. Country codes returned follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. The user service supports multiple locales. This feature allows you to fetch countries and continents information in your app language. To switch locales, all you need to do is pass the 'X-Appwrite-Locale' header or set the 'setLocale' method using any of our available SDKs. [View here the list of available locales](https://github.com/appwrite/appwrite/blob/master/app/config/locale/codes.php) . https://.cloud.appwrite.io/v1 Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language. ([IP Geolocation by DB-IP](https://db-ip.com/) ) * Response * * [Locale](https://appwrite.io/docs/references/cloud/models/locale) GET /locale import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.get(); console.log(result); List of all continents. You can use the locale header to get the data in a supported language. * Response * * [Continents List](https://appwrite.io/docs/references/cloud/models/continentList) GET /locale/continents import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listContinents(); console.log(result); List of all countries. You can use the locale header to get the data in a supported language. * Response * * [Countries List](https://appwrite.io/docs/references/cloud/models/countryList) GET /locale/countries import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listCountries(); console.log(result); List of all countries phone codes. You can use the locale header to get the data in a supported language. * Response * * [Phones List](https://appwrite.io/docs/references/cloud/models/phoneList) GET /locale/countries/phones import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listCountriesPhones(); console.log(result); List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language. * Response * * [Currencies List](https://appwrite.io/docs/references/cloud/models/currencyList) GET /locale/currencies import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listCurrencies(); console.log(result); List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language. * Response * * [Countries List](https://appwrite.io/docs/references/cloud/models/countryList) GET /locale/countries/eu import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listCountriesEU(); console.log(result); List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language. * Response * * [Languages List](https://appwrite.io/docs/references/cloud/models/languageList) GET /locale/languages import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listLanguages(); console.log(result); List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) . * Response * * [Locale codes list](https://appwrite.io/docs/references/cloud/models/localeCodeList) GET /locale/codes import { Client, Locale } from "appwrite"; const client = new Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject(''); // Your project ID const locale = new Locale(client); const result = await locale.listCodes(); console.log(result); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Sites API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/server-nodejs/sites#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Sites service allows you to host, deploy and manage web applications directly within the Appwrite platform. You can use this service to create and manage sites, handle deployments, configure domains, and set up environment variables. Sites supports both static and server-side rendered (SSR) websites. Static sites are pre-built and served as-is, while SSR sites generate content dynamically for each request. The service automatically handles SSL certificates, provides unique domains for each site, and allows custom domain configuration. Each deployed site benefits from a global CDN with strategic edge locations as well as advanced security features offered by [Appwrite Network](https://appwrite.io/docs/products/network) . Site deployments can be configured with custom environment variables, build settings, and timeouts. You can deploy sites manually or set up automatic deployments from Git repositories for continuous integration and delivery. You can find more information on how to build and deploy a web app in the [Sites product pages](https://appwrite.io/docs/products/sites) . https://.cloud.appwrite.io/v1 Create a new site. * Request * Site 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. * Site name. Max length: 128 chars. * Sites framework. * Runtime to use during build step. * Is site enabled? When set to 'disabled', users cannot access the site but Server SDKs with and API key can still access the site. No data is lost when this is toggled. * When disabled, request logs will exclude logs and errors, and site responses will be slightly faster. * Maximum request time in seconds. * Install Command. * Build Command. * Output Directory for site. * Framework adapter defining rendering strategy. Allowed values are: static, ssr * Appwrite Installation ID for VCS (Version Control System) deployment. * Fallback file for single page application sites. * Repository ID of the repo linked to the site. * Production branch for the repo linked to the site. * Is the VCS (Version Control System) connection in silent mode for the repo linked to the site? In silent mode, comments will not be made on commits and pull requests. * Path to site code in the linked repo. * Framework specification for the site and builds. * Response * * [Site](https://appwrite.io/docs/references/cloud/models/site) POST /sites const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.create({ siteId: '', name: '', framework: sdk.Framework.Analog, buildRuntime: sdk.BuildRuntime.Node145, enabled: false, // optional logging: false, // optional timeout: 1, // optional installCommand: '', // optional buildCommand: '', // optional outputDirectory: '', // optional adapter: sdk.Adapter.Static, // optional installationId: '', // optional fallbackFile: '', // optional providerRepositoryId: '', // optional providerBranch: '', // optional providerSilentMode: false, // optional providerRootDirectory: '', // optional specification: '' // optional }); Get a site by its unique ID. * Request * Site ID. * Response * * [Site](https://appwrite.io/docs/references/cloud/models/site) GET /sites/{siteId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.get({ siteId: '' }); Get a list of all the project's sites. You can use the query params to filter your results. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, framework, deploymentId, buildCommand, installCommand, outputDirectory, installationId * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Sites List](https://appwrite.io/docs/references/cloud/models/siteList) GET /sites const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.list({ queries: [], // optional search: '', // optional total: false // optional }); Update site by its unique ID. * Request * Site ID. * Site name. Max length: 128 chars. * Sites framework. * Is site enabled? When set to 'disabled', users cannot access the site but Server SDKs with and API key can still access the site. No data is lost when this is toggled. * When disabled, request logs will exclude logs and errors, and site responses will be slightly faster. * Maximum request time in seconds. * Install Command. * Build Command. * Output Directory for site. * Runtime to use during build step. * Framework adapter defining rendering strategy. Allowed values are: static, ssr * Fallback file for single page application sites. * Appwrite Installation ID for VCS (Version Control System) deployment. * Repository ID of the repo linked to the site. * Production branch for the repo linked to the site. * Is the VCS (Version Control System) connection in silent mode for the repo linked to the site? In silent mode, comments will not be made on commits and pull requests. * Path to site code in the linked repo. * Framework specification for the site and builds. * Response * * [Site](https://appwrite.io/docs/references/cloud/models/site) PUT /sites/{siteId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.update({ siteId: '', name: '', framework: sdk.Framework.Analog, enabled: false, // optional logging: false, // optional timeout: 1, // optional installCommand: '', // optional buildCommand: '', // optional outputDirectory: '', // optional buildRuntime: sdk.BuildRuntime.Node145, // optional adapter: sdk.Adapter.Static, // optional fallbackFile: '', // optional installationId: '', // optional providerRepositoryId: '', // optional providerBranch: '', // optional providerSilentMode: false, // optional providerRootDirectory: '', // optional specification: '' // optional }); Update the site active deployment. Use this endpoint to switch the code deployment that should be used when visitor opens your site. * Request * Site ID. * Deployment ID. * Response * * [Site](https://appwrite.io/docs/references/cloud/models/site) PATCH /sites/{siteId}/deployment const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.updateSiteDeployment({ siteId: '', deploymentId: '' }); Delete a site by its unique ID. * Request * Site ID. * Response DELETE /sites/{siteId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.delete({ siteId: '' }); Get a list of all frameworks that are currently available on the server instance. * Response * * [Frameworks List](https://appwrite.io/docs/references/cloud/models/frameworkList) GET /sites/frameworks const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.listFrameworks(); List allowed site specifications for this instance. * Response * * [Specifications List](https://appwrite.io/docs/references/cloud/models/specificationList) GET /sites/specifications const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.listSpecifications(); Create a new site code deployment. Use this endpoint to upload a new version of your site code. To activate your newly uploaded code, you'll need to update the site's deployment to use your new deployment ID. * Request * Site ID. * 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. * Automatically activate the deployment when it is finished building. * Install Commands. * Build Commands. * Output Directory. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) POST /sites/{siteId}/deployments const sdk = require('node-appwrite'); const fs = require('fs'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.createDeployment({ siteId: '', code: InputFile.fromPath('/path/to/file', 'filename'), activate: false, installCommand: '', // optional buildCommand: '', // optional outputDirectory: '' // optional }); Create a new build for an existing site deployment. This endpoint allows you to rebuild a deployment with the updated site configuration, including its commands and output directory if they have been modified. The build process will be queued and executed asynchronously. The original deployment's code will be preserved and used for the new build. * Request * Site ID. * Deployment ID. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) POST /sites/{siteId}/deployments/duplicate const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.createDuplicateDeployment({ siteId: '', deploymentId: '' }); Create a deployment based on a template. Use this endpoint with combination of [listTemplates](https://appwrite.io/docs/products/sites/templates) to find the template details. * Request * Site ID. * Repository name of the template. * The name of the owner of the template. * Path to site code in the template repo. * Type for the reference provided. Can be commit, branch, or tag * Reference value, can be a commit hash, branch name, or release tag * Automatically activate the deployment when it is finished building. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) POST /sites/{siteId}/deployments/template const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.createTemplateDeployment({ siteId: '', repository: '', owner: '', rootDirectory: '', type: sdk.TemplateReferenceType.Branch, reference: '', activate: false // optional }); Create a deployment when a site is connected to VCS. This endpoint lets you create deployment from a branch, commit, or a tag. * Request * Site ID. * Type of reference passed. Allowed values are: branch, commit * VCS reference to create deployment from. Depending on type this can be: branch name, commit hash * Automatically activate the deployment when it is finished building. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) POST /sites/{siteId}/deployments/vcs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.createVcsDeployment({ siteId: '', type: sdk.VCSReferenceType.Branch, reference: '', activate: false // optional }); Get a site deployment by its unique ID. * Request * Site ID. * Deployment ID. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) GET /sites/{siteId}/deployments/{deploymentId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.getDeployment({ siteId: '', deploymentId: '' }); Get a site deployment content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. * Request * Site ID. * Deployment ID. * Deployment file to download. Can be: "source", "output". * Response GET /sites/{siteId}/deployments/{deploymentId}/download const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.getDeploymentDownload({ siteId: '', deploymentId: '', type: sdk.DeploymentDownloadType.Source // optional }); Get a list of all the site's code deployments. You can use the query params to filter your results. * Request * Site ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: buildSize, sourceSize, totalSize, buildDuration, status, activate, type * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Deployments List](https://appwrite.io/docs/references/cloud/models/deploymentList) GET /sites/{siteId}/deployments const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.listDeployments({ siteId: '', queries: [], // optional search: '', // optional total: false // optional }); Cancel an ongoing site deployment build. If the build is already in progress, it will be stopped and marked as canceled. If the build hasn't started yet, it will be marked as canceled without executing. You cannot cancel builds that have already completed (status 'ready') or failed. The response includes the final build status and details. * Request * Site ID. * Deployment ID. * Response * * [Deployment](https://appwrite.io/docs/references/cloud/models/deployment) PATCH /sites/{siteId}/deployments/{deploymentId}/status const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.updateDeploymentStatus({ siteId: '', deploymentId: '' }); Delete a site deployment by its unique ID. * Request * Site ID. * Deployment ID. * Response DELETE /sites/{siteId}/deployments/{deploymentId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.deleteDeployment({ siteId: '', deploymentId: '' }); Get a site request log by its unique ID. * Request * Site ID. * Log ID. * Response * * [Execution](https://appwrite.io/docs/references/cloud/models/execution) GET /sites/{siteId}/logs/{logId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.getLog({ siteId: '', logId: '' }); Get a list of all site logs. You can use the query params to filter your results. * Request * Site ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Executions List](https://appwrite.io/docs/references/cloud/models/executionList) GET /sites/{siteId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.listLogs({ siteId: '', queries: [], // optional total: false // optional }); Delete a site log by its unique ID. * Request * Site ID. * Log ID. * Response DELETE /sites/{siteId}/logs/{logId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.deleteLog({ siteId: '', logId: '' }); Create a new site variable. These variables can be accessed during build and runtime (server-side rendering) as environment variables. * Request * Site unique ID. * Variable key. Max length: 255 chars. * Variable value. Max length: 8192 chars. * Secret variables can be updated or deleted, but only sites can read them during build and runtime. * Response * * [Variable](https://appwrite.io/docs/references/cloud/models/variable) POST /sites/{siteId}/variables const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.createVariable({ siteId: '', key: '', value: '', secret: false // optional }); Get a variable by its unique ID. * Request * Site unique ID. * Variable unique ID. * Response * * [Variable](https://appwrite.io/docs/references/cloud/models/variable) GET /sites/{siteId}/variables/{variableId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.getVariable({ siteId: '', variableId: '' }); Get a list of all variables of a specific site. * Request * Site unique ID. * Response * * [Variables List](https://appwrite.io/docs/references/cloud/models/variableList) GET /sites/{siteId}/variables const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.listVariables({ siteId: '' }); Update variable by its unique ID. * Request * Site unique ID. * Variable unique ID. * Variable key. Max length: 255 chars. * Variable value. Max length: 8192 chars. * Secret variables can be updated or deleted, but only sites can read them during build and runtime. * Response * * [Variable](https://appwrite.io/docs/references/cloud/models/variable) PUT /sites/{siteId}/variables/{variableId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.updateVariable({ siteId: '', variableId: '', key: '', value: '', // optional secret: false // optional }); Delete a variable by its unique ID. * Request * Site unique ID. * Variable unique ID. * Response DELETE /sites/{siteId}/variables/{variableId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const sites = new sdk.Sites(client); const result = await sites.deleteVariable({ siteId: '', variableId: '' }); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Users API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/server-nodejs/users#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) The Users service allows you to manage your project users. Use this service to search, block, and view your users' info, current sessions, and latest activity logs. You can also use the Users service to edit your users' preferences and personal info. https://.cloud.appwrite.io/v1 Create a new user. * Request * 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. * User email. * Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212. * Plain text user password. Must be at least 8 chars. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.create({ userId: '', email: 'email@example.com', // optional phone: '+12065550100', // optional password: '', // optional name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using Argon2. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/argon2 const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createArgon2User({ userId: '', email: 'email@example.com', password: 'password', name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using Bcrypt. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/bcrypt const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createBcryptUser({ userId: '', email: 'email@example.com', password: 'password', name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using MD5. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/md5 const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createMD5User({ userId: '', email: 'email@example.com', password: 'password', name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using PHPass. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/phpass const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createPHPassUser({ userId: '', email: 'email@example.com', password: 'password', name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using Scrypt Modified. * Salt used to hash password. * Salt separator used to hash password. * Signer key used to hash password. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/scrypt-modified const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createScryptModifiedUser({ userId: '', email: 'email@example.com', password: 'password', passwordSalt: '', passwordSaltSeparator: '', passwordSignerKey: '', name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using Scrypt. * Optional salt used to hash password. * Optional CPU cost used to hash password. * Optional memory cost used to hash password. * Optional parallelization cost used to hash password. * Optional hash length used to hash password. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/scrypt const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createScryptUser({ userId: '', email: 'email@example.com', password: 'password', passwordSalt: '', passwordCpu: null, passwordMemory: null, passwordParallel: null, passwordLength: null, name: '' // optional }); 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. * Request * 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. * User email. * User password hashed using SHA. * 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' * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) POST /users/sha const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createSHAUser({ userId: '', email: 'email@example.com', password: 'password', passwordVersion: sdk.PasswordHash.Sha1, // optional name: '' // optional }); Get a user by its unique ID. * Request * User ID. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) GET /users/{userId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.get({ userId: '' }); Get the user preferences by its unique ID. * Request * User ID. * Response * * [Preferences](https://appwrite.io/docs/references/cloud/models/preferences) GET /users/{userId}/prefs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.getPrefs({ userId: '' }); Get a list of all the project's users. You can use the query params to filter your results. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification, labels * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Users List](https://appwrite.io/docs/references/cloud/models/userList) GET /users const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.list({ queries: [], // optional search: '', // optional total: false // optional }); Update the user email by its unique ID. * Request * User ID. * User email. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/email const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateEmail({ userId: '', email: 'email@example.com' }); Update the user email verification status by its unique ID. * Request * User ID. * User email verification status. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/verification const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateEmailVerification({ userId: '', emailVerification: false }); Enable or disable MFA on a user account. * Request * User ID. * Enable or disable MFA. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/mfa const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateMFA({ userId: '', mfa: false }); Enable or disable MFA on a user account. * Request * User ID. * Enable or disable MFA. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/mfa const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateMFA({ userId: '', mfa: false }); Update the user name by its unique ID. * Request * User ID. * User name. Max length: 128 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/name const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateName({ userId: '', name: '' }); Update the user password by its unique ID. * Request * User ID. * New user password. Must be at least 8 chars. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/password const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updatePassword({ userId: '', password: '' }); Update the user phone by its unique ID. * Request * User ID. * User phone number. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/phone const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updatePhone({ userId: '', number: '+12065550100' }); Update the user phone verification status by its unique ID. * Request * User ID. * User phone verification status. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/verification/phone const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updatePhoneVerification({ userId: '', phoneVerification: false }); Update the user labels by its unique ID. Labels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info. * Request * User ID. * Array of user labels. Replaces the previous labels. Maximum of 1000 labels are allowed, each up to 36 alphanumeric characters long. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PUT /users/{userId}/labels const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateLabels({ userId: '', labels: [] }); Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. * Request * User ID. * Prefs key-value JSON object. * Response * * [Preferences](https://appwrite.io/docs/references/cloud/models/preferences) PATCH /users/{userId}/prefs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updatePrefs({ userId: '', prefs: {} }); Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved. * Request * User ID. * User Status. To activate the user pass `true` and to block the user pass `false`. * Response * * [User](https://appwrite.io/docs/references/cloud/models/user) PATCH /users/{userId}/status const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateStatus({ userId: '', status: false }); Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead. * Request * User ID. * Response DELETE /users/{userId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.delete({ userId: '' }); Create a messaging target. * Request * User ID. * 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. * The target provider type. Can be one of the following: `email`, `sms` or `push`. * The target identifier (token, email, phone etc.) * 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. * Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23. * Response * * [Target](https://appwrite.io/docs/references/cloud/models/target) POST /users/{userId}/targets const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createTarget({ userId: '', targetId: '', providerType: sdk.MessagingProviderType.Email, identifier: '', providerId: '', // optional name: '' // optional }); Get a user's push notification target by ID. * Request * User ID. * Target ID. * Response * * [Target](https://appwrite.io/docs/references/cloud/models/target) GET /users/{userId}/targets/{targetId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.getTarget({ userId: '', targetId: '' }); List the messaging targets that are associated with a user. * Request * User ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Target list](https://appwrite.io/docs/references/cloud/models/targetList) GET /users/{userId}/targets const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listTargets({ userId: '', queries: [], // optional total: false // optional }); Update a messaging target. * Request * User ID. * Target ID. * The target identifier (token, email, phone etc.) * 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. * Target name. Max length: 128 chars. For example: My Awesome App Galaxy S23. * Response * * [Target](https://appwrite.io/docs/references/cloud/models/target) PATCH /users/{userId}/targets/{targetId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateTarget({ userId: '', targetId: '', identifier: '', // optional providerId: '', // optional name: '' // optional }); Delete a messaging target. * Request * User ID. * Target ID. * Response DELETE /users/{userId}/targets/{targetId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteTarget({ userId: '', targetId: '' }); 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. * Request * 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. * Response * * [Session](https://appwrite.io/docs/references/cloud/models/session) POST /users/{userId}/sessions const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createSession({ userId: '' }); Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. * Request * User ID. * Token length in characters. The default length is 6 characters * Token expiration period in seconds. The default expiration is 15 minutes. * Response * * [Token](https://appwrite.io/docs/references/cloud/models/token) POST /users/{userId}/tokens const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createToken({ userId: '', length: 4, // optional expire: 60 // optional }); Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted. * Request * User ID. * Session ID. Use the string 'recent' to use the most recent session. Defaults to the most recent session. * Time in seconds before JWT expires. Default duration is 900 seconds, and maximum is 3600 seconds. * Response * * [JWT](https://appwrite.io/docs/references/cloud/models/jwt) POST /users/{userId}/jwts const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createJWT({ userId: '', sessionId: '', // optional duration: 0 // optional }); Get the user sessions list by its unique ID. * Request * User ID. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Sessions List](https://appwrite.io/docs/references/cloud/models/sessionList) GET /users/{userId}/sessions const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listSessions({ userId: '', total: false // optional }); Delete a user sessions by its unique ID. * Request * User ID. * Session ID. * Response DELETE /users/{userId}/sessions/{sessionId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteSession({ userId: '', sessionId: '' }); Delete all user's sessions by using the user's unique ID. * Request * User ID. * Response DELETE /users/{userId}/sessions const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteSessions({ userId: '' }); Get the user membership list by its unique ID. * Request * User ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm, roles * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Memberships List](https://appwrite.io/docs/references/cloud/models/membershipList) GET /users/{userId}/memberships const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listMemberships({ userId: '', queries: [], // optional search: '', // optional total: false // optional }); Get the user activity logs list by its unique ID. * Request * User ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Only supported methods are limit and offset * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Logs List](https://appwrite.io/docs/references/cloud/models/logList) GET /users/{userId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listLogs({ userId: '', queries: [], // optional total: false // optional }); Get identities for all users. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, provider, providerUid, providerEmail, providerAccessTokenExpiry * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Identities List](https://appwrite.io/docs/references/cloud/models/identityList) GET /users/identities const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listIdentities({ queries: [], // optional search: '', // optional total: false // optional }); Delete an identity by its unique ID. * Request * Identity ID. * Response DELETE /users/identities/{identityId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteIdentity({ identityId: '' }); Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](https://appwrite.io/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) PATCH /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createMFARecoveryCodes({ userId: '' }); Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](https://appwrite.io/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) PATCH /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.createMFARecoveryCodes({ userId: '' }); Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](https://appwrite.io/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) GET /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.getMFARecoveryCodes({ userId: '' }); Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](https://appwrite.io/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) GET /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.getMFARecoveryCodes({ userId: '' }); List the factors available on the account to be used as a MFA challange. * Request * User ID. * Response * * [MFAFactors](https://appwrite.io/docs/references/cloud/models/mfaFactors) GET /users/{userId}/mfa/factors const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listMFAFactors({ userId: '' }); List the factors available on the account to be used as a MFA challange. * Request * User ID. * Response * * [MFAFactors](https://appwrite.io/docs/references/cloud/models/mfaFactors) GET /users/{userId}/mfa/factors const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.listMFAFactors({ userId: '' }); Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](https://appwrite.io/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) PUT /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateMFARecoveryCodes({ userId: '' }); Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](https://appwrite.io/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. * Request * User ID. * Response * * [MFA Recovery Codes](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes) PUT /users/{userId}/mfa/recovery-codes const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.updateMFARecoveryCodes({ userId: '' }); Delete an authenticator app. * Request * User ID. * Type of authenticator. * Response DELETE /users/{userId}/mfa/authenticators/{type} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteMFAAuthenticator({ userId: '', type: sdk.AuthenticatorType.Totp }); Delete an authenticator app. * Request * User ID. * Type of authenticator. * Response DELETE /users/{userId}/mfa/authenticators/{type} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const users = new sdk.Users(client); const result = await users.deleteMFAAuthenticator({ userId: '', type: sdk.AuthenticatorType.Totp }); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Team - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/team#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/team#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Team ID. | | $createdAt | string | Team creation date in ISO 8601 format. | | $updatedAt | string | Team update date in ISO 8601 format. | | name | string | Team name. | | total | integer | Total number of team members. | | prefs | object | Team preferences as a key-value object

Can be one of:

[Preferences model](https://appwrite.io/docs/references/1.8.x/models/preferences) | ### [Example](https://appwrite.io/docs/references/cloud/models/team#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "VIP", "total": 7, "prefs": { "theme": "pink", "timezone": "UTC" } } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "VIP", "total": 7, "prefs": { "theme": "pink", "timezone": "UTC" } } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Document - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/document#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/document#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Document ID. | | $sequence | integer | Document automatically incrementing ID. | | $collectionId | string | Collection ID. | | $databaseId | string | Database ID. | | $createdAt | string | Document creation date in ISO 8601 format. | | $updatedAt | string | Document update date in ISO 8601 format. | | $permissions | array | Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)
. | ### [Example](https://appwrite.io/docs/references/cloud/models/document#example) { "$id": "5e5ea5c16897e", "$sequence": 1, "$collectionId": "5e5ea5c15117e", "$databaseId": "5e5ea5c15117e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "$permissions": [\ "read(\"any\")"\ ], "username": "john.doe", "email": "john.doe@example.com", "fullName": "John Doe", "age": 30, "isAdmin": false } { "_id": "5e5ea5c16897e", "_sequence": 1, "_collectionId": "5e5ea5c15117e", "_databaseId": "5e5ea5c15117e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "_permissions": [\ "read(\"any\")"\ ], "username": "john.doe", "email": "john.doe@example.com", "fullName": "John Doe", "age": 30, "isAdmin": false } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Messaging API Reference - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/server-nodejs/messaging#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) Appwrite Messaging helps you communicate with your users through push notifications, emails, and SMS text messages. Sending personalized communication for marketing, updates, and realtime alerts can increase user engagement and retention. You can also use Appwrite Messaging to implement security checks and custom authentication flows. You can find guides and examples on using the Messaging API in the [Appwrite Messaging product pages](https://appwrite.io/docs/products/messaging) . https://.cloud.appwrite.io/v1 Create a new Apple Push Notification service provider. * Request * 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. * Provider name. * APNS authentication key. * APNS authentication key ID. * APNS team ID. * APNS bundle ID. * Use APNS sandbox environment. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/apns const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createAPNSProvider({ providerId: '', name: '', authKey: '', // optional authKeyId: '', // optional teamId: '', // optional bundleId: '', // optional sandbox: false, // optional enabled: false // optional }); Create a new Apple Push Notification service provider. * Request * 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. * Provider name. * APNS authentication key. * APNS authentication key ID. * APNS team ID. * APNS bundle ID. * Use APNS sandbox environment. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/apns const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createAPNSProvider({ providerId: '', name: '', authKey: '', // optional authKeyId: '', // optional teamId: '', // optional bundleId: '', // optional sandbox: false, // optional enabled: false // optional }); Create a new Firebase Cloud Messaging provider. * Request * 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. * Provider name. * FCM service account JSON. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/fcm const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createFCMProvider({ providerId: '', name: '', serviceAccountJSON: {}, // optional enabled: false // optional }); Create a new Firebase Cloud Messaging provider. * Request * 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. * Provider name. * FCM service account JSON. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/fcm const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createFCMProvider({ providerId: '', name: '', serviceAccountJSON: {}, // optional enabled: false // optional }); Create a new Mailgun provider. * Request * 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. * Provider name. * Mailgun API Key. * Mailgun Domain. * Set as EU region. * Sender Name. * Sender email address. * 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. * 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. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/mailgun const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createMailgunProvider({ providerId: '', name: '', apiKey: '', // optional domain: '', // optional isEuRegion: false, // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: 'email@example.com', // optional enabled: false // optional }); Create a new MSG91 provider. * Request * 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. * Provider name. * Msg91 template ID * Msg91 sender ID. * Msg91 auth key. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/msg91 const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createMsg91Provider({ providerId: '', name: '', templateId: '', // optional senderId: '', // optional authKey: '', // optional enabled: false // optional }); Create a new Resend provider. * Request * 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. * Provider name. * Resend API key. * Sender Name. * Sender email address. * Name set in the reply to field for the mail. Default value is sender name. * Email set in the reply to field for the mail. Default value is sender email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/resend const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createResendProvider({ providerId: '', name: '', apiKey: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: 'email@example.com', // optional enabled: false // optional }); Create a new Sendgrid provider. * Request * 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. * Provider name. * Sendgrid API key. * Sender Name. * Sender email address. * Name set in the reply to field for the mail. Default value is sender name. * Email set in the reply to field for the mail. Default value is sender email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/sendgrid const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createSendgridProvider({ providerId: '', name: '', apiKey: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: 'email@example.com', // optional enabled: false // optional }); Create a new SMTP provider. * Request * 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. * Provider name. * 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. * The default SMTP server port. * Authentication username. * Authentication password. * Encryption type. Can be omitted, 'ssl', or 'tls' * Enable SMTP AutoTLS feature. * The value to use for the X-Mailer header. * Sender Name. * Sender email address. * Name set in the reply to field for the mail. Default value is sender name. * Email set in the reply to field for the mail. Default value is sender email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/smtp const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createSMTPProvider({ providerId: '', name: '', host: '', port: 1, // optional username: '', // optional password: '', // optional encryption: sdk.SmtpEncryption.None, // optional autoTLS: false, // optional mailer: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: 'email@example.com', // optional enabled: false // optional }); Create a new SMTP provider. * Request * 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. * Provider name. * 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. * The default SMTP server port. * Authentication username. * Authentication password. * Encryption type. Can be omitted, 'ssl', or 'tls' * Enable SMTP AutoTLS feature. * The value to use for the X-Mailer header. * Sender Name. * Sender email address. * Name set in the reply to field for the mail. Default value is sender name. * Email set in the reply to field for the mail. Default value is sender email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/smtp const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createSMTPProvider({ providerId: '', name: '', host: '', port: 1, // optional username: '', // optional password: '', // optional encryption: sdk.SmtpEncryption.None, // optional autoTLS: false, // optional mailer: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: 'email@example.com', // optional enabled: false // optional }); Create a new Telesign provider. * Request * 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. * Provider name. * Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212. * Telesign customer ID. * Telesign API key. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/telesign const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createTelesignProvider({ providerId: '', name: '', from: '+12065550100', // optional customerId: '', // optional apiKey: '', // optional enabled: false // optional }); Create a new Textmagic provider. * Request * 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. * Provider name. * Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212. * Textmagic username. * Textmagic apiKey. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/textmagic const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createTextmagicProvider({ providerId: '', name: '', from: '+12065550100', // optional username: '', // optional apiKey: '', // optional enabled: false // optional }); Create a new Twilio provider. * Request * 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. * Provider name. * Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212. * Twilio account secret ID. * Twilio authentication token. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/twilio const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createTwilioProvider({ providerId: '', name: '', from: '+12065550100', // optional accountSid: '', // optional authToken: '', // optional enabled: false // optional }); Create a new Vonage provider. * Request * 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. * Provider name. * Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212. * Vonage API key. * Vonage API secret. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) POST /messaging/providers/vonage const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createVonageProvider({ providerId: '', name: '', from: '+12065550100', // optional apiKey: '', // optional apiSecret: '', // optional enabled: false // optional }); Get a provider by its unique ID. * Request * Provider ID. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) GET /messaging/providers/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.getProvider({ providerId: '' }); Get the provider activity logs listed by its unique ID. * Request * Provider ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Only supported methods are limit and offset * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Logs List](https://appwrite.io/docs/references/cloud/models/logList) GET /messaging/providers/{providerId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listProviderLogs({ providerId: '', queries: [], // optional total: false // optional }); Get a list of all providers from the current Appwrite project. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Provider list](https://appwrite.io/docs/references/cloud/models/providerList) GET /messaging/providers const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listProviders({ queries: [], // optional search: '', // optional total: false // optional }); Update a Apple Push Notification service provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * APNS authentication key. * APNS authentication key ID. * APNS team ID. * APNS bundle ID. * Use APNS sandbox environment. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/apns/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateAPNSProvider({ providerId: '', name: '', // optional enabled: false, // optional authKey: '', // optional authKeyId: '', // optional teamId: '', // optional bundleId: '', // optional sandbox: false // optional }); Update a Apple Push Notification service provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * APNS authentication key. * APNS authentication key ID. * APNS team ID. * APNS bundle ID. * Use APNS sandbox environment. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/apns/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateAPNSProvider({ providerId: '', name: '', // optional enabled: false, // optional authKey: '', // optional authKeyId: '', // optional teamId: '', // optional bundleId: '', // optional sandbox: false // optional }); Update a Firebase Cloud Messaging provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * FCM service account JSON. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/fcm/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateFCMProvider({ providerId: '', name: '', // optional enabled: false, // optional serviceAccountJSON: {} // optional }); Update a Firebase Cloud Messaging provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * FCM service account JSON. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/fcm/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateFCMProvider({ providerId: '', name: '', // optional enabled: false, // optional serviceAccountJSON: {} // optional }); Update a Mailgun provider by its unique ID. * Request * Provider ID. * Provider name. * Mailgun API Key. * Mailgun Domain. * Set as EU region. * Set as enabled. * Sender Name. * Sender email address. * Name set in the reply to field for the mail. Default value is sender name. * Email set in the reply to field for the mail. Default value is sender email. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/mailgun/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateMailgunProvider({ providerId: '', name: '', // optional apiKey: '', // optional domain: '', // optional isEuRegion: false, // optional enabled: false, // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: '' // optional }); Update a MSG91 provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Msg91 template ID. * Msg91 sender ID. * Msg91 auth key. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/msg91/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateMsg91Provider({ providerId: '', name: '', // optional enabled: false, // optional templateId: '', // optional senderId: '', // optional authKey: '' // optional }); Update a Resend provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Resend API key. * Sender Name. * Sender email address. * Name set in the Reply To field for the mail. Default value is Sender Name. * Email set in the Reply To field for the mail. Default value is Sender Email. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/resend/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateResendProvider({ providerId: '', name: '', // optional enabled: false, // optional apiKey: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: '' // optional }); Update a Sendgrid provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Sendgrid API key. * Sender Name. * Sender email address. * Name set in the Reply To field for the mail. Default value is Sender Name. * Email set in the Reply To field for the mail. Default value is Sender Email. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/sendgrid/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateSendgridProvider({ providerId: '', name: '', // optional enabled: false, // optional apiKey: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: '' // optional }); Update a SMTP provider by its unique ID. * Request * Provider ID. * Provider name. * 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. * SMTP port. * Authentication username. * Authentication password. * Encryption type. Can be 'ssl' or 'tls' * Enable SMTP AutoTLS feature. * The value to use for the X-Mailer header. * Sender Name. * Sender email address. * Name set in the Reply To field for the mail. Default value is Sender Name. * Email set in the Reply To field for the mail. Default value is Sender Email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/smtp/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateSMTPProvider({ providerId: '', name: '', // optional host: '', // optional port: 1, // optional username: '', // optional password: '', // optional encryption: sdk.SmtpEncryption.None, // optional autoTLS: false, // optional mailer: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: '', // optional enabled: false // optional }); Update a SMTP provider by its unique ID. * Request * Provider ID. * Provider name. * 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. * SMTP port. * Authentication username. * Authentication password. * Encryption type. Can be 'ssl' or 'tls' * Enable SMTP AutoTLS feature. * The value to use for the X-Mailer header. * Sender Name. * Sender email address. * Name set in the Reply To field for the mail. Default value is Sender Name. * Email set in the Reply To field for the mail. Default value is Sender Email. * Set as enabled. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/smtp/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateSMTPProvider({ providerId: '', name: '', // optional host: '', // optional port: 1, // optional username: '', // optional password: '', // optional encryption: sdk.SmtpEncryption.None, // optional autoTLS: false, // optional mailer: '', // optional fromName: '', // optional fromEmail: 'email@example.com', // optional replyToName: '', // optional replyToEmail: '', // optional enabled: false // optional }); Update a Telesign provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Telesign customer ID. * Telesign API key. * Sender number. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/telesign/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateTelesignProvider({ providerId: '', name: '', // optional enabled: false, // optional customerId: '', // optional apiKey: '', // optional from: '' // optional }); Update a Textmagic provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Textmagic username. * Textmagic apiKey. * Sender number. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/textmagic/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateTextmagicProvider({ providerId: '', name: '', // optional enabled: false, // optional username: '', // optional apiKey: '', // optional from: '' // optional }); Update a Twilio provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Twilio account secret ID. * Twilio authentication token. * Sender number. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/twilio/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateTwilioProvider({ providerId: '', name: '', // optional enabled: false, // optional accountSid: '', // optional authToken: '', // optional from: '' // optional }); Update a Vonage provider by its unique ID. * Request * Provider ID. * Provider name. * Set as enabled. * Vonage API key. * Vonage API secret. * Sender number. * Response * * [Provider](https://appwrite.io/docs/references/cloud/models/provider) PATCH /messaging/providers/vonage/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateVonageProvider({ providerId: '', name: '', // optional enabled: false, // optional apiKey: '', // optional apiSecret: '', // optional from: '' // optional }); Delete a provider by its unique ID. * Request * Provider ID. * Response DELETE /messaging/providers/{providerId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.deleteProvider({ providerId: '' }); Create a new topic. * Request * Topic ID. Choose a custom Topic ID or a new Topic ID. * Topic Name. * 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. * Response * * [Topic](https://appwrite.io/docs/references/cloud/models/topic) POST /messaging/topics const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createTopic({ topicId: '', name: '', subscribe: ["any"] // optional }); Get a topic by its unique ID. * Request * Topic ID. * Response * * [Topic](https://appwrite.io/docs/references/cloud/models/topic) GET /messaging/topics/{topicId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.getTopic({ topicId: '' }); Get the topic activity logs listed by its unique ID. * Request * Topic ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Only supported methods are limit and offset * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Logs List](https://appwrite.io/docs/references/cloud/models/logList) GET /messaging/topics/{topicId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listTopicLogs({ topicId: '', queries: [], // optional total: false // optional }); Get a list of all topics from the current Appwrite project. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Topic list](https://appwrite.io/docs/references/cloud/models/topicList) GET /messaging/topics const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listTopics({ queries: [], // optional search: '', // optional total: false // optional }); Update a topic by its unique ID. * Request * Topic ID. * Topic Name. * 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. * Response * * [Topic](https://appwrite.io/docs/references/cloud/models/topic) PATCH /messaging/topics/{topicId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateTopic({ topicId: '', name: '', // optional subscribe: ["any"] // optional }); Delete a topic by its unique ID. * Request * Topic ID. * Response DELETE /messaging/topics/{topicId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.deleteTopic({ topicId: '' }); Create a new subscriber. * Request * Topic ID. The topic ID to subscribe to. * Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID. * Target ID. The target ID to link to the specified Topic ID. * Response * * [Subscriber](https://appwrite.io/docs/references/cloud/models/subscriber) POST /messaging/topics/{topicId}/subscribers const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setJWT(''); // Your secret JSON Web Token const messaging = new sdk.Messaging(client); const result = await messaging.createSubscriber({ topicId: '', subscriberId: '', targetId: '' }); Get a subscriber by its unique ID. * Request * Topic ID. The topic ID subscribed to. * Subscriber ID. * Response * * [Subscriber](https://appwrite.io/docs/references/cloud/models/subscriber) GET /messaging/topics/{topicId}/subscribers/{subscriberId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.getSubscriber({ topicId: '', subscriberId: '' }); Get the subscriber activity logs listed by its unique ID. * Request * Subscriber ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Only supported methods are limit and offset * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Logs List](https://appwrite.io/docs/references/cloud/models/logList) GET /messaging/subscribers/{subscriberId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listSubscriberLogs({ subscriberId: '', queries: [], // optional total: false // optional }); Get a list of all subscribers from the current Appwrite project. * Request * Topic ID. The topic ID subscribed to. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Subscriber list](https://appwrite.io/docs/references/cloud/models/subscriberList) GET /messaging/topics/{topicId}/subscribers const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listSubscribers({ topicId: '', queries: [], // optional search: '', // optional total: false // optional }); Delete a subscriber by its unique ID. * Request * Topic ID. The topic ID subscribed to. * Subscriber ID. * Response DELETE /messaging/topics/{topicId}/subscribers/{subscriberId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setJWT(''); // Your secret JSON Web Token const messaging = new sdk.Messaging(client); const result = await messaging.deleteSubscriber({ topicId: '', subscriberId: '' }); Create a new email message. * Request * 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. * Email Subject. * Email Content. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Array of target IDs to be added as CC. * Array of target IDs to be added as BCC. * Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as :. * Is message a draft * Is content of type HTML * 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. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) POST /messaging/messages/email const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createEmail({ messageId: '', subject: '', content: '', topics: [], // optional users: [], // optional targets: [], // optional cc: [], // optional bcc: [], // optional attachments: [], // optional draft: false, // optional html: false, // optional scheduledAt: '' // optional }); Create a new push notification. * Request * 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. * Title for push notification. * Body for push notification. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Additional key-value pair data for push notification. * Action for push notification. * Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as :. * Icon for push notification. Available only for Android and Web Platform. * Sound for push notification. Available only for Android and iOS Platform. * Color for push notification. Available only for Android Platform. * Tag for push notification. Available only for Android Platform. * Badge for push notification. Available only for iOS Platform. * Is message a draft * 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. * If set to true, the notification will be delivered in the background. Available only for iOS Platform. * If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform. * Set the notification priority. "normal" will consider device state and may not deliver notifications immediately. "high" will always attempt to immediately deliver the notification. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) POST /messaging/messages/push const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint .setProject('') // Your project ID .setKey(''); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createPush({ messageId: '', title: '', // optional body: '<BODY>', // optional topics: [], // optional users: [], // optional targets: [], // optional data: {}, // optional action: '<ACTION>', // optional image: '<ID1:ID2>', // optional icon: '<ICON>', // optional sound: '<SOUND>', // optional color: '<COLOR>', // optional tag: '<TAG>', // optional badge: null, // optional draft: false, // optional scheduledAt: '', // optional contentAvailable: false, // optional critical: false, // optional priority: sdk.MessagePriority.Normal // optional }); Create a new SMS message. * Request * 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. * SMS Content. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Is message a draft * 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. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) POST /messaging/messages/sms const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createSMS({ messageId: '<MESSAGE_ID>', content: '<CONTENT>', topics: [], // optional users: [], // optional targets: [], // optional draft: false, // optional scheduledAt: '' // optional }); Create a new SMS message. * Request * 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. * SMS Content. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Is message a draft * 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. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) POST /messaging/messages/sms const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.createSMS({ messageId: '<MESSAGE_ID>', content: '<CONTENT>', topics: [], // optional users: [], // optional targets: [], // optional draft: false, // optional scheduledAt: '' // optional }); Get a message by its unique ID. * Request * Message ID. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) GET /messaging/messages/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.getMessage({ messageId: '<MESSAGE_ID>' }); Get a list of the targets associated with a message. * Request * Message ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Target list](https://appwrite.io/docs/references/cloud/models/targetList) GET /messaging/messages/{messageId}/targets const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listTargets({ messageId: '<MESSAGE_ID>', queries: [], // optional total: false // optional }); Get a list of all messages from the current Appwrite project. * Request * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType * Search term to filter your list results. Max length: 256 chars. * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Message list](https://appwrite.io/docs/references/cloud/models/messageList) GET /messaging/messages const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listMessages({ queries: [], // optional search: '<SEARCH>', // optional total: false // optional }); Update an email message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated. * Request * Message ID. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Email Subject. * Email Content. * Is message a draft * Is content of type HTML * Array of target IDs to be added as CC. * Array of target IDs to be added as BCC. * 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. * Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET\_ID>:<FILE\_ID>. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) PATCH /messaging/messages/email/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateEmail({ messageId: '<MESSAGE_ID>', topics: [], // optional users: [], // optional targets: [], // optional subject: '<SUBJECT>', // optional content: '<CONTENT>', // optional draft: false, // optional html: false, // optional cc: [], // optional bcc: [], // optional scheduledAt: '', // optional attachments: [] // optional }); Update a push notification by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated. * Request * Message ID. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Title for push notification. * Body for push notification. * Additional Data for push notification. * Action for push notification. * Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET\_ID>:<FILE\_ID>. * Icon for push notification. Available only for Android and Web platforms. * Sound for push notification. Available only for Android and iOS platforms. * Color for push notification. Available only for Android platforms. * Tag for push notification. Available only for Android platforms. * Badge for push notification. Available only for iOS platforms. * Is message a draft * 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. * If set to true, the notification will be delivered in the background. Available only for iOS Platform. * If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform. * Set the notification priority. "normal" will consider device battery state and may send notifications later. "high" will always attempt to immediately deliver the notification. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) PATCH /messaging/messages/push/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updatePush({ messageId: '<MESSAGE_ID>', topics: [], // optional users: [], // optional targets: [], // optional title: '<TITLE>', // optional body: '<BODY>', // optional data: {}, // optional action: '<ACTION>', // optional image: '<ID1:ID2>', // optional icon: '<ICON>', // optional sound: '<SOUND>', // optional color: '<COLOR>', // optional tag: '<TAG>', // optional badge: null, // optional draft: false, // optional scheduledAt: '', // optional contentAvailable: false, // optional critical: false, // optional priority: sdk.MessagePriority.Normal // optional }); Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated. * Request * Message ID. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Email Content. * Is message a draft * 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. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) PATCH /messaging/messages/sms/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateSMS({ messageId: '<MESSAGE_ID>', topics: [], // optional users: [], // optional targets: [], // optional content: '<CONTENT>', // optional draft: false, // optional scheduledAt: '' // optional }); Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated. * Request * Message ID. * List of Topic IDs. * List of User IDs. * List of Targets IDs. * Email Content. * Is message a draft * 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. * Response * * [Message](https://appwrite.io/docs/references/cloud/models/message) PATCH /messaging/messages/sms/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.updateSMS({ messageId: '<MESSAGE_ID>', topics: [], // optional users: [], // optional targets: [], // optional content: '<CONTENT>', // optional draft: false, // optional scheduledAt: '' // optional }); Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message. * Request * Message ID. * Response DELETE /messaging/messages/{messageId} const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.delete({ messageId: '<MESSAGE_ID>' }); Get the message activity logs listed by its unique ID. * Request * Message ID. * Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries) . Only supported methods are limit and offset * When set to false, the total count returned will be 0 and will not be calculated. * Response * * [Logs List](https://appwrite.io/docs/references/cloud/models/logList) GET /messaging/messages/{messageId}/logs const sdk = require('node-appwrite'); const client = new sdk.Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint .setProject('<YOUR_PROJECT_ID>') // Your project ID .setKey('<YOUR_API_KEY>'); // Your secret API key const messaging = new sdk.Messaging(client); const result = await messaging.listMessageLogs({ messageId: '<MESSAGE_ID>', queries: [], // optional total: false // optional }); ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Preferences - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/preferences#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/preferences#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | ### [Example](https://appwrite.io/docs/references/cloud/models/preferences#example) { "language": "en", "timezone": "UTC", "darkTheme": true } { "language": "en", "timezone": "UTC", "darkTheme": true } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Transaction - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/transaction#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/transaction#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Transaction ID. | | $createdAt | string | Transaction creation time in ISO 8601 format. | | $updatedAt | string | Transaction update date in ISO 8601 format. | | status | string | Current status of the transaction. One of: pending, committing, committed, rolled\_back, failed. | | operations | integer | Number of operations in the transaction. | | expiresAt | string | Expiration time in ISO 8601 format. | ### [Example](https://appwrite.io/docs/references/cloud/models/transaction#example) { "$id": "259125845563242502", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "status": "pending", "operations": 5, "expiresAt": "2020-10-15T06:38:00.000+00:00" } { "_id": "259125845563242502", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "status": "pending", "operations": 5, "expiresAt": "2020-10-15T06:38:00.000+00:00" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Token - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/token#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/token#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Token ID. | | $createdAt | string | Token creation date in ISO 8601 format. | | userId | string | User ID. | | secret | string | 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. | | expire | string | Token expiration date in ISO 8601 format. | | phrase | string | 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. | ### [Example](https://appwrite.io/docs/references/cloud/models/token#example) { "$id": "bb8ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5ea5c168bb8", "secret": "", "expire": "2020-10-15T06:38:00.000+00:00", "phrase": "Golden Fox" } { "_id": "bb8ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5ea5c168bb8", "secret": "", "expire": "2020-10-15T06:38:00.000+00:00", "phrase": "Golden Fox" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Documents List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/documentList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/documentList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of documents that matched your query. | | documents | array | List of documents.<br><br>Can be one of:<br><br>[Document model](https://appwrite.io/docs/references/1.8.x/models/document) | ### [Example](https://appwrite.io/docs/references/cloud/models/documentList#example) { "total": 5, "documents": "" } { "total": 5, "documents": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Memberships List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/membershipList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/membershipList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of memberships that matched your query. | | memberships | array | List of memberships.<br><br>Can be one of:<br><br>[Membership model](https://appwrite.io/docs/references/1.8.x/models/membership) | ### [Example](https://appwrite.io/docs/references/cloud/models/membershipList#example) { "total": 5, "memberships": "" } { "total": 5, "memberships": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Session - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/session#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/session#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Session ID. | | $createdAt | string | Session creation date in ISO 8601 format. | | $updatedAt | string | Session update date in ISO 8601 format. | | userId | string | User ID. | | expire | string | Session expiration date in ISO 8601 format. | | provider | string | Session Provider. | | providerUid | string | Session Provider User ID. | | providerAccessToken | string | Session Provider Access Token. | | providerAccessTokenExpiry | string | The date of when the access token expires in ISO 8601 format. | | providerRefreshToken | string | Session Provider Refresh Token. | | ip | string | IP in use when the session was created. | | osCode | string | Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json)<br>. | | osName | string | Operating system name. | | osVersion | string | Operating system version. | | clientType | string | Client type. | | clientCode | string | Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json)<br>. | | clientName | string | Client name. | | clientVersion | string | Client version. | | clientEngine | string | Client engine name. | | clientEngineVersion | string | Client engine name. | | deviceName | string | Device name. | | deviceBrand | string | Device brand name. | | deviceModel | string | Device model name. | | countryCode | string | Country two-character ISO 3166-1 alpha code. | | countryName | string | Country name. | | current | boolean | Returns true if this the current user session. | | factors | array | Returns a list of active session factors. | | secret | string | Secret used to authenticate the user. Only included if the request was made with an API key | | mfaUpdatedAt | string | Most recent date in ISO 8601 format when the session successfully passed MFA challenge. | ### [Example](https://appwrite.io/docs/references/cloud/models/session#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5bb8c16897e", "expire": "2020-10-15T06:38:00.000+00:00", "provider": "email", "providerUid": "user@example.com", "providerAccessToken": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3", "providerAccessTokenExpiry": "2020-10-15T06:38:00.000+00:00", "providerRefreshToken": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3", "ip": "127.0.0.1", "osCode": "Mac", "osName": "Mac", "osVersion": "Mac", "clientType": "browser", "clientCode": "CM", "clientName": "Chrome Mobile iOS", "clientVersion": "84.0", "clientEngine": "WebKit", "clientEngineVersion": "605.1.15", "deviceName": "smartphone", "deviceBrand": "Google", "deviceModel": "Nexus 5", "countryCode": "US", "countryName": "United States", "current": true, "factors": [\ "email"\ ], "secret": "5e5bb8c16897e", "mfaUpdatedAt": "2020-10-15T06:38:00.000+00:00" } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5bb8c16897e", "expire": "2020-10-15T06:38:00.000+00:00", "provider": "email", "providerUid": "user@example.com", "providerAccessToken": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3", "providerAccessTokenExpiry": "2020-10-15T06:38:00.000+00:00", "providerRefreshToken": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3", "ip": "127.0.0.1", "osCode": "Mac", "osName": "Mac", "osVersion": "Mac", "clientType": "browser", "clientCode": "CM", "clientName": "Chrome Mobile iOS", "clientVersion": "84.0", "clientEngine": "WebKit", "clientEngineVersion": "605.1.15", "deviceName": "smartphone", "deviceBrand": "Google", "deviceModel": "Nexus 5", "countryCode": "US", "countryName": "United States", "current": true, "factors": [\ "email"\ ], "secret": "5e5bb8c16897e", "mfaUpdatedAt": "2020-10-15T06:38:00.000+00:00" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Transaction List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/transactionList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/transactionList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of transactions that matched your query. | | transactions | array | List of transactions.<br><br>Can be one of:<br><br>[Transaction model](https://appwrite.io/docs/references/1.8.x/models/transaction) | ### [Example](https://appwrite.io/docs/references/cloud/models/transactionList#example) { "total": 5, "transactions": "" } { "total": 5, "transactions": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Locale - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/locale#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/locale#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | ip | string | User IP address. | | countryCode | string | Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1)<br> two-character format | | country | string | Country name. This field support localization. | | continentCode | string | 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. | | continent | string | Continent name. This field support localization. | | eu | boolean | True if country is part of the European Union. | | currency | string | Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217)<br> three-character format | ### [Example](https://appwrite.io/docs/references/cloud/models/locale#example) { "ip": "127.0.0.1", "countryCode": "US", "country": "United States", "continentCode": "NA", "continent": "North America", "eu": false, "currency": "USD" } { "ip": "127.0.0.1", "countryCode": "US", "country": "United States", "continentCode": "NA", "continent": "North America", "eu": false, "currency": "USD" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Rows List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/rowList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/rowList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of rows that matched your query. | | rows | array | List of rows.<br><br>Can be one of:<br><br>[Row model](https://appwrite.io/docs/references/1.8.x/models/row) | ### [Example](https://appwrite.io/docs/references/cloud/models/rowList#example) { "total": 5, "rows": "" } { "total": 5, "rows": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Subscriber - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/subscriber#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/subscriber#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Subscriber ID. | | $createdAt | string | Subscriber creation time in ISO 8601 format. | | $updatedAt | string | Subscriber update date in ISO 8601 format. | | targetId | string | Target ID. | | target | object | Target.<br><br>Can be one of:<br><br>[Target model](https://appwrite.io/docs/references/1.8.x/models/target) | | userId | string | Topic ID. | | userName | string | User Name. | | topicId | string | Topic ID. | | providerType | string | The target provider type. Can be one of the following: `email`, `sms` or `push`. | ### [Example](https://appwrite.io/docs/references/cloud/models/subscriber#example) { "$id": "259125845563242502", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "targetId": "259125845563242502", "target": { "$id": "259125845563242502", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "providerType": "email", "providerId": "259125845563242502", "name": "ageon-app-email", "identifier": "random-mail@email.org", "userId": "5e5ea5c16897e" }, "userId": "5e5ea5c16897e", "userName": "Aegon Targaryen", "topicId": "259125845563242502", "providerType": "email" } { "_id": "259125845563242502", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "targetId": "259125845563242502", "target": { "_id": "259125845563242502", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "providerType": "email", "providerId": "259125845563242502", "name": "ageon-app-email", "identifier": "random-mail@email.org", "userId": "5e5ea5c16897e" }, "userId": "5e5ea5c16897e", "userName": "Aegon Targaryen", "topicId": "259125845563242502", "providerType": "email" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Index - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/index#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/index#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Index ID. | | $createdAt | string | Index creation date in ISO 8601 format. | | $updatedAt | string | Index update date in ISO 8601 format. | | key | string | Index key. | | type | string | Index type. | | status | string | Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` | | error | string | Error message. Displays error generated on failure of creating or deleting an index. | | attributes | array | Index attributes. | | lengths | array | Index attributes length. | | orders | array | Index orders. | ### [Example](https://appwrite.io/docs/references/cloud/models/index#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "key": "index1", "type": "primary", "status": "available", "error": "string", "attributes": [], "lengths": [], "orders": [] } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "key": "index1", "type": "primary", "status": "available", "error": "string", "attributes": [], "lengths": [], "orders": [] } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Variable - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/variable#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/variable#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Variable ID. | | $createdAt | string | Variable creation date in ISO 8601 format. | | $updatedAt | string | Variable creation date in ISO 8601 format. | | key | string | Variable key. | | value | string | Variable value. | | secret | boolean | Variable secret flag. Secret variables can only be updated or deleted, but never read. | | resourceType | string | Service to which the variable belongs. Possible values are "project", "function" | | resourceId | string | 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. | ### [Example](https://appwrite.io/docs/references/cloud/models/variable#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "key": "API_KEY", "value": "myPa$$word1", "secret": false, "resourceType": "function", "resourceId": "myAwesomeFunction" } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "key": "API_KEY", "value": "myPa$$word1", "secret": false, "resourceType": "function", "resourceId": "myAwesomeFunction" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Provider - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/provider#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/provider#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Provider ID. | | $createdAt | string | Provider creation time in ISO 8601 format. | | $updatedAt | string | Provider update date in ISO 8601 format. | | name | string | The name for the provider instance. | | provider | string | The name of the provider service. | | enabled | boolean | Is provider enabled? | | type | string | Type of provider. | | credentials | object | Provider credentials. | | options | object | Provider options. | ### [Example](https://appwrite.io/docs/references/cloud/models/provider#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "Mailgun", "provider": "mailgun", "enabled": true, "type": "sms", "credentials": { "key": "123456789" }, "options": { "from": "sender-email@mydomain" } } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "Mailgun", "provider": "mailgun", "enabled": true, "type": "sms", "credentials": { "key": "123456789" }, "options": { "from": "sender-email@mydomain" } } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Deployment - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/deployment#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/deployment#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Deployment ID. | | $createdAt | string | Deployment creation date in ISO 8601 format. | | $updatedAt | string | Deployment update date in ISO 8601 format. | | type | string | Type of deployment. | | resourceId | string | Resource ID. | | resourceType | string | Resource type. | | entrypoint | string | The entrypoint file to use to execute the deployment code. | | sourceSize | integer | The code size in bytes. | | buildSize | integer | The build output size in bytes. | | totalSize | integer | The total size in bytes (source and build output). | | buildId | string | The current build ID. | | activate | boolean | Whether the deployment should be automatically activated. | | screenshotLight | string | Screenshot with light theme preference file ID. | | screenshotDark | string | Screenshot with dark theme preference file ID. | | status | string | The deployment status. Possible values are "waiting", "processing", "building", "ready", and "failed". | | buildLogs | string | The build logs. | | buildDuration | integer | The current build time in seconds. | | providerRepositoryName | string | The name of the vcs provider repository | | providerRepositoryOwner | string | The name of the vcs provider repository owner | | providerRepositoryUrl | string | The url of the vcs provider repository | | providerCommitHash | string | The commit hash of the vcs commit | | providerCommitAuthorUrl | string | The url of vcs commit author | | providerCommitAuthor | string | The name of vcs commit author | | providerCommitMessage | string | The commit message | | providerCommitUrl | string | The url of the vcs commit | | providerBranch | string | The branch of the vcs repository | | providerBranchUrl | string | The branch of the vcs repository | ### [Example](https://appwrite.io/docs/references/cloud/models/deployment#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "type": "vcs", "resourceId": "5e5ea6g16897e", "resourceType": "functions", "entrypoint": "index.js", "sourceSize": 128, "buildSize": 128, "totalSize": 128, "buildId": "5e5ea5c16897e", "activate": true, "screenshotLight": "5e5ea5c16897e", "screenshotDark": "5e5ea5c16897e", "status": "ready", "buildLogs": "Compiling source files...", "buildDuration": 128, "providerRepositoryName": "database", "providerRepositoryOwner": "utopia", "providerRepositoryUrl": "https://github.com/vermakhushboo/g4-node-function", "providerCommitHash": "7c3f25d", "providerCommitAuthorUrl": "https://github.com/vermakhushboo", "providerCommitAuthor": "Khushboo Verma", "providerCommitMessage": "Update index.js", "providerCommitUrl": "https://github.com/vermakhushboo/g4-node-function/commit/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb", "providerBranch": "0.7.x", "providerBranchUrl": "https://github.com/vermakhushboo/appwrite/tree/0.7.x" } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "type": "vcs", "resourceId": "5e5ea6g16897e", "resourceType": "functions", "entrypoint": "index.js", "sourceSize": 128, "buildSize": 128, "totalSize": 128, "buildId": "5e5ea5c16897e", "activate": true, "screenshotLight": "5e5ea5c16897e", "screenshotDark": "5e5ea5c16897e", "status": "ready", "buildLogs": "Compiling source files...", "buildDuration": 128, "providerRepositoryName": "database", "providerRepositoryOwner": "utopia", "providerRepositoryUrl": "https://github.com/vermakhushboo/g4-node-function", "providerCommitHash": "7c3f25d", "providerCommitAuthorUrl": "https://github.com/vermakhushboo", "providerCommitAuthor": "Khushboo Verma", "providerCommitMessage": "Update index.js", "providerCommitUrl": "https://github.com/vermakhushboo/g4-node-function/commit/60c0416257a9cbcdd96b2d370c38d8f8d150ccfb", "providerBranch": "0.7.x", "providerBranchUrl": "https://github.com/vermakhushboo/appwrite/tree/0.7.x" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Topic - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/topic#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/topic#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Topic ID. | | $createdAt | string | Topic creation time in ISO 8601 format. | | $updatedAt | string | Topic update date in ISO 8601 format. | | name | string | The name of the topic. | | emailTotal | integer | Total count of email subscribers subscribed to the topic. | | smsTotal | integer | Total count of SMS subscribers subscribed to the topic. | | pushTotal | integer | Total count of push subscribers subscribed to the topic. | | subscribe | array | Subscribe permissions. | ### [Example](https://appwrite.io/docs/references/cloud/models/topic#example) { "$id": "259125845563242502", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "events", "emailTotal": 100, "smsTotal": 100, "pushTotal": 100, "subscribe": "users" } { "_id": "259125845563242502", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "events", "emailTotal": 100, "smsTotal": 100, "pushTotal": 100, "subscribe": "users" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Continents List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/continentList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/continentList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of continents that matched your query. | | continents | array | List of continents.<br><br>Can be one of:<br><br>[Continent model](https://appwrite.io/docs/references/1.8.x/models/continent) | ### [Example](https://appwrite.io/docs/references/cloud/models/continentList#example) { "total": 5, "continents": "" } { "total": 5, "continents": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Function - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/function#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/function#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Function ID. | | $createdAt | string | Function creation date in ISO 8601 format. | | $updatedAt | string | Function update date in ISO 8601 format. | | execute | array | Execution permissions. | | name | string | Function name. | | enabled | boolean | Function enabled. | | live | boolean | 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. | | logging | boolean | When disabled, executions will exclude logs and errors, and will be slightly faster. | | runtime | string | Function execution and build runtime. | | deploymentId | string | Function's active deployment ID. | | deploymentCreatedAt | string | Active deployment creation date in ISO 8601 format. | | latestDeploymentId | string | Function's latest deployment ID. | | latestDeploymentCreatedAt | string | Latest deployment creation date in ISO 8601 format. | | latestDeploymentStatus | string | Status of latest deployment. Possible values are "waiting", "processing", "building", "ready", and "failed". | | scopes | array | Allowed permission scopes. | | vars | array | Function variables.<br><br>Can be one of:<br><br>[Variable model](https://appwrite.io/docs/references/1.8.x/models/variable) | | events | array | Function trigger events. | | schedule | string | Function execution schedule in CRON format. | | timeout | integer | Function execution timeout in seconds. | | entrypoint | string | The entrypoint file used to execute the deployment. | | commands | string | The build command used to build the deployment. | | version | string | Version of Open Runtimes used for the function. | | installationId | string | Function VCS (Version Control System) installation id. | | providerRepositoryId | string | VCS (Version Control System) Repository ID | | providerBranch | string | VCS (Version Control System) branch name | | providerRootDirectory | string | Path to function in VCS (Version Control System) repository | | providerSilentMode | boolean | 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 | | specification | string | Machine specification for builds and executions. | ### [Example](https://appwrite.io/docs/references/cloud/models/function#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "execute": "users", "name": "My Function", "enabled": false, "live": false, "logging": false, "runtime": "python-3.8", "deploymentId": "5e5ea5c16897e", "deploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentId": "5e5ea5c16897e", "latestDeploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentStatus": "ready", "scopes": "users.read", "vars": [], "events": "account.create", "schedule": "5 4 * * *", "timeout": 300, "entrypoint": "index.js", "commands": "npm install", "version": "v2", "installationId": "6m40at4ejk5h2u9s1hboo", "providerRepositoryId": "appwrite", "providerBranch": "main", "providerRootDirectory": "functions/helloWorld", "providerSilentMode": false, "specification": "s-1vcpu-512mb" } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "execute": "users", "name": "My Function", "enabled": false, "live": false, "logging": false, "runtime": "python-3.8", "deploymentId": "5e5ea5c16897e", "deploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentId": "5e5ea5c16897e", "latestDeploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentStatus": "ready", "scopes": "users.read", "vars": [], "events": "account.create", "schedule": "5 4 * * *", "timeout": 300, "entrypoint": "index.js", "commands": "npm install", "version": "v2", "installationId": "6m40at4ejk5h2u9s1hboo", "providerRepositoryId": "appwrite", "providerBranch": "main", "providerRootDirectory": "functions/helloWorld", "providerSilentMode": false, "specification": "s-1vcpu-512mb" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Specifications List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/specificationList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/specificationList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of specifications that matched your query. | | specifications | array | List of specifications.<br><br>Can be one of:<br><br>[Specification model](https://appwrite.io/docs/references/1.8.x/models/specification) | ### [Example](https://appwrite.io/docs/references/cloud/models/specificationList#example) { "total": 5, "specifications": "" } { "total": 5, "specifications": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Countries List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/countryList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/countryList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of countries that matched your query. | | countries | array | List of countries.<br><br>Can be one of:<br><br>[Country model](https://appwrite.io/docs/references/1.8.x/models/country) | ### [Example](https://appwrite.io/docs/references/cloud/models/countryList#example) { "total": 5, "countries": "" } { "total": 5, "countries": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Frameworks List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/frameworkList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/frameworkList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of frameworks that matched your query. | | frameworks | array | List of frameworks.<br><br>Can be one of:<br><br>[Framework model](https://appwrite.io/docs/references/1.8.x/models/framework) | ### [Example](https://appwrite.io/docs/references/cloud/models/frameworkList#example) { "total": 5, "frameworks": "" } { "total": 5, "frameworks": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Sites List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/siteList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/siteList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of sites that matched your query. | | sites | array | List of sites.<br><br>Can be one of:<br><br>[Site model](https://appwrite.io/docs/references/1.8.x/models/site) | ### [Example](https://appwrite.io/docs/references/cloud/models/siteList#example) { "total": 5, "sites": "" } { "total": 5, "sites": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Currencies List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/currencyList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/currencyList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of currencies that matched your query. | | currencies | array | List of currencies.<br><br>Can be one of:<br><br>[Currency model](https://appwrite.io/docs/references/1.8.x/models/currency) | ### [Example](https://appwrite.io/docs/references/cloud/models/currencyList#example) { "total": 5, "currencies": "" } { "total": 5, "currencies": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Phones List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/phoneList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/phoneList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of phones that matched your query. | | phones | array | List of phones.<br><br>Can be one of:<br><br>[Phone model](https://appwrite.io/docs/references/1.8.x/models/phone) | ### [Example](https://appwrite.io/docs/references/cloud/models/phoneList#example) { "total": 5, "phones": "" } { "total": 5, "phones": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # MFA Recovery Codes - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | recoveryCodes | array | Recovery codes. | ### [Example](https://appwrite.io/docs/references/cloud/models/mfaRecoveryCodes#example) { "recoveryCodes": [\ "a3kf0-s0cl2",\ "s0co1-as98s"\ ] } { "recoveryCodes": [\ "a3kf0-s0cl2",\ "s0co1-as98s"\ ] } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Target - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/target#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/target#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Target ID. | | $createdAt | string | Target creation time in ISO 8601 format. | | $updatedAt | string | Target update date in ISO 8601 format. | | name | string | Target Name. | | userId | string | User ID. | | providerId | string | Provider ID. | | providerType | string | The target provider type. Can be one of the following: `email`, `sms` or `push`. | | identifier | string | The target identifier. | | expired | boolean | Is the target expired. | ### [Example](https://appwrite.io/docs/references/cloud/models/target#example) { "$id": "259125845563242502", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "Apple iPhone 12", "userId": "259125845563242502", "providerId": "259125845563242502", "providerType": "email", "identifier": "token", "expired": false } { "_id": "259125845563242502", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "Apple iPhone 12", "userId": "259125845563242502", "providerId": "259125845563242502", "providerType": "email", "identifier": "token", "expired": false } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Deployments List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/deploymentList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/deploymentList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of deployments that matched your query. | | deployments | array | List of deployments.<br><br>Can be one of:<br><br>[Deployment model](https://appwrite.io/docs/references/1.8.x/models/deployment) | ### [Example](https://appwrite.io/docs/references/cloud/models/deploymentList#example) { "total": 5, "deployments": "" } { "total": 5, "deployments": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # JWT - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/jwt#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/jwt#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | jwt | string | JWT encoded string. | ### [Example](https://appwrite.io/docs/references/cloud/models/jwt#example) { "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } { "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Locale codes list - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/localeCodeList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/localeCodeList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of localeCodes that matched your query. | | localeCodes | array | List of localeCodes.<br><br>Can be one of:<br><br>[LocaleCode model](https://appwrite.io/docs/references/1.8.x/models/localeCode) | ### [Example](https://appwrite.io/docs/references/cloud/models/localeCodeList#example) { "total": 5, "localeCodes": "" } { "total": 5, "localeCodes": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Message - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/message#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/message#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Message ID. | | $createdAt | string | Message creation time in ISO 8601 format. | | $updatedAt | string | Message update date in ISO 8601 format. | | providerType | string | Message provider type. | | topics | array | Topic IDs set as recipients. | | users | array | User IDs set as recipients. | | targets | array | Target IDs set as recipients. | | scheduledAt | string | The scheduled time for message. | | deliveredAt | string | The time when the message was delivered. | | deliveryErrors | array | Delivery errors if any. | | deliveredTotal | integer | Number of recipients the message was delivered to. | | data | object | Data of the message. | | status | string | Status of delivery. | ### [Example](https://appwrite.io/docs/references/cloud/models/message#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "providerType": "email", "topics": [\ "5e5ea5c16897e"\ ], "users": [\ "5e5ea5c16897e"\ ], "targets": [\ "5e5ea5c16897e"\ ], "scheduledAt": "2020-10-15T06:38:00.000+00:00", "deliveredAt": "2020-10-15T06:38:00.000+00:00", "deliveryErrors": [\ "Failed to send message to target 5e5ea5c16897e: Credentials not valid."\ ], "deliveredTotal": 1, "data": { "subject": "Welcome to Appwrite", "content": "Hi there, welcome to Appwrite family." }, "status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed." } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "providerType": "email", "topics": [\ "5e5ea5c16897e"\ ], "users": [\ "5e5ea5c16897e"\ ], "targets": [\ "5e5ea5c16897e"\ ], "scheduledAt": "2020-10-15T06:38:00.000+00:00", "deliveredAt": "2020-10-15T06:38:00.000+00:00", "deliveryErrors": [\ "Failed to send message to target 5e5ea5c16897e: Credentials not valid."\ ], "deliveredTotal": 1, "data": { "subject": "Welcome to Appwrite", "content": "Hi there, welcome to Appwrite family." }, "status": "Message status can be one of the following: draft, processing, scheduled, sent, or failed." } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Target list - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/targetList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/targetList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of targets that matched your query. | | targets | array | List of targets.<br><br>Can be one of:<br><br>[Target model](https://appwrite.io/docs/references/1.8.x/models/target) | ### [Example](https://appwrite.io/docs/references/cloud/models/targetList#example) { "total": 5, "targets": "" } { "total": 5, "targets": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # MFAFactors - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/mfaFactors#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/mfaFactors#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | totp | boolean | Can TOTP be used for MFA challenge for this account. | | phone | boolean | Can phone (SMS) be used for MFA challenge for this account. | | email | boolean | Can email be used for MFA challenge for this account. | | recoveryCode | boolean | Can recovery code be used for MFA challenge for this account. | ### [Example](https://appwrite.io/docs/references/cloud/models/mfaFactors#example) { "totp": true, "phone": true, "email": true, "recoveryCode": true } { "totp": true, "phone": true, "email": true, "recoveryCode": true } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Site - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/site#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/site#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Site ID. | | $createdAt | string | Site creation date in ISO 8601 format. | | $updatedAt | string | Site update date in ISO 8601 format. | | name | string | Site name. | | enabled | boolean | Site enabled. | | live | boolean | Is the site 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 site to update it with the latest configuration. | | logging | boolean | When disabled, request logs will exclude logs and errors, and site responses will be slightly faster. | | framework | string | Site framework. | | deploymentId | string | Site's active deployment ID. | | deploymentCreatedAt | string | Active deployment creation date in ISO 8601 format. | | deploymentScreenshotLight | string | Screenshot of active deployment with light theme preference file ID. | | deploymentScreenshotDark | string | Screenshot of active deployment with dark theme preference file ID. | | latestDeploymentId | string | Site's latest deployment ID. | | latestDeploymentCreatedAt | string | Latest deployment creation date in ISO 8601 format. | | latestDeploymentStatus | string | Status of latest deployment. Possible values are "waiting", "processing", "building", "ready", and "failed". | | vars | array | Site variables.<br><br>Can be one of:<br><br>[Variable model](https://appwrite.io/docs/references/1.8.x/models/variable) | | timeout | integer | Site request timeout in seconds. | | installCommand | string | The install command used to install the site dependencies. | | buildCommand | string | The build command used to build the site. | | outputDirectory | string | The directory where the site build output is located. | | installationId | string | Site VCS (Version Control System) installation id. | | providerRepositoryId | string | VCS (Version Control System) Repository ID | | providerBranch | string | VCS (Version Control System) branch name | | providerRootDirectory | string | Path to site in VCS (Version Control System) repository | | providerSilentMode | boolean | 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 | | specification | string | Machine specification for builds and executions. | | buildRuntime | string | Site build runtime. | | adapter | string | Site framework adapter. | | fallbackFile | string | Name of fallback file to use instead of 404 page. If null, Appwrite 404 page will be displayed. | ### [Example](https://appwrite.io/docs/references/cloud/models/site#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "My Site", "enabled": false, "live": false, "logging": false, "framework": "react", "deploymentId": "5e5ea5c16897e", "deploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "deploymentScreenshotLight": "5e5ea5c16897e", "deploymentScreenshotDark": "5e5ea5c16897e", "latestDeploymentId": "5e5ea5c16897e", "latestDeploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentStatus": "ready", "vars": [], "timeout": 300, "installCommand": "npm install", "buildCommand": "npm run build", "outputDirectory": "build", "installationId": "6m40at4ejk5h2u9s1hboo", "providerRepositoryId": "appwrite", "providerBranch": "main", "providerRootDirectory": "sites/helloWorld", "providerSilentMode": false, "specification": "s-1vcpu-512mb", "buildRuntime": "node-22", "adapter": "static", "fallbackFile": "index.html" } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "name": "My Site", "enabled": false, "live": false, "logging": false, "framework": "react", "deploymentId": "5e5ea5c16897e", "deploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "deploymentScreenshotLight": "5e5ea5c16897e", "deploymentScreenshotDark": "5e5ea5c16897e", "latestDeploymentId": "5e5ea5c16897e", "latestDeploymentCreatedAt": "2020-10-15T06:38:00.000+00:00", "latestDeploymentStatus": "ready", "vars": [], "timeout": 300, "installCommand": "npm install", "buildCommand": "npm run build", "outputDirectory": "build", "installationId": "6m40at4ejk5h2u9s1hboo", "providerRepositoryId": "appwrite", "providerBranch": "main", "providerRootDirectory": "sites/helloWorld", "providerSilentMode": false, "specification": "s-1vcpu-512mb", "buildRuntime": "node-22", "adapter": "static", "fallbackFile": "index.html" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Sessions List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/sessionList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/sessionList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of sessions that matched your query. | | sessions | array | List of sessions.<br><br>Can be one of:<br><br>[Session model](https://appwrite.io/docs/references/1.8.x/models/session) | ### [Example](https://appwrite.io/docs/references/cloud/models/sessionList#example) { "total": 5, "sessions": "" } { "total": 5, "sessions": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Identities List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/identityList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/identityList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of identities that matched your query. | | identities | array | List of identities.<br><br>Can be one of:<br><br>[Identity model](https://appwrite.io/docs/references/1.8.x/models/identity) | ### [Example](https://appwrite.io/docs/references/cloud/models/identityList#example) { "total": 5, "identities": "" } { "total": 5, "identities": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Users List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/userList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/userList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of users that matched your query. | | users | array | List of users.<br><br>Can be one of:<br><br>[User model](https://appwrite.io/docs/references/1.8.x/models/user) | ### [Example](https://appwrite.io/docs/references/cloud/models/userList#example) { "total": 5, "users": "" } { "total": 5, "users": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Logs List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/logList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/logList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of logs that matched your query. | | logs | array | List of logs.<br><br>Can be one of:<br><br>[Log model](https://appwrite.io/docs/references/1.8.x/models/log) | ### [Example](https://appwrite.io/docs/references/cloud/models/logList#example) { "total": 5, "logs": "" } { "total": 5, "logs": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Database - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/database#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/database#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Database ID. | | name | string | Database name. | | $createdAt | string | Database creation date in ISO 8601 format. | | $updatedAt | string | Database update date in ISO 8601 format. | | enabled | boolean | 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. | | type | string | Database type. | ### [Example](https://appwrite.io/docs/references/cloud/models/database#example) { "$id": "5e5ea5c16897e", "name": "My Database", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "enabled": false, "type": "legacy" } { "_id": "5e5ea5c16897e", "name": "My Database", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "enabled": false, "type": "legacy" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Bucket - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/bucket#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/bucket#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Bucket ID. | | $createdAt | string | Bucket creation time in ISO 8601 format. | | $updatedAt | string | Bucket update date in ISO 8601 format. | | $permissions | array | Bucket permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)<br>. | | fileSecurity | boolean | Whether file-level security is enabled. [Learn more about permissions](https://appwrite.io/docs/permissions)<br>. | | name | string | Bucket name. | | enabled | boolean | Bucket enabled. | | maximumFileSize | integer | Maximum file size supported. | | allowedFileExtensions | array | Allowed file extensions. | | compression | string | Compression algorithm choosen for compression. Will be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip)<br>, or [zstd](https://en.wikipedia.org/wiki/Zstd)<br>. | | encryption | boolean | Bucket is encrypted. | | antivirus | boolean | Virus scanning is enabled. | | transformations | boolean | Image transformations are enabled. | ### [Example](https://appwrite.io/docs/references/cloud/models/bucket#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "$permissions": [\ "read(\"any\")"\ ], "fileSecurity": true, "name": "Documents", "enabled": false, "maximumFileSize": 100, "allowedFileExtensions": [\ "jpg",\ "png"\ ], "compression": "gzip", "encryption": false, "antivirus": false, "transformations": false } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "_permissions": [\ "read(\"any\")"\ ], "fileSecurity": true, "name": "Documents", "enabled": false, "maximumFileSize": 100, "allowedFileExtensions": [\ "jpg",\ "png"\ ], "compression": "gzip", "encryption": false, "antivirus": false, "transformations": false } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # File - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/file#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/file#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | File ID. | | bucketId | string | Bucket ID. | | $createdAt | string | File creation date in ISO 8601 format. | | $updatedAt | string | File update date in ISO 8601 format. | | $permissions | array | File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions)<br>. | | name | string | File name. | | signature | string | File MD5 signature. | | mimeType | string | File mime type. | | sizeOriginal | integer | File original size in bytes. | | chunksTotal | integer | Total number of chunks available | | chunksUploaded | integer | Total number of chunks uploaded | ### [Example](https://appwrite.io/docs/references/cloud/models/file#example) { "$id": "5e5ea5c16897e", "bucketId": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "$permissions": [\ "read(\"any\")"\ ], "name": "Pink.png", "signature": "5d529fd02b544198ae075bd57c1762bb", "mimeType": "image/png", "sizeOriginal": 17890, "chunksTotal": 17890, "chunksUploaded": 17890 } { "_id": "5e5ea5c16897e", "bucketId": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "_permissions": [\ "read(\"any\")"\ ], "name": "Pink.png", "signature": "5d529fd02b544198ae075bd57c1762bb", "mimeType": "image/png", "sizeOriginal": 17890, "chunksTotal": 17890, "chunksUploaded": 17890 } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Membership - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/membership#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/membership#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | $id | string | Membership ID. | | $createdAt | string | Membership creation date in ISO 8601 format. | | $updatedAt | string | Membership update date in ISO 8601 format. | | userId | string | User ID. | | userName | string | User name. Hide this attribute by toggling membership privacy in the Console. | | userEmail | string | User email address. Hide this attribute by toggling membership privacy in the Console. | | teamId | string | Team ID. | | teamName | string | Team name. | | invited | string | Date, the user has been invited to join the team in ISO 8601 format. | | joined | string | Date, the user has accepted the invitation to join the team in ISO 8601 format. | | confirm | boolean | User confirmation status, true if the user has joined the team or false otherwise. | | mfa | boolean | Multi factor authentication status, true if the user has MFA enabled or false otherwise. Hide this attribute by toggling membership privacy in the Console. | | roles | array | User list of roles | ### [Example](https://appwrite.io/docs/references/cloud/models/membership#example) { "$id": "5e5ea5c16897e", "$createdAt": "2020-10-15T06:38:00.000+00:00", "$updatedAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5ea5c16897e", "userName": "John Doe", "userEmail": "john@appwrite.io", "teamId": "5e5ea5c16897e", "teamName": "VIP", "invited": "2020-10-15T06:38:00.000+00:00", "joined": "2020-10-15T06:38:00.000+00:00", "confirm": false, "mfa": false, "roles": [\ "owner"\ ] } { "_id": "5e5ea5c16897e", "_createdAt": "2020-10-15T06:38:00.000+00:00", "_updatedAt": "2020-10-15T06:38:00.000+00:00", "userId": "5e5ea5c16897e", "userName": "John Doe", "userEmail": "john@appwrite.io", "teamId": "5e5ea5c16897e", "teamName": "VIP", "invited": "2020-10-15T06:38:00.000+00:00", "joined": "2020-10-15T06:38:00.000+00:00", "confirm": false, "mfa": false, "roles": [\ "owner"\ ] } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) --- # Executions List - Docs - Appwrite [Skip to content](https://appwrite.io/docs/references/cloud/models/executionList#main) [![appwrite](https://appwrite.io/images/logos/appwrite.svg) ![appwrite](https://appwrite.io/images/logos/appwrite-light.svg)](https://appwrite.io/) [Go to Console](https://cloud.appwrite.io/) ### [Properties](https://appwrite.io/docs/references/cloud/models/executionList#properties) | NAME | TYPE | DESCRIPTION | | --- | --- | --- | | total | integer | Total number of executions that matched your query. | | executions | array | List of executions.<br><br>Can be one of:<br><br>[Execution model](https://appwrite.io/docs/references/1.8.x/models/execution) | ### [Example](https://appwrite.io/docs/references/cloud/models/executionList#example) { "total": 5, "executions": "" } { "total": 5, "executions": "" } ###### Recommended * [API reference / Account](https://appwrite.io/docs/references/cloud/client-web/account) * [API reference / Teams](https://appwrite.io/docs/references/cloud/client-web/teams) * [API reference / Databases](https://appwrite.io/docs/references/cloud/client-web/databases) * [API reference / Storage](https://appwrite.io/docs/references/cloud/client-web/storage) ---