You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- backend-sdks/node.mdx: mirror the Python SDK REST API doc updates —
link Velt's REST APIs, split init into Self-hosting/REST API tabs, and
move field-filtering details into inline notes per service section.
- backend-sdks/node.mdx + python.mdx: comment out the Agents and Memory
REST sections instead of deleting them (preserved in source).
- get-started/overview.mdx: add missing top-level features — Activity
Logs, Suggestions, Multiplayer Editing, Video Player Sync, and a new
AI section (Rewriter, Approval Engine, Agent Comments, Chat SDK Adapter).
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy file name to clipboardExpand all lines: backend-sdks/node.mdx
+60-60Lines changed: 60 additions & 60 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ The [Velt Node SDK](https://www.npmjs.com/package/@veltdev/node) exposes two ind
18
18
2. Call the relevant SDK method with the raw request payload
19
19
3. Return the resulting response directly to the client
20
20
21
-
**REST API backend** (`sdk.api.*`) provides feature parity with the Velt Python SDK. 20 services, fully-typed TypeScript request objects, and raw Velt API responses. No database or AWS configuration needed.
21
+
**REST API backend** (`sdk.api.*`) provides parity with [Velt's REST APIs](/api-reference/rest-apis/v2/organizations/get-organizations-v2). 18 services, fully-typed TypeScript request objects, and raw Velt API responses. No database or AWS configuration needed.
22
22
23
23
## Installation
24
24
@@ -44,7 +44,10 @@ npm install @aws-sdk/client-s3 # required only if using S3 for attachments
The `database` section is optional when using only `sdk.api.*`. Set `VELT_API_KEY` and `VELT_AUTH_TOKEN` environment variables as an alternative to passing credentials in the config object.
80
86
87
+
</Tab>
88
+
</Tabs>
89
+
81
90
### Shutdown
82
91
83
92
Call `await sdk.close()` when your process exits to release the database connection pool.
The `sdk.api.*` namespace provides 20 services covering all Velt REST API operations. No database or AWS configuration is required — only `apiKey` and `authToken`.
634
+
The `sdk.api.*` namespace gives you parity with [Velt's REST APIs](/api-reference/rest-apis/v2/organizations/get-organizations-v2) across 18 services. Each method takes a fully-typed TypeScript request object and returns the raw Velt API response. You only need `apiKey` and `authToken` — no database or AWS config.
626
635
627
636
Every `sdk.api.*` method requires an `organizationId` in its request payload. Velt enforces data isolation per-organization server-side.
628
637
629
638
### Field Allowlist
630
639
631
-
Added in **v1.0.4**. The REST add/update methods on `activities`, `commentAnnotations`, and `notifications` accept an optional second argument, `FieldFilterOptions`. When `{ filterUnknownFields: true }` is passed, the SDK narrows the request to exactly the fields the corresponding Velt backend endpoint accepts, silently dropping unknown keys at each described level before sending.
632
-
633
-
- Opt-in and off by default — omitting `options` (or passing `filterUnknownFields: false`) sends the request unchanged, exactly as before.
634
-
- Fail-open — if filtering hits any unexpected error, the original request is sent unchanged, so a filter bug can never block a write.
635
-
- Top-level / fail-closed within a level — only listed keys survive at each described level, but nested open-typed objects (e.g. `actionUser`, `context`, `metadata`) pass through whole rather than being recursively narrowed.
636
-
- Allowlists are transcribed by hand from the Velt backend Zod schemas (lock-step with the velt-py SDK's self-hosting field allowlist).
640
+
The REST add/update methods on `activities`, `commentAnnotations`, and `notifications` accept an optional second argument, `FieldFilterOptions`. Pass `{ filterUnknownFields: true }` to narrow the request to exactly the fields the corresponding Velt backend endpoint accepts. See the note at the top of each service section for the behavior summary; the per-endpoint field lists are below.
**Filtering unknown fields**: The add/update methods below accept an optional `options?:FieldFilterOptions` second argument. When `{ filterUnknownFields:true }` is passed, unknown/custom keys are dropped before the request is sent, narrowing the payload to exactly the fields the Velt backend endpoint accepts. Open-typed objects (`actionUser`, `context`, `metadata`, user objects) pass through whole. Filtering is fail-open: if it errors, the original payload is sent, so a write is never blocked. `UPDATE_NOTIFICATIONS_SPEC` intentionally excludes `isRead`/`isArchived` — they are unsupported by `/v2/notifications/update`, so they are dropped when filtering is on. See [Field Allowlist](#field-allowlist) for the full per-endpoint field list.
1450
+
</Note>
1451
+
1480
1452
#### `addNotifications`
1481
1453
1482
1454
- Adds one or more notifications targeted to specific users.
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1457
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1520
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
**Filtering unknown fields**: The add/update methods below accept an optional `options?:FieldFilterOptions` second argument. When `{ filterUnknownFields:true }` is passed, request entity collections are narrowed to only the fields the Velt backend endpoint accepts, dropping unknown/custom keys before the request is sent. Open-typed objects (`from`, `context`, `metadata`, user objects) pass through whole — their nested contents are never filtered. Filtering is fail-open: if it errors, the original payload is sent, so a write is never blocked. See [Field Allowlist](#field-allowlist) for the full per-endpoint field list.
1612
+
</Note>
1613
+
1614
+
```ts
1615
+
// Extra fields (internalId) are dropped before the request is sent.
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1637
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1735
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1777
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1839
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
**Filtering unknown fields**: The add/update methods below accept an optional `options?:FieldFilterOptions` second argument. When `{ filterUnknownFields:true }` is passed, request entity collections are narrowed to only the fields the Velt backend endpoint accepts, dropping unknown/custom keys before the request is sent. Open-typed objects (`actionUser`, `entityData`, `context`, `metadata`) pass through whole — their nested contents are never filtered. Filtering is fail-open: if it errors, the original payload is sent, so a write is never blocked. See [Field Allowlist](#field-allowlist) for the full per-endpoint field list.
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1891
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending. See [Field Allowlist](#field-allowlist).
1957
+
- Accepts an optional `options?:FieldFilterOptions` second argument — pass `{ filterUnknownFields:true }` to drop unknown fields before sending (see the note above).
0 commit comments