Releases: appwrite/sdk-generator
Release list
3.0.0
Specification parsing moves to utopia-php/openapi. The in-repo parser under src/Spec is gone, and every language class and template now reads a canonical, immutable model instead of nested arrays.
The generated SDKs are unchanged. All 19 targets were generated from the same spec before and after the migration and compared: 16,716 files, byte-identical.
Why major
The parser was the public seam of this repository. Appwrite\Spec\Spec, Appwrite\Spec\OpenAPI3, Appwrite\Spec\Swagger2 and Appwrite\Spec\StaticSpec no longer exist, and anything embedding the generator or subclassing a Language sees a different shape:
- Twig templates receive DTOs (
Operation,Parameter,Schema) rather than arrays, somethod.namebecomesmethod | methodName,parameter.typebecomesparameter | schemaType, and so on. Language::getTypeName(),getParamDefault()andgetParamExample()takeSchema|Parameterinstead ofarray.- A schema is a typed class per kind —
ObjectSchema,ArraySchema,CompositeSchema,ReferenceSchema— replacingtype/sub_schema/arrayarray keys.
Fixed along the way
Bringing the output back to byte-parity surfaced defects the migration had introduced, two of which were not cosmetic:
- The Swift SDK did not compile.
AttributeList.swiftdecoded anAnyCodablearray as[[String: Any]], which only holds if every element is a dictionary. - Union responses hydrated the wrong model.
getAttribute()andgetColumn()returnedAttributeStringfor every email, enum, URL and IP attribute, because the multi-conditionx-mappingdiscriminator was being dropped. Fixed upstream inutopia-php/openapiand consumed here.
Also restored: InputFile imports in upload examples across seven languages, convertTo<T>() on Dart, Flutter, .NET and Ruby list models, resumable upload ids in four SDKs, deduplicated Ruby methods, and the leading slash on REST and GraphQL request lines.
Dependencies
- Requires
utopia-php/openapi0.1.*, resolved from Packagist. - CI builds the Go SDK with Go 1.26.6.
2.11.8
What's Changed
- chore(go-cli): pin sdk-for-go v6.5.0 by @ChiragAgg5k in #1784
Full Changelog: 2.11.7...2.11.8
2.11.7
What's Changed
- fix(go): document that ClientResponse.Result holds bytes, and pin the type by @ChiragAgg5k in #1782
Full Changelog: 2.11.6...2.11.7
2.11.6
What's Changed
- chore(deps): update android and kotlin sdk template dependencies by @renovate-appwrite[bot] in #1780
- Fix Go CLI local function readiness checks by @ChiragAgg5k in #1781
Full Changelog: 2.11.5...2.11.6
2.11.5
What's Changed
- fix(python): honour include and exclude in generic model serializers by @ChiragAgg5k in #1779
Full Changelog: 2.11.4...2.11.5
2.11.4
What's Changed
- fix: stop python templates emitting stray blank lines by @ChiragAgg5k in #1778
Full Changelog: 2.11.3...2.11.4
2.11.3
What's Changed
- chore(deps): update dependency system.text.json to 9.0.19 by @renovate-appwrite[bot] in #1774
- fix(go-cli): validate variable keys before replacing them on push by @levivannoort in #1773
- Fix Python nested model serialization by @ChiragAgg5k in #1776
- Fix Python payload-only model serialization by @ChiragAgg5k in #1777
New Contributors
- @levivannoort made their first contribution in #1773
Full Changelog: 2.11.2...2.11.3
2.11.2
What's Changed
- chore(deps): update dependency @types/node to v26.2.0 by @renovate-appwrite[bot] in #1771
- Fix CLI login endpoint and logout messaging by @ChiragAgg5k in #1772
- Fix GraphQL JSON output filtering by @ChiragAgg5k in #1775
Full Changelog: 2.11.1...2.11.2
2.11.1
What's Changed
- Fix Go CLI generated query flags by @ChiragAgg5k in #1770
Full Changelog: 2.11.0...2.11.1
2.11.0
Go CLI: a browser (js/wasm) build target
The Go CLI now builds a seventh artifact, appwrite.wasm (GOOS=js GOARCH=wasm -tags browser), published standalone as the npm package appwrite-cli-wasm alongside the wasm_exec.js from the toolchain that produced it. CLI 26 replaced the JavaScript bundle with a native binary, which a browser cannot execute, leaving the Console's in-browser terminal pinned to CLI 25 with no upgrade path — this gives it one. The six native binaries, install.sh, install.ps1, the scoop manifest and npm/run.js are unchanged, and the wasm build runs outside goreleaser so the native asset names stay stable.
Two build tags do deliberately different jobs. js, from GOOS, gates platform differences: zalando/go-keyring has no build file matching js, so credential storage falls back to the prefs file the CLI already used on headless Linux and in CI. browser is ours and gates product surface: init, pull, push, run, update, generate, types and login register as stubs that explain why they cannot run in a tab, rather than being absent and drawing cobra's "unknown command" for a command that is real and documented. Their implementations carry the tag, so the linker drops the docker, watch, generator, typegen, preview, schema and dotenv trees along with huh, bubbletea and fsnotify.
Authentication works differently in a tab. The credential is an httpOnly cookie the CLI can neither read nor set — Cookie is on fetch's forbidden list and is dropped silently — so internal/client removes any Cookie header and asks fetch for the origin's credentials at the transport, letting the browser attach the session itself. Under js the endpoint may come from APPWRITE_ENDPOINT and a missing credential is no longer a refusal; native builds refuse exactly where they did before.
Embedder contract: pass APPWRITE_ENDPOINT and APPWRITE_PROJECT_ID in go.env, be signed in on the target origin, and serve credentialed CORS if that origin differs from the page's. No filesystem is required.
Artifact size is 21.6 MiB raw, 3.0 MiB Brotli, 4.5 MiB gzip. TinyGo is not an option — cobra and the SDK are reflection-heavy.
What's Changed
- feat(cli): a browser (js/wasm) build target for the Go CLI by @ChiragAgg5k in #1759
Full Changelog: 2.10.10...2.11.0