Skip to content

feat: SDK update for version 29.0.0 - #165

Merged
loks0n merged 1 commit into
mainfrom
dev
Sep 2, 2026
Merged

feat: SDK update for version 29.0.0#165
loks0n merged 1 commit into
mainfrom
dev

Conversation

@ChiragAgg5k

@ChiragAgg5k ChiragAgg5k commented Sep 2, 2026

Copy link
Copy Markdown
Member

This PR contains updates to the SDK for version 29.0.0.

What's Changed

  • Stable release of the dedicated database APIs: mysql, postgresql, mongo, documentsDB, and vectorsDB services, previously released as release candidates
  • Breaking: tablesDB.cutoverMigration is renamed to tablesDB.createCutover
  • Breaking: Execution.functionId is replaced by resourceId and resourceType, covering function and site executions
  • Added: Cloudflare, Resend, and Hugging Face OAuth providers
  • Added: usageAggregateOnlyMetrics on the BillingPlan model
  • Fixed: transactionId is accepted again by documentsDB and vectorsDB createDocument and createDocuments
  • Updated: X-Appwrite-Response-Format is now 2.0.0
  • Updated: FrameworkAdapter.fallbackFile is now optional

@greptile-apps

greptile-apps Bot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This release promotes the Node SDK to 29.0.0 and aligns it with response format 2.0.0.

  • Adds Cloudflare and Resend OAuth provider contracts and project configuration methods.
  • Restores transaction IDs on DocumentsDB and VectorsDB create operations.
  • Renames the TablesDB cutover operation and updates dedicated-database lifecycle models.
  • Updates generated examples, tests, package metadata, and response models.

Confidence Score: 4/5

The dedicated database model鈥檚 nullability mismatch should be corrected before merging so consumers receive an accurate credential-generation contract.

The new shared DedicatedDatabase field is declared as always numeric despite its own API documentation stating that freshly initialized resources can return null.

Files Needing Attention: src/models.ts

Important Files Changed

Filename Overview
src/models.ts Adds and updates generated response contracts, but credentialGeneration excludes a documented null state.
src/services/documents-db.ts Adds transactionId consistently across object and positional create APIs and forwards it in the request payload.
src/services/vectors-db.ts Mirrors the DocumentsDB transaction support with aligned overload and payload mappings.
src/services/project.ts Adds Cloudflare and Resend OAuth configuration methods with consistent routes and parameter handling.
src/services/tables-db.ts Consistently renames the cutover method and updates its REST route across overloads, tests, and documentation.
src/services/mongo.ts Changes credential rotation to return an asynchronous operation and documents the required polling and refetch flow.
src/services/mysql.ts Changes credential rotation to the shared asynchronous operation contract.
src/services/postgresql.ts Changes credential rotation to the shared asynchronous operation contract.
src/client.ts Updates SDK identity and Appwrite response-format headers for the 29.0.0 release.

Fix all with Greploop Fix All in Claude Code Fix All in Codex

Prompt To Fix All With AI
### Issue 1
src/models.ts:8284
**Credential generation excludes null**

When a dedicated database's credential-rotation contract has not been initialized, the API contract permits `credentialGeneration` to be null, but this model declares it as an unconditional `number`, causing consumers to make unsafe numeric assumptions about the response.

```suggestion
        credentialGeneration: number | null;
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "chore: update Node.js SDK to 29.0.0" | Re-trigger Greptile

Comment thread src/models.ts
/**
* Committed generation of the primary connection credentials. Null until the rotation contract has been initialized.
*/
credentialGeneration: number;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Credential generation excludes null

When a dedicated database's credential-rotation contract has not been initialized, the API contract permits credentialGeneration to be null, but this model declares it as an unconditional number, causing consumers to make unsafe numeric assumptions about the response.

Suggested change
credentialGeneration: number;
credentialGeneration: number | null;

Knowledge Base Used:

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/models.ts
Line: 8284

Comment:
**Credential generation excludes null**

When a dedicated database's credential-rotation contract has not been initialized, the API contract permits `credentialGeneration` to be null, but this model declares it as an unconditional `number`, causing consumers to make unsafe numeric assumptions about the response.

```suggestion
        credentialGeneration: number | null;
```

**Knowledge Base Used:**
- [Generated models and enum vocabulary](https://app.greptile.com/appwrite/-/custom-context/knowledge-base/appwrite/sdk-for-node/-/docs/models-and-enums.md)
- [SDK data contracts and helpers](https://app.greptile.com/appwrite/-/custom-context/knowledge-base/appwrite/sdk-for-node/-/docs/sdk-data-contracts.md)

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Claude Code Fix in Codex

@ChiragAgg5k ChiragAgg5k changed the title feat: Node.js SDK update for version 29.0.0 feat: SDK update for version 29.0.0 Sep 2, 2026

@loks0n loks0n left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release PR reviewed.

@loks0n
loks0n merged commit f333aca into main Sep 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants