Changelog
View SourceAll notable changes to this project will be documented in this file. The format follows Keep a Changelog. This project adheres to Semantic Versioning.
1.0.0 — 2026-05-20
Breaking changes
Appwrite.Utils.General—generate_unique_id/0now uses Erlang's:crypto.strong_rand_bytes/1instead of the:uuidlibrary. The returned format is identical (UUID v4 string) but the:uuiddependency is no longer required. Remove{:uuid, …}from your deps if it was added solely for this SDK.Storage.create_file/5— thefileargument is now a map%{"name" => ..., "data" => binary, "type" => ..., "size" => ...}instead of a raw binary. See the updated@docfor details.Storage.get_file_preview/3— opts moved to a keyword list (third arg).- Filename
o-auth_provider.exrenamed tooauth_provider.ex(no functional change). - Filename
Id.exrenamed toid.ex(no functional change).
Added
Appwrite.Services.Sites— new service: site/deployment/variable/log management.Appwrite.Services.TablesDB— new service: table/column/row CRUD + upsert.Appwrite.Services.Tokens— new service: file access token management.Accounts.update_recovery/3— completes the password-reset flow (PUT /account/recovery).Accounts.create_jwt/1— now accepts optionaldurationparameter.Accounts.list_logs/2— now accepts optionaltotalparameter.Accounts.list_identities/2— now accepts optionaltotalparameter.Database.upsert_document/6— atomic create-or-update (PUTendpoint).Database.increment_document_attribute/7— atomic numeric increment.Database.decrement_document_attribute/7— atomic numeric decrement.- Full Transactions API:
create_transaction/1,get_transaction/1,list_transactions/1,update_transaction/3,delete_transaction/1,create_operations/2. - All five document CRUD functions now accept optional
transaction_id. Database.list_documents/6— newtotalandttlparameters.Storage.update_file/4— rename and re-permission files (PUTendpoint).Storage.get_file_download/3,get_file_view/3,get_file_preview/3— newtokenparameter for unauthenticated access via the Tokens API.Storage.list_files/4— newtotalparameter.Teams.list/3andTeams.list_memberships/4— newtotalparameter.Teams.update_name/2— preferred alias forTeams.update/2.Functions.list_executions/4— newtotalparameter.Avatars.get_screenshot/2— headless-browser screenshot endpoint (18 opts).config/runtime.exs— new file with production-safeSystem.fetch_env!config..credo.exs— strict Credo configuration..github/workflows/ci.yml— GitHub Actions CI pipeline (test + dialyzer).- Comprehensive unit test suite covering all utilities and constant modules.
Fixed
Accounts—create_verification/update_verificationpaths corrected from/account/verificationto/account/verifications/email.Accounts— phone verification paths corrected to/account/verifications/phone.Accounts— MFA challenge paths corrected from/mfa/challengeto/mfa/challenges(plural). All previous MFA flows silently returned 404.Accounts—update_mfa_challenge/2return type corrected toSession.t().Client— variable rebinding ofoptionsinprepare_request/4resolved.Client—call/5spec tightened fromany()tomap() | nil | binary().Storage—create_filepreviously passed raw binary aspayload["file"], whichClient.process_payloadwould coerce to a string via"#{value}", silently corrupting every upload. Now correctly builds the base64 map.GraphQL— single-function pipe|> handle_response()replaced with direct{:ok, Client.call(...)}wrapping (CredoSingleFunctionToBlockPipe).Health/Messaging— same single-function pipe pattern fixed.AppwriteException—@impl truecorrected to@impl Exception.Application—@impl truecorrected to@impl Application.TestingService.StorageService— hardcoded API key and project ID removed.- CRLF line endings stripped from all source files.
Removed
{:poison, "~> 6.0"}dependency — was never used; only Jason is needed.{:uuid, "~> 1.1"}dependency — replaced with stdlib:crypto.- Dead
handle_response/1private functions across multiple service files.
0.3.0 — 2026-05-19
Initial gap-fill release. See commit history for details.
0.2.1 — 2024-11-XX
Original release by Kanishka Naik.