Appwrite (appwrite v1.0.0)
View SourceElixir SDK for the Appwrite backend-as-a-service platform.
Configuration
Add to your config/config.exs (or a per-environment config file):
config :appwrite,
project_id: System.get_env("APPWRITE_PROJECT_ID"),
secret: System.get_env("APPWRITE_SECRET"),
root_uri: System.get_env("APPWRITE_ENDPOINT", "https://cloud.appwrite.io/v1")For runtime configuration (recommended in production), use config/runtime.exs:
import Config
config :appwrite,
project_id: System.fetch_env!("APPWRITE_PROJECT_ID"),
secret: System.fetch_env!("APPWRITE_SECRET"),
root_uri: System.get_env("APPWRITE_ENDPOINT", "https://cloud.appwrite.io/v1")Services
| Module | Description |
|---|---|
Appwrite.Services.Accounts | User authentication and account management |
Appwrite.Services.Avatars | Avatars, flags, favicons, QR codes, screenshots |
Appwrite.Services.Database | Document database with transactions |
Appwrite.Services.Functions | Cloud function executions |
Appwrite.Services.GraphQL | GraphQL queries and mutations |
Appwrite.Services.Health | Server health checks |
Appwrite.Services.Locale | Locale, country, currency, and language data |
Appwrite.Services.Messaging | Push/SMS/email topic messaging |
Appwrite.Services.Sites | Hosted web application deployments |
Appwrite.Services.Storage | File storage and retrieval |
Appwrite.Services.TablesDB | Structured SQL-like table/row storage |
Appwrite.Services.Teams | Team and membership management |
Appwrite.Services.Tokens | File access token management |
Utilities
| Module | Description |
|---|---|
Appwrite.Utils.Query | Build query strings for filtering and pagination |
Appwrite.Utils.Permission | Generate permission strings |
Appwrite.Utils.Role | Generate role strings |
Appwrite.Utils.Id | Generate unique resource IDs |
Quick start
alias Appwrite.Services.Accounts
alias Appwrite.Utils.Id
alias Appwrite.Utils.Permission
alias Appwrite.Utils.Query
alias Appwrite.Utils.Role
# Create a user
{:ok, user} = Accounts.create(Id.unique(), "user@example.com", "password123")
# Email + password login
{:ok, session} = Accounts.create_email_password_session("user@example.com", "password123")
# List documents with a query
alias Appwrite.Services.Database
{:ok, docs} = Database.list_documents("db_id", "col_id", [
Query.equal("status", "active"),
Query.limit(20),
Query.order_desc("created_at")
])Error handling
All service functions return {:ok, map()} on success or {:error, reason} on
failure. Network and API errors are returned as Appwrite.Exceptions.AppwriteException
structs inside the {:error, ...} tuple.
case Accounts.get() do
{:ok, user} -> IO.inspect(user["name"])
{:error, %AppwriteException{code: 401}} -> IO.puts("Not logged in")
{:error, reason} -> IO.inspect(reason)
end