Skip to content

feat: SDK update for version 0.14.0 - #28

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

feat: SDK update for version 0.14.0#28
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 0.14.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

@ChiragAgg5k ChiragAgg5k changed the title feat: Rust SDK update for version 0.14.0 feat: SDK update for version 0.14.0 Sep 2, 2026
@greptile-apps

greptile-apps Bot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

This release updates the Rust SDK to Appwrite API response format 2.0.0 and promotes crate version 0.14.0.

  • Adds Cloudflare and Resend OAuth provider contracts and project update methods.
  • Adds transaction IDs to DocumentsDB and VectorsDB document creation.
  • Updates dedicated-database credential rotation to return asynchronous operations.
  • Renames the TablesDB cutover method and route and expands models and enums for the new API.

Confidence Score: 4/5

The nullable credential-generation field must be fixed before merging because it makes valid dedicated-database responses fail to decode.

The new model requires an integer for a field explicitly documented as null before credential rotation is initialized, and the shared transport directly deserializes that response into the model.

Files Needing Attention: src/models/dedicated_database.rs

Important Files Changed

Filename Overview
src/client.rs Updates global response-format and SDK-version headers to 2.0.0 and 0.14.0.
src/models/dedicated_database.rs Adds credentialGeneration, but represents its documented null state with a non-nullable integer.
src/services/documents_db.rs Adds optional transaction IDs to single and bulk document creation payloads.
src/services/vectors_db.rs Adds optional transaction IDs to single and bulk vector-document creation payloads.
src/services/project.rs Adds Cloudflare and Resend OAuth2 configuration update operations consistent with sibling providers.
src/services/tables_db.rs Renames the migration cutover operation and updates its endpoint to the plural route.
src/services/mongo.rs Changes credential rotation to return an asynchronous dedicated-database operation.
src/services/mysql.rs Changes credential rotation to return an asynchronous dedicated-database operation.
src/services/postgresql.rs Changes credential rotation to return an asynchronous dedicated-database operation.

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

Prompt To Fix All With AI
### Issue 1
src/models/dedicated_database.rs:54-57
**Nullable generation breaks decoding**

When a dedicated database has not initialized credential rotation, `credentialGeneration` is null, but this required `i64` cannot represent null, causing otherwise successful dedicated-database responses to return deserialization errors.

```suggestion
    /// Committed generation of the primary connection credentials. Null until the
    /// rotation contract has been initialized.
    #[serde(rename = "credentialGeneration")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub credential_generation: Option<i64>,
```

---

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 Rust SDK to 0.14.0" | Re-trigger Greptile

Comment on lines +54 to +57
/// Committed generation of the primary connection credentials. Null until the
/// rotation contract has been initialized.
#[serde(rename = "credentialGeneration")]
pub credential_generation: i64,

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 Nullable generation breaks decoding

When a dedicated database has not initialized credential rotation, credentialGeneration is null, but this required i64 cannot represent null, causing otherwise successful dedicated-database responses to return deserialization errors.

Suggested change
/// Committed generation of the primary connection credentials. Null until the
/// rotation contract has been initialized.
#[serde(rename = "credentialGeneration")]
pub credential_generation: i64,
/// Committed generation of the primary connection credentials. Null until the
/// rotation contract has been initialized.
#[serde(rename = "credentialGeneration")]
#[serde(skip_serializing_if = "Option::is_none")]
pub credential_generation: Option<i64>,

Knowledge Base Used: Resource models and serialization

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/models/dedicated_database.rs
Line: 54-57

Comment:
**Nullable generation breaks decoding**

When a dedicated database has not initialized credential rotation, `credentialGeneration` is null, but this required `i64` cannot represent null, causing otherwise successful dedicated-database responses to return deserialization errors.

```suggestion
    /// Committed generation of the primary connection credentials. Null until the
    /// rotation contract has been initialized.
    #[serde(rename = "credentialGeneration")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub credential_generation: Option<i64>,
```

**Knowledge Base Used:** [Resource models and serialization](https://app.greptile.com/appwrite/-/custom-context/knowledge-base/appwrite/sdk-for-rust/-/docs/resource-models.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

@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 c8a3916 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