From df9bcf27ae00eae43a067dcee63eca2519878b1e Mon Sep 17 00:00:00 2001 From: yoen-velt Date: Fri, 10 Apr 2026 17:44:10 -0400 Subject: [PATCH 1/7] v5.0.2-beta.15 --- api-reference/sdk/models/data-models.mdx | 18 + docs.json | 3 +- release-notes/version-5/sdk-changelog.mdx | 50 + .../notifications-primitives.mdx | 1608 +++++++++++++++++ 4 files changed, 1678 insertions(+), 1 deletion(-) create mode 100644 ui-customization/features/async/notifications/notifications-primitives.mdx diff --git a/api-reference/sdk/models/data-models.mdx b/api-reference/sdk/models/data-models.mdx index 7c14db19..76970d6f 100644 --- a/api-reference/sdk/models/data-models.mdx +++ b/api-reference/sdk/models/data-models.mdx @@ -2694,6 +2694,24 @@ Defines the time window and activity cap for a single batching scope. | `maxActivities` | `number` | No | Maximum activities per batch; flush triggers early when this count is reached. | +### Notification Primitives + +Types for the primitive components used to build custom notification interfaces. See [Notifications Primitives](/ui-customization/features/async/notifications/notifications-primitives) for usage examples. + +#### NotificationsPrimitiveCommonProps +[Usage Examples →](/ui-customization/features/async/notifications/notifications-primitives#common-inputs) +--- + +Base props inherited by all Notification primitive components. + +| Property | Type | Required | Description | +|----------------------|-----------|----------|----------------------------------------------------------------| +| `variant` | `string` | No | Visual variant of the primitive component | +| `darkMode` | `boolean` | No | Renders the component in dark mode when true | +| `shadowDom` | `boolean` | No | Renders the component inside a Shadow DOM when true | +| `parentLocalUIState` | `object` | No | Local UI state passed down from a parent primitive component | + + # Activity Logs #### ActivityFeatureType diff --git a/docs.json b/docs.json index 14cb2d13..c292f048 100644 --- a/docs.json +++ b/docs.json @@ -377,7 +377,8 @@ "group": "In-app Notifications", "pages": [ "ui-customization/features/async/notifications/notifications-tool", - "ui-customization/features/async/notifications/notifications-panel" + "ui-customization/features/async/notifications/notifications-panel", + "ui-customization/features/async/notifications/notifications-primitives" ] }, { diff --git a/release-notes/version-5/sdk-changelog.mdx b/release-notes/version-5/sdk-changelog.mdx index 1f14d961..5f7d45b3 100644 --- a/release-notes/version-5/sdk-changelog.mdx +++ b/release-notes/version-5/sdk-changelog.mdx @@ -9,6 +9,56 @@ description: Release Notes of changes added to the core Velt SDK - `@veltdev/client` - `@veltdev/sdk` + + +### New Features + +- [**Notifications**]: Added 60+ granular primitive components for `VeltNotificationsPanel` and `VeltNotificationsTool`, covering every section of the notifications UI — header tabs, content lists, settings accordion, skeleton, and more. Each primitive is standalone (not nested inside another) and supports `variant`, `darkMode`, `shadowDom`, and `parentLocalUIState` props. [Learn more →](/ui-customization/features/async/notifications/notifications-primitives) + + + +```tsx +import { + VeltNotificationsPanelHeader, + VeltNotificationsPanelHeaderTabForYou, + VeltNotificationsPanelHeaderTabAll, + VeltNotificationsPanelContent, + VeltNotificationsPanelSettings, +} from '@veltdev/react'; + + + + + + +``` + + +```html + + + + + +``` + + + +### Improvements + +- [**Notifications**]: Notification panel list primitives (`VeltNotificationsPanelContentAllList`, `VeltNotificationsPanelContentDocumentsList`, `VeltNotificationsPanelContentList`, `VeltNotificationsPanelContentPeopleList`, `VeltNotificationsPanelSettingsAccordion`) now forward custom item templates (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`) to their internal child components, enabling wireframe-level item customization. + +### Bug Fixes + +- [**Notifications**]: Fixed `applyConditionalClasses` not being called on initialization in notification panel and tool primitive components, causing `velt-class` conditional styling to be missing on first render. +- [**Notifications**]: Fixed child notification panel primitive components not receiving the `parentLocalUIState` signal from their parent, breaking per-dialog state propagation. +- [**Comments**]: Fixed iframes capturing pointer events during comment pin and area pin drag/resize operations. A `velt-pin-dragging` class is now added to `body` during drag to prevent iframe event interception. +- [**Comments**]: Fixed pin host static position detection failing to identify elements previously promoted to `position: relative` by the SDK. Promoted elements are now marked with attributes so subsequent features recognize their original static state. +- [**Comments**]: Fixed hidden comment composer instances inside `velt-if` conditions overwriting the shared active textarea reference. +- [**Access Control**]: Fixed permission cleanup on document unset not including the document context, causing access revocation to be incorrectly scoped. + + + ### New Features diff --git a/ui-customization/features/async/notifications/notifications-primitives.mdx b/ui-customization/features/async/notifications/notifications-primitives.mdx new file mode 100644 index 00000000..fff51cad --- /dev/null +++ b/ui-customization/features/async/notifications/notifications-primitives.mdx @@ -0,0 +1,1608 @@ +--- +title: Notifications Primitives +description: 60+ primitive components for building custom Notifications tool and panel interfaces. +--- + + +We recommend that you familiarize yourselves with [UI Customization Concepts](/ui-customization/overview) before attempting to modify any components. + + +## Overview + +The Notifications Primitives API provides granular components that can be used independently to build fully custom notification tool and panel interfaces. All primitives share a common set of inputs documented below; list-type primitives additionally support template forwarding via slot attributes (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`). + +## Common Inputs + +All Notifications primitive components accept the following inputs. See [`NotificationsPrimitiveCommonProps`](/api-reference/sdk/models/data-models#notificationsprimitivecommonprops) for the full type definition. + +| React Prop | HTML Attribute | Type | Default | Description | +|------------|----------------|------|---------|-------------| +| `variant` | `variant` | `string` | — | Visual variant for the component. | +| `darkMode` | `dark-mode` | `boolean` | `false` | Enables dark mode rendering. | +| `shadowDom` | `shadow-dom` | `boolean` | `false` | Renders the component inside a Shadow DOM. | +| `parentLocalUIState` | `parent-local-ui-state` | `object` | — | Local UI state passed down from a parent primitive. | + +--- + +## Components + +### VeltNotificationsToolIcon + +Icon displayed in the notifications tool trigger button. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolUnreadIcon + +Icon shown in the notifications tool trigger when there are unread notifications. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolLabel + +Text label displayed in the notifications tool trigger button. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolUnreadCount + +Badge showing the count of unread notifications on the tool trigger. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelTitle + +Title container at the top of the notifications panel. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelTitleText + +Text displayed inside the notifications panel title. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelHeader + +Header bar of the notifications panel containing tabs and action buttons. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelHeaderTabForYou + +Tab in the panel header that filters notifications addressed to the current user. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelHeaderTabPeople + +Tab in the panel header that groups notifications by people. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelHeaderTabDocuments + +Tab in the panel header that groups notifications by document. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelHeaderTabAll + +Tab in the panel header that shows all notifications. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContent + +Main content area of the notifications panel that renders the active tab's view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentForYou + +Content view for the "For You" tab listing notifications directed at the current user. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentAll + +Content view for the "All" tab showing every notification. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentAllList + +Scrollable list of all notifications inside the "All" content view. Forwards `[listItemTemplate]` to each `VeltNotificationsPanelContentAllListItem` rendered inside it. + + + +```jsx + +``` + +**Props:** Common inputs (see [Common Inputs](#common-inputs) section) plus: + +| Prop | Type | Description | +|------|------|-------------| +| `listItemTemplate` | `TemplateRef` | Custom template forwarded to each list item child. | + + +```html + +``` + +**Attributes:** Common attributes (see [Common Inputs](#common-inputs) section) plus: + +| Attribute | Type | Description | +|-----------|------|-------------| +| `list-item-template` | `TemplateRef` | Custom template forwarded to each list item child. | + + + +--- + +### VeltNotificationsPanelContentAllListItem + +A single notification row inside the "All" list. Supports `[listItemTemplate]` for custom row templates. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentAllListItemLabel + +Label displayed on a notification row in the "All" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentAllListItemContent + +Content body of a single notification row in the "All" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentAllReadContainer + +Container that groups already-read notifications in the "All" view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeople + +Content view for the "People" tab grouping notifications by sender. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeopleList + +Scrollable list of people groups inside the "People" content view. Forwards `[listItemTemplate]` to each `VeltNotificationsPanelContentPeopleListItem` rendered inside it. + + + +```jsx + +``` + +**Props:** Common inputs (see [Common Inputs](#common-inputs) section) plus: + +| Prop | Type | Description | +|------|------|-------------| +| `listItemTemplate` | `TemplateRef` | Custom template forwarded to each list item child. | + + +```html + +``` + +**Attributes:** Common attributes (see [Common Inputs](#common-inputs) section) plus: + +| Attribute | Type | Description | +|-----------|------|-------------| +| `list-item-template` | `TemplateRef` | Custom template forwarded to each list item child. | + + + +--- + +### VeltNotificationsPanelContentPeopleListItem + +A single person group row in the "People" list. Supports `[listItemTemplate]` for custom row templates. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeopleListItemAvatar + +Avatar image for a person in the "People" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeopleListItemName + +Display name for a person in the "People" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeopleListItemCount + +Unread notification count badge for a person in the "People" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentPeopleListItemContent + +Expanded notification content displayed under a person row in the "People" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocuments + +Content view for the "Documents" tab grouping notifications by document. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocumentsList + +Scrollable list of document groups inside the "Documents" content view. Forwards `[listItemTemplate]` to each `VeltNotificationsPanelContentDocumentsListItem` rendered inside it. + + + +```jsx + +``` + +**Props:** Common inputs (see [Common Inputs](#common-inputs) section) plus: + +| Prop | Type | Description | +|------|------|-------------| +| `listItemTemplate` | `TemplateRef` | Custom template forwarded to each list item child. | + + +```html + +``` + +**Attributes:** Common attributes (see [Common Inputs](#common-inputs) section) plus: + +| Attribute | Type | Description | +|-----------|------|-------------| +| `list-item-template` | `TemplateRef` | Custom template forwarded to each list item child. | + + + +--- + +### VeltNotificationsPanelContentDocumentsListItem + +A single document group row in the "Documents" list. Supports `[listItemTemplate]` for custom row templates. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocumentsListItemName + +Document name displayed in a "Documents" list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocumentsListItemCount + +Unread notification count badge for a document in the "Documents" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocumentsListItemContent + +Expanded notification content displayed under a document row in the "Documents" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentDocumentsListItemUnread + +Unread indicator shown on a document row in the "Documents" list. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentList + +Generic scrollable notification list used across multiple tab views. Forwards `[listItemTemplate]` to each `VeltNotificationsPanelContentListItem` rendered inside it. + + + +```jsx + +``` + +**Props:** Common inputs (see [Common Inputs](#common-inputs) section) plus: + +| Prop | Type | Description | +|------|------|-------------| +| `listItemTemplate` | `TemplateRef` | Custom template forwarded to each list item child. | + + +```html + +``` + +**Attributes:** Common attributes (see [Common Inputs](#common-inputs) section) plus: + +| Attribute | Type | Description | +|-----------|------|-------------| +| `list-item-template` | `TemplateRef` | Custom template forwarded to each list item child. | + + + +--- + +### VeltNotificationsPanelContentListItem + +A single row in the generic notification list. Supports `[listItemTemplate]` for custom row templates. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemAvatar + +User avatar displayed on a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemUnread + +Unread dot indicator on a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemHeadline + +Primary headline text of a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemBody + +Body text beneath the headline on a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemFileName + +File or document name displayed on a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentListItemTime + +Relative or absolute timestamp on a notification list row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelContentLoadMore + +Button to load additional notifications beyond the initial set. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelCloseButton + +Button that closes the notifications panel. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelReadAllButton + +Button that marks all notifications as read. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelViewAllButton + +Button that navigates to a full notifications view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSkeleton + +Loading skeleton displayed while notification data is being fetched. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsButton + +Button that opens the notifications settings panel. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettings + +Container for the notifications settings view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsHeader + +Header bar of the notifications settings view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsHeaderTitle + +Title text displayed in the notifications settings header. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsTitle + +Section title within the notifications settings view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsDescription + +Descriptive text for a settings section. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsList + +List container for notification settings items. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsMuteAllTitle + +Title label for the mute-all notifications toggle row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsMuteAllDescription + +Description text for the mute-all notifications toggle row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsMuteAllToggle + +Toggle switch that mutes all notifications. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordion + +Accordion container for grouped notification settings options. Forwards `[itemTemplate]` to each `VeltNotificationsPanelSettingsAccordionContentItem` and `[triggerTemplate]` to each `VeltNotificationsPanelSettingsAccordionTrigger` rendered inside it. + + + +```jsx + +``` + +**Props:** Common inputs (see [Common Inputs](#common-inputs) section) plus: + +| Prop | Type | Description | +|------|------|-------------| +| `itemTemplate` | `TemplateRef` | Custom template forwarded to each accordion content item child. | +| `triggerTemplate` | `TemplateRef` | Custom template forwarded to each accordion trigger child. | + + +```html + +``` + +**Attributes:** Common attributes (see [Common Inputs](#common-inputs) section) plus: + +| Attribute | Type | Description | +|-----------|------|-------------| +| `item-template` | `TemplateRef` | Custom template forwarded to each accordion content item child. | +| `trigger-template` | `TemplateRef` | Custom template forwarded to each accordion trigger child. | + + + +--- + +### VeltNotificationsPanelSettingsAccordionTrigger + +Clickable trigger row that expands or collapses a settings accordion section. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionTriggerLabel + +Label text displayed on a settings accordion trigger row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionTriggerIcon + +Icon displayed on a settings accordion trigger row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionTriggerSelectedValue + +Displays the currently selected value on a settings accordion trigger row. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionContent + +Expanded content area of a settings accordion section. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionContentItem + +A single selectable option inside an expanded settings accordion. Supports `[itemTemplate]` for custom option templates. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionContentItemLabel + +Label text for a settings accordion content option. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsAccordionContentItemIcon + +Icon for a settings accordion content option. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsBackButton + +Button that navigates back from the settings view to the main notifications panel. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsPanelSettingsFooter + +Footer area of the notifications settings view. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + From dc1325e17b72b8dcf7030dcfd72920f9033f6ac1 Mon Sep 17 00:00:00 2001 From: yoen-velt Date: Fri, 10 Apr 2026 18:02:35 -0400 Subject: [PATCH 2/7] April 8 Cloud Funtions --- .claude/logs/agent-2-planning-april-8-2026.md | 73 ++++++++++ .claude/logs/agent-7-qa-april-8-2026.md | 21 +++ .../rest-apis/v2/workspace/create.mdx | 128 ++++++++++++++++++ .../rest-apis/v2/workspace/delete-domain.mdx | 2 +- .../rest-apis/v2/workspace/email-status.mdx | 89 ++++++++++++ api-reference/rest-apis/v2/workspace/get.mdx | 109 +++++++++++++++ .../v2/workspace/send-login-link.mdx | 75 ++++++++++ docs.json | 4 + release-notes/version-5/sdk-changelog.mdx | 19 ++- 9 files changed, 518 insertions(+), 2 deletions(-) create mode 100644 .claude/logs/agent-2-planning-april-8-2026.md create mode 100644 .claude/logs/agent-7-qa-april-8-2026.md create mode 100644 api-reference/rest-apis/v2/workspace/create.mdx create mode 100644 api-reference/rest-apis/v2/workspace/email-status.mdx create mode 100644 api-reference/rest-apis/v2/workspace/get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/send-login-link.mdx diff --git a/.claude/logs/agent-2-planning-april-8-2026.md b/.claude/logs/agent-2-planning-april-8-2026.md new file mode 100644 index 00000000..328001aa --- /dev/null +++ b/.claude/logs/agent-2-planning-april-8-2026.md @@ -0,0 +1,73 @@ +# Release Update Plan for April 8, 2026 + +## Overview +- Release Type: Minor (new REST endpoints + internal agent improvements) +- Key Changes: 4 new V2 REST workspace endpoints; Stagehand agent enhancements; defaultValue for userContextFields +- Breaking Changes: No + +## Areas Requiring Updates + +### 1. REST API Reference — New Workspace Endpoint Pages (HIGH PRIORITY) + +Four new MDX files must be created under the existing REST API workspace directory: + +- `api-reference/rest-apis/v2/workspace/create.mdx` — `POST /v2/workspace/create` +- `api-reference/rest-apis/v2/workspace/get.mdx` — `POST /v2/workspace/get` +- `api-reference/rest-apis/v2/workspace/email-status.mdx` — `POST /v2/workspace/email/status` +- `api-reference/rest-apis/v2/workspace/send-login-link.mdx` — `POST /v2/workspace/email/send-login-link` + +Pattern to follow: `api-reference/rest-apis/v2/workspace/add-domain.mdx` (frontmatter `api:` field, Headers section with `x-velt-api-key` + `x-velt-auth-token`, Body Params section, Example Request/Response, `` block). + +Security notes to include on public endpoints: +- IP-based rate limiting applied +- Disposable email domain blocking applied + +**Do NOT add these to `api-methods.mdx`** — that file covers client SDK methods only. + +Priority: High + +### 2. Changelog Link Fix + +The release note at `release-notes/version-5/sdk-changelog.mdx` contains a placeholder link: + +``` +[Learn more →](#TODO-confirm-doc-link) +``` + +Once the four endpoint pages are created, replace this with the correct path. Suggested link target: `/api-reference/rest-apis/v2/workspace/create` (or a workspace overview page if one is created). + +Priority: High — must be resolved after endpoint pages exist. + +### 3. Data Models — No Update Needed + +No new client-side types or interfaces introduced. Internal agent config changes (Firestore-driven aiConfig, deep merge for metadata) are backend-only and not exposed via the SDK. + +### 4. API Methods — No Update Needed + +No new SDK client methods or changed method signatures. Changes are REST endpoints and internal agent runtime behavior. + +### 5. UI Customization — No Update Needed + +No new components, primitives, or wireframes. + +### 6. Upgrade Guide — No Update Needed + +No breaking changes. + +## Implementation Sequence + +1. Create `api-reference/rest-apis/v2/workspace/create.mdx` following add-domain.mdx pattern. +2. Create `api-reference/rest-apis/v2/workspace/get.mdx`. +3. Create `api-reference/rest-apis/v2/workspace/email-status.mdx`. +4. Create `api-reference/rest-apis/v2/workspace/send-login-link.mdx`. +5. Fix the placeholder link in `release-notes/version-5/sdk-changelog.mdx` to point to the new create endpoint page. +6. Verify the new pages appear in the docs nav (check mint.json or docs.json for REST API workspace section entries). + +## Quality Checklist +- [ ] 4 new REST endpoint pages created under `api-reference/rest-apis/v2/workspace/` +- [ ] Each page has correct `api:` frontmatter, Headers, Body, Example Request, Example Response, and `` +- [ ] Public endpoint pages note IP-based rate limiting and disposable email blocking +- [ ] Placeholder link in sdk-changelog.mdx resolved +- [ ] Nav config updated if required for new pages +- [ ] No changes made to `api-methods.mdx` or `data-models.mdx` +- [ ] Log file written to `.claude/logs/agent-2-planning-april-8-2026.md` diff --git a/.claude/logs/agent-7-qa-april-8-2026.md b/.claude/logs/agent-7-qa-april-8-2026.md new file mode 100644 index 00000000..ec381fc3 --- /dev/null +++ b/.claude/logs/agent-7-qa-april-8-2026.md @@ -0,0 +1,21 @@ +## QA Summary for April 8, 2026 (Programmatic Workspace APIs) + +### Issues Found: 1 + +1. **api-reference/rest-apis/v2/workspace/delete-domain.mdx** - Description was copy-pasted from add-domain.mdx: "Use this API to add new organizations and its metadata." This is a pre-existing bug in an existing file, not introduced by this release. + - Fix: Changed to "Use this API to remove domains from your organization's allowed domains list." + +### Observations (no fixes required) + +- **create.mdx, email-status.mdx, send-login-link.mdx** — No `# Headers` section. These are public/unauthenticated endpoints, consistent with their design (rate-limited by IP, not by API key). Omission is intentional. +- **get.mdx** — Uses `x-velt-workspace-id` instead of `x-velt-api-key`. This is endpoint-specific and correct: retrieving a workspace uses the workspace ID + auth token rather than an API key. +- **docs.json** — All 4 new pages correctly registered under the workspace nav group. +- **sdk-changelog.mdx** — April 8, 2026 entry correctly links to `/api-reference/rest-apis/v2/workspace/create` and lists all 4 endpoints. +- **ResponseExample blocks** — All 4 new pages include `` blocks matching the add-domain/delete-domain pattern. +- **Section structure** — All 4 new pages follow: Endpoint → Headers (where applicable) → Body → Example Request → Example Response → ResponseExample. Consistent with existing workspace pages. + +### Summary +- Files corrected: 1 (pre-existing bug, delete-domain.mdx) +- Critical issues: 0 +- New page format issues: 0 +- Terminology issues: 0 diff --git a/api-reference/rest-apis/v2/workspace/create.mdx b/api-reference/rest-apis/v2/workspace/create.mdx new file mode 100644 index 00000000..05ed905d --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/create.mdx @@ -0,0 +1,128 @@ +--- +title: "Create Workspace" +api: "POST https://api.velt.dev/v2/workspace/create" +--- + +Use this API to programmatically create a new Velt workspace. Protected by IP-based rate limiting and disposable email domain blocking. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/create` + +# Body + +#### Params + + + + + Email address of the workspace owner. Disposable email domains are blocked. + + + Owner's display name. Max 200 characters. + + + Workspace name. Max 200 characters. Defaults to `"{name} workspace"` when not provided. + + + URL for the workspace avatar image. Max 2000 characters. + + + + +# Example Request + +```JSON +{ + "data": { + "ownerEmail": "owner@example.com", + "name": "My Workspace", + "workspaceName": "my-workspace", + "avatar": "https://example.com/avatar.png" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Workspace created successfully.", + "data": { + "id": "workspace_abc123", + "name": "My Workspace", + "owner": { + "email": "owner@example.com", + "id": "owner_id_123", + "name": "John Doe", + "avatar": "" + }, + "authToken": "eyJhbGciOiJSUzI1NiIs...", + "apiKeyList": { + "velt_api_key_1": { + "apiKeyName": "John Doe Test API Key", + "id": "velt_api_key_1", + "type": "testing" + } + } + } + } +} +``` + +#### Failure Response + +##### If email domain is disposable + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "Disposable email domains are not allowed." + } +} +``` + +##### If rate limit exceeded + +```JSON +{ + "error": { + "status": "RESOURCE_EXHAUSTED", + "message": "Too many requests. Please try again later." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Workspace created successfully.", + "data": { + "id": "workspace_abc123", + "name": "My Workspace", + "owner": { + "email": "owner@example.com", + "id": "owner_id_123", + "name": "John Doe", + "avatar": "" + }, + "authToken": "eyJhbGciOiJSUzI1NiIs...", + "apiKeyList": { + "velt_api_key_1": { + "apiKeyName": "John Doe Test API Key", + "id": "velt_api_key_1", + "type": "testing" + } + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/delete-domain.mdx b/api-reference/rest-apis/v2/workspace/delete-domain.mdx index 716e964b..d575f167 100644 --- a/api-reference/rest-apis/v2/workspace/delete-domain.mdx +++ b/api-reference/rest-apis/v2/workspace/delete-domain.mdx @@ -3,7 +3,7 @@ title: "Delete Domains" api: "POST https://api.velt.dev/v2/workspace/domains/delete" --- -Use this API to add new organizations and its metadata. +Use this API to remove domains from your organization's allowed domains list. # Endpoint diff --git a/api-reference/rest-apis/v2/workspace/email-status.mdx b/api-reference/rest-apis/v2/workspace/email-status.mdx new file mode 100644 index 00000000..eee9601c --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/email-status.mdx @@ -0,0 +1,89 @@ +--- +title: "Get Email Verification Status" +api: "POST https://api.velt.dev/v2/workspace/email/status" +--- + +Use this API to check whether a given email address has been verified for workspace ownership. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/email/status` + +# Body + +#### Params + + + + + Email address to check verification status for. + + + + +# Example Request + +```JSON +{ + "data": { + "ownerEmail": "owner@example.com" + } +} +``` + +# Example Response + +#### Success Response (verified) + +```JSON +{ + "result": { + "status": "success", + "message": "Email verified and workspace reactivated", + "data": { + "verified": true + } + } +} +``` + +#### Success Response (not yet verified) + +```JSON +{ + "result": { + "status": "success", + "message": "Email not yet verified", + "data": { + "verified": false + } + } +} +``` + +#### Failure Response + +##### If email is not found + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "Email not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Email verified and workspace reactivated", + "data": { + "verified": true + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/get.mdx b/api-reference/rest-apis/v2/workspace/get.mdx new file mode 100644 index 00000000..8a5bb200 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/get.mdx @@ -0,0 +1,109 @@ +--- +title: "Get Workspace" +api: "POST https://api.velt.dev/v2/workspace/get" +--- + +Use this API to retrieve details of an existing Velt workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/get` + +# Headers + + + Your workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + Empty data object. + + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Workspace retrieved successfully.", + "data": { + "id": "workspace_abc123", + "name": "My Workspace", + "owner": { + "email": "owner@example.com", + "id": "owner_id_123", + "name": "John Doe", + "avatar": "" + }, + "authToken": "eyJhbGciOiJSUzI1NiIs...", + "apiKeyList": { + "velt_api_key_1": { + "apiKeyName": "John Doe Test API Key", + "id": "velt_api_key_1", + "type": "testing" + } + } + } + } +} +``` + +#### Failure Response + +##### If workspace not found + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "Workspace not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Workspace retrieved successfully.", + "data": { + "id": "workspace_abc123", + "name": "My Workspace", + "owner": { + "email": "owner@example.com", + "id": "owner_id_123", + "name": "John Doe", + "avatar": "" + }, + "authToken": "eyJhbGciOiJSUzI1NiIs...", + "apiKeyList": { + "velt_api_key_1": { + "apiKeyName": "John Doe Test API Key", + "id": "velt_api_key_1", + "type": "testing" + } + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/send-login-link.mdx b/api-reference/rest-apis/v2/workspace/send-login-link.mdx new file mode 100644 index 00000000..719b6cbc --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/send-login-link.mdx @@ -0,0 +1,75 @@ +--- +title: "Send Login Link" +api: "POST https://api.velt.dev/v2/workspace/email/send-login-link" +--- + +Use this API to send a login link to a workspace owner's email address. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/email/send-login-link` + +# Body + +#### Params + + + + + Email address to send the login link to. + + + Valid URL to redirect the user to after login. + + + + +# Example Request + +```JSON +{ + "data": { + "email": "owner@example.com", + "continueUrl": "https://app.example.com/dashboard" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Login link sent successfully.", + "data": null + } +} +``` + +#### Failure Response + +##### If continueUrl is invalid + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "continueUrl must be a valid URL." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Login link sent successfully.", + "data": null + } +} +``` + diff --git a/docs.json b/docs.json index c292f048..38b12c1b 100644 --- a/docs.json +++ b/docs.json @@ -571,6 +571,10 @@ { "group": "Workspace", "pages": [ + "api-reference/rest-apis/v2/workspace/create", + "api-reference/rest-apis/v2/workspace/get", + "api-reference/rest-apis/v2/workspace/email-status", + "api-reference/rest-apis/v2/workspace/send-login-link", "api-reference/rest-apis/v2/workspace/add-domain", "api-reference/rest-apis/v2/workspace/delete-domain" ] diff --git a/release-notes/version-5/sdk-changelog.mdx b/release-notes/version-5/sdk-changelog.mdx index 5f7d45b3..d6e78678 100644 --- a/release-notes/version-5/sdk-changelog.mdx +++ b/release-notes/version-5/sdk-changelog.mdx @@ -9,7 +9,7 @@ description: Release Notes of changes added to the core Velt SDK - `@veltdev/client` - `@veltdev/sdk` - + ### New Features @@ -44,10 +44,26 @@ import { +- [**Workspace REST API**]: Added four new V2 REST endpoints for fully programmatic workspace provisioning: `POST /v2/workspace/create`, `POST /v2/workspace/get`, `POST /v2/workspace/email/status`, and `POST /v2/workspace/email/send-login-link`. Public endpoints are protected by IP-based rate limiting and disposable email domain blocking. [Learn more →](/api-reference/rest-apis/v2/workspace/create) + +- [**Agents**]: Enhanced Stagehand agent execution with automatic context gathering via `ensureScreenshotStrategy`, a three-layer timeout architecture (phase/act/overall), configurable model and tool controls, and an enriched output schema with `issueType` classification. + +- [**Agents**]: Added `defaultValue` support for `userContextFields` in agent configs. Lighthouse agent's minimum score threshold is now configurable at runtime via `userContext`. + +- [**Superflow**]: Added ProjectsController sub-controller to Superflow V2 with `UPDATE_PROJECT` event routing, enabling project metadata updates through the Superflow event system. + ### Improvements - [**Notifications**]: Notification panel list primitives (`VeltNotificationsPanelContentAllList`, `VeltNotificationsPanelContentDocumentsList`, `VeltNotificationsPanelContentList`, `VeltNotificationsPanelContentPeopleList`, `VeltNotificationsPanelSettingsAccordion`) now forward custom item templates (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`) to their internal child components, enabling wireframe-level item customization. +- [**Agents**]: AI execution now respects stored `execution.aiConfig` from Firestore — agent provider and model configuration is applied as stored rather than being hardcoded. Annotation HTML is auto-generated from findings with an agent name prefix, and prompt template variable handling is improved for screenshots and unavailable variables. + +- [**Core**]: Document metadata updates now use deep merge instead of shallow spread, preserving existing nested metadata fields during document updates. + +- [**Agents**]: Improved Claude provider schema prompting to generate cleaner structured output instructions, reducing malformed JSON responses. + +- [**Core**]: Extracted `ConfigurableRateLimiter` into a standalone rate limiter class with rolling-window pattern and on-demand stale-entry cleanup. Public endpoints now use the new rate limiter directly. + ### Bug Fixes - [**Notifications**]: Fixed `applyConditionalClasses` not being called on initialization in notification panel and tool primitive components, causing `velt-class` conditional styling to be missing on first render. @@ -56,6 +72,7 @@ import { - [**Comments**]: Fixed pin host static position detection failing to identify elements previously promoted to `position: relative` by the SDK. Promoted elements are now marked with attributes so subsequent features recognize their original static state. - [**Comments**]: Fixed hidden comment composer instances inside `velt-if` conditions overwriting the shared active textarea reference. - [**Access Control**]: Fixed permission cleanup on document unset not including the document context, causing access revocation to be incorrectly scoped. +- [**Agents**]: Fixed prompt template `userContext` value assignment to correctly fall through to `defaultValue` when the runtime value is `undefined`, `null`, or an empty string. Agent `userContextFields` with `defaultValue` now use defaults when users don't provide values. From 7f51579d6289dfb9637d9d8231fb4bff3ccfcf4d Mon Sep 17 00:00:00 2001 From: yoen-velt Date: Fri, 10 Apr 2026 18:09:27 -0400 Subject: [PATCH 3/7] April 9 Cloud Functions --- .claude/logs/agent-7-qa-april-9-2026.md | 28 +++++++++++++++++++++++ release-notes/version-5/sdk-changelog.mdx | 18 +++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .claude/logs/agent-7-qa-april-9-2026.md diff --git a/.claude/logs/agent-7-qa-april-9-2026.md b/.claude/logs/agent-7-qa-april-9-2026.md new file mode 100644 index 00000000..a1a0b785 --- /dev/null +++ b/.claude/logs/agent-7-qa-april-9-2026.md @@ -0,0 +1,28 @@ +## QA Summary for April 9, 2026 Sub-Entry (v5.0.2-beta.15) +### Release: Activity Intelligence Enrichment (backend only) + +### Issues Found: 0 + +### Checks Performed + +1. **Separator placement** — `---` horizontal rule correctly separates April 8 block content from the April 9 sub-entry. No blank line missing. + +2. **Italic date line format** — `_April 9, 2026 — Activity Intelligence Enrichment (backend only, no client SDK changes)_` matches the established sub-entry format used in prior multi-day blocks. + +3. **Section order** — New Features → Improvements → Bug Fixes. Correct per pipeline rules. + +4. **Section labels** — All three bullet groups use `[**Access Control**]` or `[**Activity Logs**]`. No stray "Cloud Functions" product label. The phrase "Cloud Functions" in line 83 is used as a technical noun (GCP/Firebase deployment target for `embedjudgment` and `backfilljudgments`), not as a product section label. Correct usage. + +5. **No Breaking Changes section** — Confirmed absent. Backend-only changes are correctly surfaced only under New Features, Improvements, and Bug Fixes. + +6. **No client SDK terminology** — Entry correctly contains no `client.` API method references, no prop tables, no wireframe code, and no UI customization content. + +7. **Closing `` tag** — Present at line 95, correctly closing the v5.0.2-beta.15 block. + +8. **No data-models, api-methods, wireframe, primitives, or docs.json changes** — Confirmed. No cross-file consistency checks required. + +### Summary +- Files corrected: 0 +- Critical issues: 0 +- Terminology alignments: 0 +- QA result: PASS — sub-entry is clean, no fixes required diff --git a/release-notes/version-5/sdk-changelog.mdx b/release-notes/version-5/sdk-changelog.mdx index d6e78678..0b7f1aa6 100644 --- a/release-notes/version-5/sdk-changelog.mdx +++ b/release-notes/version-5/sdk-changelog.mdx @@ -74,6 +74,24 @@ import { - [**Access Control**]: Fixed permission cleanup on document unset not including the document context, causing access revocation to be incorrectly scoped. - [**Agents**]: Fixed prompt template `userContext` value assignment to correctly fall through to `defaultValue` when the runtime value is `undefined`, `null`, or an empty string. Agent `userContextFields` with `defaultValue` now use defaults when users don't provide values. +--- + +_April 9, 2026 — Activity Intelligence Enrichment (backend only, no client SDK changes)_ + +### New Features + +- [**Activity Logs**]: Added two new backend Cloud Functions for activity intelligence enrichment: `embedjudgment` (generates dual embeddings — `reviewEmbedding` and `contentEmbedding` — per activity via Cloud Tasks) and `backfilljudgments` (bulk backfill endpoint). Recording transcriptions are fetched asynchronously and appended to the review text when a `recorder.recorderId` is present. Intelligence fields are stripped from all client-facing activity responses; consumer response shapes are unchanged. + +### Improvements + +- [**Activity Logs**]: Activity intelligence enrichment (`enrichFromActivity`) is now wired fire-and-forget into both `CoreService.createActivity` and `ActivitiesV2Service` write paths and is enabled globally for all workspaces. Previously it required a per-workspace `activityServiceConfig.isEnabled` flag and a pilot API key. `isActivityFeatureEnabled` and `isActivityFeatureImmutable` are now hardcoded to `true`, so the `activityConfig` returned by the project config endpoint always reflects both as enabled. + +- [**Activity Logs**]: Added optional `isActivityResolverUsed` boolean field to `ActivityItemSchema` and the `ActivitiesV2Service` write path. Defaults to `false`; existing callers require no changes. + +### Bug Fixes + +- [**Activity Logs**]: Fixed two bugs in the backfill path: (1) the `contentContext` guard was always truthy due to an object reference check — replaced with `hasContentSource`; (2) attachment and recorder extraction was scoped to the first comment across all records instead of each record's own comment. Backfill embeddings now only run when a valid content source exists, and attachment/recorder data is correctly attributed per activity. + From 1ff3b1b7b6c5d2477b2a5ba6cbad98112f429d54 Mon Sep 17 00:00:00 2001 From: yoen-velt Date: Fri, 10 Apr 2026 18:29:21 -0400 Subject: [PATCH 4/7] Workspace REST APIs --- .../logs/agent-7-qa-workspace-rest-apis.md | 26 ++++ .../rest-apis/v2/workspace/add-domain.mdx | 4 +- .../v2/workspace/additional-url-request.mdx | 137 ++++++++++++++++++ .../rest-apis/v2/workspace/apikey-create.mdx | 121 ++++++++++++++++ .../rest-apis/v2/workspace/apikey-update.mdx | 83 +++++++++++ .../v2/workspace/apikeymetadata-get.mdx | 81 +++++++++++ .../rest-apis/v2/workspace/apikeys-get.mdx | 107 ++++++++++++++ .../v2/workspace/authtoken-reset.mdx | 93 ++++++++++++ .../rest-apis/v2/workspace/authtokens-get.mdx | 97 +++++++++++++ .../rest-apis/v2/workspace/create.mdx | 4 +- .../rest-apis/v2/workspace/delete-domain.mdx | 2 +- .../rest-apis/v2/workspace/domains-get.mdx | 81 +++++++++++ .../v2/workspace/domains-request.mdx | 97 +++++++++++++ .../v2/workspace/emailconfig-get.mdx | 89 ++++++++++++ .../v2/workspace/emailconfig-update.mdx | 105 ++++++++++++++ .../v2/workspace/requested-domains-get.mdx | 89 ++++++++++++ .../v2/workspace/webhookconfig-get.mdx | 83 +++++++++++ .../v2/workspace/webhookconfig-update.mdx | 110 ++++++++++++++ docs.json | 16 +- release-notes/version-5/sdk-changelog.mdx | 8 + 20 files changed, 1427 insertions(+), 6 deletions(-) create mode 100644 .claude/logs/agent-7-qa-workspace-rest-apis.md create mode 100644 api-reference/rest-apis/v2/workspace/additional-url-request.mdx create mode 100644 api-reference/rest-apis/v2/workspace/apikey-create.mdx create mode 100644 api-reference/rest-apis/v2/workspace/apikey-update.mdx create mode 100644 api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/apikeys-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/authtoken-reset.mdx create mode 100644 api-reference/rest-apis/v2/workspace/authtokens-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/domains-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/domains-request.mdx create mode 100644 api-reference/rest-apis/v2/workspace/emailconfig-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/emailconfig-update.mdx create mode 100644 api-reference/rest-apis/v2/workspace/requested-domains-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx create mode 100644 api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx diff --git a/.claude/logs/agent-7-qa-workspace-rest-apis.md b/.claude/logs/agent-7-qa-workspace-rest-apis.md new file mode 100644 index 00000000..aa1088c4 --- /dev/null +++ b/.claude/logs/agent-7-qa-workspace-rest-apis.md @@ -0,0 +1,26 @@ +## QA Summary — Workspace REST APIs Complete Reference + +### Issues Found: 1 + +1. **api-reference/rest-apis/v2/workspace/add-domain.mdx** — Stale description carried from a different endpoint: "Use this API to add new organizations and its metadata." (organizations wording, wrong context). + - Fix: Updated to "Use this API to add one or more domains to the allowed domains list for a workspace." + +### Checks Performed (No Issues) + +- **All 20 pages present in docs.json** — Navigation entries verified at lines 574–593, all 20 workspace paths accounted for, correct order. +- **`api:` frontmatter URLs** — All 20 pages verified. URLs match the `# Endpoint` section inline. No mismatches. +- **`` blocks** — All 20 pages have a `` block containing the success response. No pages missing this block. +- **Error response format** — All pages use `{ "error": { "status": "...", "message": "..." } }` shape consistently. No deviation. +- **Auth header split** — Three tiers are correctly applied across all pages: + - Workspace-level auth (`x-velt-workspace-id` + `x-velt-auth-token`): `apikey-create`, `apikeys-get`, `apikey-update`, `authtokens-get`, `authtoken-reset`, `get` + - API-key-level auth (`x-velt-api-key` + `x-velt-auth-token`): `add-domain`, `delete-domain`, `domains-get`, `domains-request`, `requested-domains-get`, `additional-url-request`, `emailconfig-get`, `emailconfig-update`, `webhookconfig-get`, `webhookconfig-update`, `apikeymetadata-get` + - No auth (public endpoints): `create`, `send-login-link`, `email-status` +- **Body pattern consistency** — Endpoints with no body use `This endpoint does not require a request body.` + `{}` example consistently. Endpoints with body use `#### Params` + `` wrapper consistently. +- **`requested-domains-get.mdx` URL** — `api: "POST https://api.velt.dev/v2/workspace/requested/domains/get"` uses `/requested/domains/get` path (not `/domains/requested/get`). Noted as potentially non-standard path structure but consistent with the endpoint's purpose and not contradicted by any other pattern in the workspace group. + +### Summary +- Files corrected: 1 +- Critical issues: 0 +- Terminology/description fixes: 1 (stale description in pre-existing file) +- New pages (Agent-6 created): clean — no issues +- QA result: PASS with 1 minor fix applied diff --git a/api-reference/rest-apis/v2/workspace/add-domain.mdx b/api-reference/rest-apis/v2/workspace/add-domain.mdx index 8184289b..6d1234ec 100644 --- a/api-reference/rest-apis/v2/workspace/add-domain.mdx +++ b/api-reference/rest-apis/v2/workspace/add-domain.mdx @@ -3,7 +3,7 @@ title: "Add Domains" api: "POST https://api.velt.dev/v2/workspace/domains/add" --- -Use this API to add new organizations and its metadata. +Use this API to add one or more domains to the allowed domains list for a workspace. # Endpoint @@ -26,7 +26,7 @@ Use this API to add new organizations and its metadata. - Array of domains + Array of domains to add. Max 100 entries. Must be valid URLs. diff --git a/api-reference/rest-apis/v2/workspace/additional-url-request.mdx b/api-reference/rest-apis/v2/workspace/additional-url-request.mdx new file mode 100644 index 00000000..a779e3b3 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/additional-url-request.mdx @@ -0,0 +1,137 @@ +--- +title: "Handle Additional URL Request" +api: "POST https://api.velt.dev/v2/workspace/additional-url-request" +--- + +Use this API to accept or reject a pending domain addition request. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/additional-url-request` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + Action to take on the request. Accepted values: `"accept"` or `"reject"`. + + + The domain request ID to act upon. + + + The client document ID associated with the request. + + + + +# Example Request + +##### Accept a domain request + +```JSON +{ + "data": { + "action": "accept", + "id": "req_abc123", + "clientDocId": "doc_abc123" + } +} +``` + +##### Reject a domain request + +```JSON +{ + "data": { + "action": "reject", + "id": "req_abc123", + "clientDocId": "doc_abc123" + } +} +``` + +# Example Response + +#### Success Response (accept) + +```JSON +{ + "result": { + "status": "success", + "message": "Additional URL request accepted successfully.", + "data": { + "requestedDomain": { + "clientDocumentId": "doc_abc123", + "domain": "https://www.example.com", + "documentName": "My Document", + "id": "req_abc123", + "status": "accepted" + } + } + } +} +``` + +#### Success Response (reject) + +```JSON +{ + "result": { + "status": "success", + "message": "Additional URL request rejected successfully.", + "data": { + "requestedDomain": { + "clientDocumentId": "doc_abc123", + "domain": "https://www.example.com", + "documentName": "My Document", + "id": "req_abc123", + "status": "rejected" + } + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "Domain request not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Additional URL request accepted successfully.", + "data": { + "requestedDomain": { + "clientDocumentId": "doc_abc123", + "domain": "https://www.example.com", + "documentName": "My Document", + "id": "req_abc123", + "status": "accepted" + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/apikey-create.mdx b/api-reference/rest-apis/v2/workspace/apikey-create.mdx new file mode 100644 index 00000000..5fe4ac1b --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/apikey-create.mdx @@ -0,0 +1,121 @@ +--- +title: "Create API Key" +api: "POST https://api.velt.dev/v2/workspace/apikey/create" +--- + +Use this API to create a new API key for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/apikey/create` + +# Headers + + + Your Workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + Email address of the API key owner. + + + API key type. Accepted values: `"testing"` or `"production"`. Production keys require `planInfo` or `customPlanInfo`. + + + Whether to create an auth token along with the API key. Recommended: `true`. + + + Display name for the API key. + + + Plan information object associated with this API key. Required for `"production"` type unless `customPlanInfo` is `true`. + + + Whether to use custom plan info instead of standard `planInfo`. + + + Custom plan info data payload. Required when `customPlanInfo` is `true`. + + + List of domains allowed to use this API key. + + + Whether to automatically add localhost to allowed domains. + + + Whether to enable the email service for this API key. + + + Whether to enable the webhook service for this API key. + + + Configuration object for the email service. + + + Configuration object for the webhook service. + + + + +# Example Request + +```JSON +{ + "data": { + "ownerEmail": "owner@example.com", + "type": "testing", + "createAuthToken": true + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "API key created successfully.", + "data": { + "apiKey": "your_new_api_key" + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "ownerEmail is required." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "API key created successfully.", + "data": { + "apiKey": "your_new_api_key" + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/apikey-update.mdx b/api-reference/rest-apis/v2/workspace/apikey-update.mdx new file mode 100644 index 00000000..4a96c1bd --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/apikey-update.mdx @@ -0,0 +1,83 @@ +--- +title: "Update API Key" +api: "POST https://api.velt.dev/v2/workspace/apikey/update" +--- + +Use this API to update the name of an existing API key. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/apikey/update` + +# Headers + + + Your Workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + The API key to update. + + + New display name for the API key. + + + + +# Example Request + +```JSON +{ + "data": { + "apiKey": "velt_api_key_1", + "apiKeyName": "Updated Production Key" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "API key updated successfully.", + "data": null + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "API key not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "API key updated successfully.", + "data": null + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx b/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx new file mode 100644 index 00000000..05ed3814 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx @@ -0,0 +1,81 @@ +--- +title: "Get API Key Metadata" +api: "POST https://api.velt.dev/v2/workspace/apikeymetadata/get" +--- + +Use this API to retrieve metadata associated with a workspace API key. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/apikeymetadata/get` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +This endpoint does not require a request body. + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "API key metadata retrieved successfully.", + "data": { + "defaultDocumentAccessType": "public", + "planInfo": { + "type": "sdk test" + }, + "ownerEmail": "owner@example.com" + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid API key." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "API key metadata retrieved successfully.", + "data": { + "defaultDocumentAccessType": "public", + "planInfo": { + "type": "sdk test" + }, + "ownerEmail": "owner@example.com" + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/apikeys-get.mdx b/api-reference/rest-apis/v2/workspace/apikeys-get.mdx new file mode 100644 index 00000000..87cbf5db --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/apikeys-get.mdx @@ -0,0 +1,107 @@ +--- +title: "Get API Keys" +api: "POST https://api.velt.dev/v2/workspace/apikeys/get" +--- + +Use this API to retrieve a list of API keys for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/apikeys/get` + +# Headers + + + Your Workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + Filter results to specific API key IDs. + + + Number of results per page. Max `100`. Defaults to `100`. + + + Pagination token from a previous response to fetch the next page. + + + + +# Example Request + +```JSON +{ + "data": { + "pageSize": 50 + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "API keys retrieved successfully.", + "data": [ + { + "id": "velt_api_key_1", + "apiKeyName": "Production Key", + "type": "production" + }, + { + "id": "velt_api_key_2", + "apiKeyName": "Testing Key", + "type": "testing" + } + ] + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid workspace credentials." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "API keys retrieved successfully.", + "data": [ + { + "id": "velt_api_key_1", + "apiKeyName": "Production Key", + "type": "production" + }, + { + "id": "velt_api_key_2", + "apiKeyName": "Testing Key", + "type": "testing" + } + ] + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx b/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx new file mode 100644 index 00000000..d27db2a2 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx @@ -0,0 +1,93 @@ +--- +title: "Reset Auth Token" +api: "POST https://api.velt.dev/v2/workspace/authtoken/reset" +--- + +Use this API to reset the auth token for a specific API key. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/authtoken/reset` + +# Headers + + + Your Workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + The API key whose auth token should be reset. + + + + +# Example Request + +```JSON +{ + "data": { + "apiKey": "velt_api_key_1" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Auth token reset successfully.", + "data": { + "apiKey": "velt_api_key_1", + "newAuthToken": { + "token": "eyJhbGciOiJSUzI1NiIs...", + "name": "Default Auth Token", + "domains": [] + } + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "API key not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Auth token reset successfully.", + "data": { + "apiKey": "velt_api_key_1", + "newAuthToken": { + "token": "eyJhbGciOiJSUzI1NiIs...", + "name": "Default Auth Token", + "domains": [] + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/authtokens-get.mdx b/api-reference/rest-apis/v2/workspace/authtokens-get.mdx new file mode 100644 index 00000000..398f94c4 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/authtokens-get.mdx @@ -0,0 +1,97 @@ +--- +title: "Get Auth Tokens" +api: "POST https://api.velt.dev/v2/workspace/authtokens/get" +--- + +Use this API to retrieve all auth tokens associated with a specific API key. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/authtokens/get` + +# Headers + + + Your Workspace ID. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + The API key whose auth tokens should be retrieved. + + + + +# Example Request + +```JSON +{ + "data": { + "apiKey": "velt_api_key_1" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Auth tokens retrieved successfully.", + "data": { + "apiKey": "velt_api_key_1", + "authTokens": [ + { + "token": "eyJhbGciOiJSUzI1NiIs...", + "name": "Default Auth Token", + "domains": [] + } + ] + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "NOT_FOUND", + "message": "API key not found." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Auth tokens retrieved successfully.", + "data": { + "apiKey": "velt_api_key_1", + "authTokens": [ + { + "token": "eyJhbGciOiJSUzI1NiIs...", + "name": "Default Auth Token", + "domains": [] + } + ] + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/create.mdx b/api-reference/rest-apis/v2/workspace/create.mdx index 05ed905d..8a9abe27 100644 --- a/api-reference/rest-apis/v2/workspace/create.mdx +++ b/api-reference/rest-apis/v2/workspace/create.mdx @@ -36,8 +36,8 @@ Use this API to programmatically create a new Velt workspace. Protected by IP-ba { "data": { "ownerEmail": "owner@example.com", - "name": "My Workspace", - "workspaceName": "my-workspace", + "name": "John Doe", + "workspaceName": "My Workspace", "avatar": "https://example.com/avatar.png" } } diff --git a/api-reference/rest-apis/v2/workspace/delete-domain.mdx b/api-reference/rest-apis/v2/workspace/delete-domain.mdx index d575f167..c2136b60 100644 --- a/api-reference/rest-apis/v2/workspace/delete-domain.mdx +++ b/api-reference/rest-apis/v2/workspace/delete-domain.mdx @@ -26,7 +26,7 @@ Use this API to remove domains from your organization's allowed domains list. - Array of domains + Array of domains to remove. Max 100 entries. Must be valid URLs. diff --git a/api-reference/rest-apis/v2/workspace/domains-get.mdx b/api-reference/rest-apis/v2/workspace/domains-get.mdx new file mode 100644 index 00000000..bf8f7b08 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/domains-get.mdx @@ -0,0 +1,81 @@ +--- +title: "Get Domains" +api: "POST https://api.velt.dev/v2/workspace/domains/get" +--- + +Use this API to retrieve the list of allowed domains for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/domains/get` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +This endpoint does not require a request body. + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Allowed domains retrieved successfully.", + "data": { + "allowedDomains": [ + "localhost", + "127.0.0.1", + "example.com" + ] + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid API key." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Allowed domains retrieved successfully.", + "data": { + "allowedDomains": [ + "localhost", + "127.0.0.1", + "example.com" + ] + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/domains-request.mdx b/api-reference/rest-apis/v2/workspace/domains-request.mdx new file mode 100644 index 00000000..fec0998c --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/domains-request.mdx @@ -0,0 +1,97 @@ +--- +title: "Request Domain" +api: "POST https://api.velt.dev/v2/workspace/domains/request" +--- + +Use this API to submit a domain addition request for review. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/domains/request` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + The domain to request access for. + + + The client document ID associated with the domain request. + + + The organization ID making the request. + + + + +# Example Request + +```JSON +{ + "data": { + "domain": "https://www.example.com", + "clientDocumentId": "doc_abc123", + "organizationId": "org_xyz456" + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Domain request created successfully.", + "data": { + "domainRequestId": "req_abc123", + "domain": "https://www.example.com", + "clientDocumentId": "doc_abc123", + "status": "pending" + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "domain is required." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Domain request created successfully.", + "data": { + "domainRequestId": "req_abc123", + "domain": "https://www.example.com", + "clientDocumentId": "doc_abc123", + "status": "pending" + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx b/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx new file mode 100644 index 00000000..2d8bdb4b --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx @@ -0,0 +1,89 @@ +--- +title: "Get Email Config" +api: "POST https://api.velt.dev/v2/workspace/emailconfig/get" +--- + +Use this API to retrieve the current email service configuration for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/emailconfig/get` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +This endpoint does not require a request body. + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Email configuration retrieved successfully.", + "data": { + "useEmailService": false, + "emailServiceConfig": { + "type": "default", + "apiKey": "", + "fromEmail": "", + "fromCompany": "", + "commentTemplateId": "", + "tagTemplateId": "" + } + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid API key." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Email configuration retrieved successfully.", + "data": { + "useEmailService": false, + "emailServiceConfig": { + "type": "default", + "apiKey": "", + "fromEmail": "", + "fromCompany": "", + "commentTemplateId": "", + "tagTemplateId": "" + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx b/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx new file mode 100644 index 00000000..73d00285 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx @@ -0,0 +1,105 @@ +--- +title: "Update Email Config" +api: "POST https://api.velt.dev/v2/workspace/emailconfig/update" +--- + +Use this API to update the email service configuration for a workspace. At least one of `useEmailService` or `emailServiceConfig` must be provided. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/emailconfig/update` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + Whether to enable the email service. + + + Email service configuration object. + + + Email service provider type. Accepted values: `"default"` or `"sendgrid"`. + + + API key for the email service provider. + + + Sender email address. + + + Sender company name. + + + Event triggers that activate email notifications. + + + + + + +# Example Request + +```JSON +{ + "data": { + "useEmailService": true, + "emailServiceConfig": { + "type": "sendgrid", + "apiKey": "SG.xxxxxxxxxx", + "fromEmail": "noreply@example.com", + "fromCompany": "Example Corp" + } + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Email configuration updated successfully.", + "data": null + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "Invalid email service configuration." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Email configuration updated successfully.", + "data": null + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx b/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx new file mode 100644 index 00000000..c171bd5f --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx @@ -0,0 +1,89 @@ +--- +title: "Get Requested Domains" +api: "POST https://api.velt.dev/v2/workspace/requested/domains/get" +--- + +Use this API to retrieve all pending domain requests for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/requested/domains/get` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +This endpoint does not require a request body. + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Requested domains retrieved successfully.", + "data": { + "requestedDomains": { + "req_abc123": { + "clientDocumentId": "doc_abc123", + "domain": "https://www.example.com", + "documentName": "My Document", + "id": "req_abc123", + "status": "pending" + } + } + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid API key." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Requested domains retrieved successfully.", + "data": { + "requestedDomains": { + "req_abc123": { + "clientDocumentId": "doc_abc123", + "domain": "https://www.example.com", + "documentName": "My Document", + "id": "req_abc123", + "status": "pending" + } + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx b/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx new file mode 100644 index 00000000..fbf79c9c --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx @@ -0,0 +1,83 @@ +--- +title: "Get Webhook Config" +api: "POST https://api.velt.dev/v2/workspace/webhookconfig/get" +--- + +Use this API to retrieve the current webhook service configuration for a workspace. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/webhookconfig/get` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +This endpoint does not require a request body. + +# Example Request + +```JSON +{ + "data": {} +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Webhook configuration retrieved successfully.", + "data": { + "useWebhookService": false, + "webhookServiceConfig": { + "authToken": "", + "rawNotificationUrl": "", + "processedNotificationUrl": "" + } + } + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "PERMISSION_DENIED", + "message": "Invalid API key." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Webhook configuration retrieved successfully.", + "data": { + "useWebhookService": false, + "webhookServiceConfig": { + "authToken": "", + "rawNotificationUrl": "", + "processedNotificationUrl": "" + } + } + } +} +``` + diff --git a/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx b/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx new file mode 100644 index 00000000..daa87ee2 --- /dev/null +++ b/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx @@ -0,0 +1,110 @@ +--- +title: "Update Webhook Config" +api: "POST https://api.velt.dev/v2/workspace/webhookconfig/update" +--- + +Use this API to update the webhook service configuration for a workspace. At least one of `useWebhookService` or `webhookServiceConfig` must be provided. + +# Endpoint + +`POST https://api.velt.dev/v2/workspace/webhookconfig/update` + +# Headers + + + Your API key. + + + + Your [Auth Token](/security/auth-tokens). + + +# Body + +#### Params + + + + + Whether to enable the webhook service. + + + Webhook service configuration object. + + + Auth token sent with each webhook request for verification. + + + URL to receive raw (unprocessed) webhook notifications. + + + URL to receive processed webhook notifications. + + + Whether to base64 encode the webhook payload. + + + Whether to encrypt the webhook payload. + + + Public key used for payload encryption. + + + Event triggers that activate webhook notifications. + + + + + + +# Example Request + +```JSON +{ + "data": { + "useWebhookService": true, + "webhookServiceConfig": { + "authToken": "webhook_auth_token_here", + "rawNotificationUrl": "https://example.com/webhooks/raw", + "processedNotificationUrl": "https://example.com/webhooks/processed" + } + } +} +``` + +# Example Response + +#### Success Response + +```JSON +{ + "result": { + "status": "success", + "message": "Webhook configuration updated successfully.", + "data": null + } +} +``` + +#### Failure Response + +```JSON +{ + "error": { + "status": "INVALID_ARGUMENT", + "message": "Invalid webhook service configuration." + } +} +``` + + +```js +{ + "result": { + "status": "success", + "message": "Webhook configuration updated successfully.", + "data": null + } +} +``` + diff --git a/docs.json b/docs.json index 38b12c1b..8b9e1375 100644 --- a/docs.json +++ b/docs.json @@ -575,8 +575,22 @@ "api-reference/rest-apis/v2/workspace/get", "api-reference/rest-apis/v2/workspace/email-status", "api-reference/rest-apis/v2/workspace/send-login-link", + "api-reference/rest-apis/v2/workspace/apikey-create", + "api-reference/rest-apis/v2/workspace/apikeys-get", + "api-reference/rest-apis/v2/workspace/apikey-update", + "api-reference/rest-apis/v2/workspace/apikeymetadata-get", + "api-reference/rest-apis/v2/workspace/authtokens-get", + "api-reference/rest-apis/v2/workspace/authtoken-reset", "api-reference/rest-apis/v2/workspace/add-domain", - "api-reference/rest-apis/v2/workspace/delete-domain" + "api-reference/rest-apis/v2/workspace/delete-domain", + "api-reference/rest-apis/v2/workspace/domains-get", + "api-reference/rest-apis/v2/workspace/domains-request", + "api-reference/rest-apis/v2/workspace/requested-domains-get", + "api-reference/rest-apis/v2/workspace/additional-url-request", + "api-reference/rest-apis/v2/workspace/emailconfig-get", + "api-reference/rest-apis/v2/workspace/emailconfig-update", + "api-reference/rest-apis/v2/workspace/webhookconfig-get", + "api-reference/rest-apis/v2/workspace/webhookconfig-update" ] } ] diff --git a/release-notes/version-5/sdk-changelog.mdx b/release-notes/version-5/sdk-changelog.mdx index 0b7f1aa6..03ef2721 100644 --- a/release-notes/version-5/sdk-changelog.mdx +++ b/release-notes/version-5/sdk-changelog.mdx @@ -92,6 +92,14 @@ _April 9, 2026 — Activity Intelligence Enrichment (backend only, no client SDK - [**Activity Logs**]: Fixed two bugs in the backfill path: (1) the `contentContext` guard was always truthy due to an object reference check — replaced with `hasContentSource`; (2) attachment and recorder extraction was scoped to the first comment across all records instead of each record's own comment. Backfill embeddings now only run when a valid content source exists, and attachment/recorder data is correctly attributed per activity. +--- + +_April 10, 2026 — Workspace REST API Reference (backend only, no client SDK changes)_ + +### New Features + +- [**Workspace REST API**]: The workspace REST API reference is now complete with all 20 endpoints documented, covering workspace creation, API key management, auth tokens, domain management, email and webhook configuration, and API key metadata. [Learn more →](/api-reference/rest-apis/v2/workspace/create) + From 8a650f93a9b7ac23e024646e631e01ca8842a541 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Mon, 13 Apr 2026 16:24:18 -0700 Subject: [PATCH 5/7] Simplify v5.0.2-beta.15 release notes: consolidate entries and remove backend-only sections Made-with: Cursor --- release-notes/version-5/sdk-changelog.mdx | 81 +---------------------- 1 file changed, 2 insertions(+), 79 deletions(-) diff --git a/release-notes/version-5/sdk-changelog.mdx b/release-notes/version-5/sdk-changelog.mdx index 03ef2721..cd6d7638 100644 --- a/release-notes/version-5/sdk-changelog.mdx +++ b/release-notes/version-5/sdk-changelog.mdx @@ -13,92 +13,15 @@ description: Release Notes of changes added to the core Velt SDK ### New Features -- [**Notifications**]: Added 60+ granular primitive components for `VeltNotificationsPanel` and `VeltNotificationsTool`, covering every section of the notifications UI — header tabs, content lists, settings accordion, skeleton, and more. Each primitive is standalone (not nested inside another) and supports `variant`, `darkMode`, `shadowDom`, and `parentLocalUIState` props. [Learn more →](/ui-customization/features/async/notifications/notifications-primitives) +- [**Notifications**]: Added granular primitive components for `VeltNotificationsPanel` and `VeltNotificationsTool`, including — header tabs, content lists, settings accordion, skeleton, and more. Each primitive is standalone (not nested inside another) and supports `variant`, `darkMode`, `shadowDom`, and `parentLocalUIState` props. [Learn more →](/ui-customization/features/async/notifications/notifications-primitives) - - -```tsx -import { - VeltNotificationsPanelHeader, - VeltNotificationsPanelHeaderTabForYou, - VeltNotificationsPanelHeaderTabAll, - VeltNotificationsPanelContent, - VeltNotificationsPanelSettings, -} from '@veltdev/react'; - - - - - - -``` - - -```html - - - - - -``` - - - -- [**Workspace REST API**]: Added four new V2 REST endpoints for fully programmatic workspace provisioning: `POST /v2/workspace/create`, `POST /v2/workspace/get`, `POST /v2/workspace/email/status`, and `POST /v2/workspace/email/send-login-link`. Public endpoints are protected by IP-based rate limiting and disposable email domain blocking. [Learn more →](/api-reference/rest-apis/v2/workspace/create) - -- [**Agents**]: Enhanced Stagehand agent execution with automatic context gathering via `ensureScreenshotStrategy`, a three-layer timeout architecture (phase/act/overall), configurable model and tool controls, and an enriched output schema with `issueType` classification. - -- [**Agents**]: Added `defaultValue` support for `userContextFields` in agent configs. Lighthouse agent's minimum score threshold is now configurable at runtime via `userContext`. - -- [**Superflow**]: Added ProjectsController sub-controller to Superflow V2 with `UPDATE_PROJECT` event routing, enabling project metadata updates through the Superflow event system. - -### Improvements - -- [**Notifications**]: Notification panel list primitives (`VeltNotificationsPanelContentAllList`, `VeltNotificationsPanelContentDocumentsList`, `VeltNotificationsPanelContentList`, `VeltNotificationsPanelContentPeopleList`, `VeltNotificationsPanelSettingsAccordion`) now forward custom item templates (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`) to their internal child components, enabling wireframe-level item customization. - -- [**Agents**]: AI execution now respects stored `execution.aiConfig` from Firestore — agent provider and model configuration is applied as stored rather than being hardcoded. Annotation HTML is auto-generated from findings with an agent name prefix, and prompt template variable handling is improved for screenshots and unavailable variables. - -- [**Core**]: Document metadata updates now use deep merge instead of shallow spread, preserving existing nested metadata fields during document updates. - -- [**Agents**]: Improved Claude provider schema prompting to generate cleaner structured output instructions, reducing malformed JSON responses. +- [**Workspace REST API**]: Added 20 endpoints to create and manage Velt workspace covering workspace creation, API key management, auth tokens, domain management, email and webhook configuration, and API key metadata. [Learn more →](/api-reference/rest-apis/v2/workspace/create) -- [**Core**]: Extracted `ConfigurableRateLimiter` into a standalone rate limiter class with rolling-window pattern and on-demand stale-entry cleanup. Public endpoints now use the new rate limiter directly. ### Bug Fixes - -- [**Notifications**]: Fixed `applyConditionalClasses` not being called on initialization in notification panel and tool primitive components, causing `velt-class` conditional styling to be missing on first render. -- [**Notifications**]: Fixed child notification panel primitive components not receiving the `parentLocalUIState` signal from their parent, breaking per-dialog state propagation. - [**Comments**]: Fixed iframes capturing pointer events during comment pin and area pin drag/resize operations. A `velt-pin-dragging` class is now added to `body` during drag to prevent iframe event interception. -- [**Comments**]: Fixed pin host static position detection failing to identify elements previously promoted to `position: relative` by the SDK. Promoted elements are now marked with attributes so subsequent features recognize their original static state. - [**Comments**]: Fixed hidden comment composer instances inside `velt-if` conditions overwriting the shared active textarea reference. - [**Access Control**]: Fixed permission cleanup on document unset not including the document context, causing access revocation to be incorrectly scoped. -- [**Agents**]: Fixed prompt template `userContext` value assignment to correctly fall through to `defaultValue` when the runtime value is `undefined`, `null`, or an empty string. Agent `userContextFields` with `defaultValue` now use defaults when users don't provide values. - ---- - -_April 9, 2026 — Activity Intelligence Enrichment (backend only, no client SDK changes)_ - -### New Features - -- [**Activity Logs**]: Added two new backend Cloud Functions for activity intelligence enrichment: `embedjudgment` (generates dual embeddings — `reviewEmbedding` and `contentEmbedding` — per activity via Cloud Tasks) and `backfilljudgments` (bulk backfill endpoint). Recording transcriptions are fetched asynchronously and appended to the review text when a `recorder.recorderId` is present. Intelligence fields are stripped from all client-facing activity responses; consumer response shapes are unchanged. - -### Improvements - -- [**Activity Logs**]: Activity intelligence enrichment (`enrichFromActivity`) is now wired fire-and-forget into both `CoreService.createActivity` and `ActivitiesV2Service` write paths and is enabled globally for all workspaces. Previously it required a per-workspace `activityServiceConfig.isEnabled` flag and a pilot API key. `isActivityFeatureEnabled` and `isActivityFeatureImmutable` are now hardcoded to `true`, so the `activityConfig` returned by the project config endpoint always reflects both as enabled. - -- [**Activity Logs**]: Added optional `isActivityResolverUsed` boolean field to `ActivityItemSchema` and the `ActivitiesV2Service` write path. Defaults to `false`; existing callers require no changes. - -### Bug Fixes - -- [**Activity Logs**]: Fixed two bugs in the backfill path: (1) the `contentContext` guard was always truthy due to an object reference check — replaced with `hasContentSource`; (2) attachment and recorder extraction was scoped to the first comment across all records instead of each record's own comment. Backfill embeddings now only run when a valid content source exists, and attachment/recorder data is correctly attributed per activity. - ---- - -_April 10, 2026 — Workspace REST API Reference (backend only, no client SDK changes)_ - -### New Features - -- [**Workspace REST API**]: The workspace REST API reference is now complete with all 20 endpoints documented, covering workspace creation, API key management, auth tokens, domain management, email and webhook configuration, and API key metadata. [Learn more →](/api-reference/rest-apis/v2/workspace/create) From fd0d75bc1d8cb57ad48164b83ce5cea85796360d Mon Sep 17 00:00:00 2001 From: Rakesh Date: Mon, 13 Apr 2026 23:02:53 -0700 Subject: [PATCH 6/7] Improve workspace REST API docs for agent readability - Add auth pattern notes (workspace-level vs API-key-level vs public) to all 17 endpoints - Expand planInfo, emailServiceConfig, webhookServiceConfig sub-fields in apikey-create.mdx - Document triggers event types in emailconfig-update and webhookconfig-update - Clarify domain format normalization in add/delete/get domains - Add nextPageToken to apikeys-get pagination response - Add apiKeyList keyed-object note to create and get workspace - Add Next Steps chaining guidance to create workspace - Remove deprecated workspace endpoint files Made-with: Cursor --- .../rest-apis/v2/workspace/add-domain.mdx | 6 +- .../v2/workspace/additional-url-request.mdx | 137 ------------------ .../rest-apis/v2/workspace/apikey-create.mdx | 48 +++++- .../rest-apis/v2/workspace/apikey-update.mdx | 4 + .../v2/workspace/apikeymetadata-get.mdx | 4 + .../rest-apis/v2/workspace/apikeys-get.mdx | 14 +- .../v2/workspace/authtoken-reset.mdx | 4 + .../rest-apis/v2/workspace/authtokens-get.mdx | 4 + .../rest-apis/v2/workspace/create.mdx | 15 ++ .../rest-apis/v2/workspace/delete-domain.mdx | 6 +- .../rest-apis/v2/workspace/domains-get.mdx | 8 + .../v2/workspace/domains-request.mdx | 97 ------------- .../rest-apis/v2/workspace/email-status.mdx | 4 + .../v2/workspace/emailconfig-get.mdx | 4 + .../v2/workspace/emailconfig-update.mdx | 23 ++- api-reference/rest-apis/v2/workspace/get.mdx | 8 + .../v2/workspace/requested-domains-get.mdx | 89 ------------ .../v2/workspace/send-login-link.mdx | 4 + .../v2/workspace/webhookconfig-get.mdx | 4 + .../v2/workspace/webhookconfig-update.mdx | 35 ++++- docs.json | 67 ++++++--- 21 files changed, 232 insertions(+), 353 deletions(-) delete mode 100644 api-reference/rest-apis/v2/workspace/additional-url-request.mdx delete mode 100644 api-reference/rest-apis/v2/workspace/domains-request.mdx delete mode 100644 api-reference/rest-apis/v2/workspace/requested-domains-get.mdx diff --git a/api-reference/rest-apis/v2/workspace/add-domain.mdx b/api-reference/rest-apis/v2/workspace/add-domain.mdx index 6d1234ec..65b236d5 100644 --- a/api-reference/rest-apis/v2/workspace/add-domain.mdx +++ b/api-reference/rest-apis/v2/workspace/add-domain.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/domains/add" Use this API to add one or more domains to the allowed domains list for a workspace. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/domains/add` @@ -26,7 +30,7 @@ Use this API to add one or more domains to the allowed domains list for a worksp - Array of domains to add. Max 100 entries. Must be valid URLs. + Array of domains to add. Max 100 entries. You can send full URLs (e.g., `"https://www.example.com"`) or bare domains (e.g., `"example.com"`). The API normalizes all entries by stripping the protocol and `www` prefix — the stored and returned value will be the bare domain (e.g., `"example.com"`). Wildcard subdomains are supported (e.g., `"*.firebase.com"`). diff --git a/api-reference/rest-apis/v2/workspace/additional-url-request.mdx b/api-reference/rest-apis/v2/workspace/additional-url-request.mdx deleted file mode 100644 index a779e3b3..00000000 --- a/api-reference/rest-apis/v2/workspace/additional-url-request.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: "Handle Additional URL Request" -api: "POST https://api.velt.dev/v2/workspace/additional-url-request" ---- - -Use this API to accept or reject a pending domain addition request. - -# Endpoint - -`POST https://api.velt.dev/v2/workspace/additional-url-request` - -# Headers - - - Your API key. - - - - Your [Auth Token](/security/auth-tokens). - - -# Body - -#### Params - - - - - Action to take on the request. Accepted values: `"accept"` or `"reject"`. - - - The domain request ID to act upon. - - - The client document ID associated with the request. - - - - -# Example Request - -##### Accept a domain request - -```JSON -{ - "data": { - "action": "accept", - "id": "req_abc123", - "clientDocId": "doc_abc123" - } -} -``` - -##### Reject a domain request - -```JSON -{ - "data": { - "action": "reject", - "id": "req_abc123", - "clientDocId": "doc_abc123" - } -} -``` - -# Example Response - -#### Success Response (accept) - -```JSON -{ - "result": { - "status": "success", - "message": "Additional URL request accepted successfully.", - "data": { - "requestedDomain": { - "clientDocumentId": "doc_abc123", - "domain": "https://www.example.com", - "documentName": "My Document", - "id": "req_abc123", - "status": "accepted" - } - } - } -} -``` - -#### Success Response (reject) - -```JSON -{ - "result": { - "status": "success", - "message": "Additional URL request rejected successfully.", - "data": { - "requestedDomain": { - "clientDocumentId": "doc_abc123", - "domain": "https://www.example.com", - "documentName": "My Document", - "id": "req_abc123", - "status": "rejected" - } - } - } -} -``` - -#### Failure Response - -```JSON -{ - "error": { - "status": "NOT_FOUND", - "message": "Domain request not found." - } -} -``` - - -```js -{ - "result": { - "status": "success", - "message": "Additional URL request accepted successfully.", - "data": { - "requestedDomain": { - "clientDocumentId": "doc_abc123", - "domain": "https://www.example.com", - "documentName": "My Document", - "id": "req_abc123", - "status": "accepted" - } - } - } -} -``` - diff --git a/api-reference/rest-apis/v2/workspace/apikey-create.mdx b/api-reference/rest-apis/v2/workspace/apikey-create.mdx index 5fe4ac1b..b8f4cda9 100644 --- a/api-reference/rest-apis/v2/workspace/apikey-create.mdx +++ b/api-reference/rest-apis/v2/workspace/apikey-create.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/apikey/create" Use this API to create a new API key for a workspace. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/apikey/create` @@ -39,12 +43,17 @@ Use this API to create a new API key for a workspace. Plan information object associated with this API key. Required for `"production"` type unless `customPlanInfo` is `true`. + + + Plan type identifier (e.g., `"sdk test"`, `"production"`). + + Whether to use custom plan info instead of standard `planInfo`. - - Custom plan info data payload. Required when `customPlanInfo` is `true`. + + Freeform custom plan info data payload. Required when `customPlanInfo` is `true`. You can pass any key-value pairs needed for your custom plan configuration. List of domains allowed to use this API key. @@ -59,10 +68,41 @@ Use this API to create a new API key for a workspace. Whether to enable the webhook service for this API key. - Configuration object for the email service. + Configuration object for the email service. See [Update Email Config](/api-reference/rest-apis/v2/workspace/emailconfig-update) for the full schema. + + + Email service provider type. Accepted values: `"default"` or `"sendgrid"`. + + + API key for the email service provider (e.g., your SendGrid API key). + + + Sender email address. + + + Sender company name. + + + SendGrid template ID for comment notification emails. + + + SendGrid template ID for tag/mention notification emails. + + - Configuration object for the webhook service. + Configuration object for the webhook service. See [Update Webhook Config](/api-reference/rest-apis/v2/workspace/webhookconfig-update) for the full schema. + + + Auth token sent with each webhook request for verification. + + + URL to receive raw (unprocessed) webhook notifications. + + + URL to receive processed webhook notifications. + + diff --git a/api-reference/rest-apis/v2/workspace/apikey-update.mdx b/api-reference/rest-apis/v2/workspace/apikey-update.mdx index 4a96c1bd..0c57de38 100644 --- a/api-reference/rest-apis/v2/workspace/apikey-update.mdx +++ b/api-reference/rest-apis/v2/workspace/apikey-update.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/apikey/update" Use this API to update the name of an existing API key. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/apikey/update` diff --git a/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx b/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx index 05ed3814..1cbc6d08 100644 --- a/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx +++ b/api-reference/rest-apis/v2/workspace/apikeymetadata-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/apikeymetadata/get" Use this API to retrieve metadata associated with a workspace API key. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/apikeymetadata/get` diff --git a/api-reference/rest-apis/v2/workspace/apikeys-get.mdx b/api-reference/rest-apis/v2/workspace/apikeys-get.mdx index 87cbf5db..29ed3bdd 100644 --- a/api-reference/rest-apis/v2/workspace/apikeys-get.mdx +++ b/api-reference/rest-apis/v2/workspace/apikeys-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/apikeys/get" Use this API to retrieve a list of API keys for a workspace. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/apikeys/get` @@ -67,11 +71,16 @@ Use this API to retrieve a list of API keys for a workspace. "apiKeyName": "Testing Key", "type": "testing" } - ] + ], + "nextPageToken": "eyJsYXN0SWQiOiJ2ZWx0X2FwaV9rZXlfMiJ9" } } ``` + +If there are more results, the response includes a `nextPageToken` string. Pass this value as `pageToken` in your next request to fetch the next page. When no `nextPageToken` is returned, you have reached the last page. + + #### Failure Response ```JSON @@ -100,7 +109,8 @@ Use this API to retrieve a list of API keys for a workspace. "apiKeyName": "Testing Key", "type": "testing" } - ] + ], + "nextPageToken": "eyJsYXN0SWQiOiJ2ZWx0X2FwaV9rZXlfMiJ9" } } ``` diff --git a/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx b/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx index d27db2a2..221c6e73 100644 --- a/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx +++ b/api-reference/rest-apis/v2/workspace/authtoken-reset.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/authtoken/reset" Use this API to reset the auth token for a specific API key. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/authtoken/reset` diff --git a/api-reference/rest-apis/v2/workspace/authtokens-get.mdx b/api-reference/rest-apis/v2/workspace/authtokens-get.mdx index 398f94c4..81a20747 100644 --- a/api-reference/rest-apis/v2/workspace/authtokens-get.mdx +++ b/api-reference/rest-apis/v2/workspace/authtokens-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/authtokens/get" Use this API to retrieve all auth tokens associated with a specific API key. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/authtokens/get` diff --git a/api-reference/rest-apis/v2/workspace/create.mdx b/api-reference/rest-apis/v2/workspace/create.mdx index 8a9abe27..ed601b7f 100644 --- a/api-reference/rest-apis/v2/workspace/create.mdx +++ b/api-reference/rest-apis/v2/workspace/create.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/create" Use this API to programmatically create a new Velt workspace. Protected by IP-based rate limiting and disposable email domain blocking. + +This is a **public endpoint** — no authentication headers are required. + + # Endpoint `POST https://api.velt.dev/v2/workspace/create` @@ -74,6 +78,10 @@ Use this API to programmatically create a new Velt workspace. Protected by IP-ba } ``` + +`apiKeyList` is a **keyed object** (not an array). Each key is the API key ID. To extract the first API key, use `Object.keys(result.data.apiKeyList)[0]` in JavaScript or iterate over the object keys. + + #### Failure Response ##### If email domain is disposable @@ -98,6 +106,13 @@ Use this API to programmatically create a new Velt workspace. Protected by IP-ba } ``` +# Next Steps + +After creating a workspace, use the response values for subsequent API calls: + +- **Workspace-level endpoints** (e.g., [Get Workspace](/api-reference/rest-apis/v2/workspace/get), [Create API Key](/api-reference/rest-apis/v2/workspace/apikey/create)): pass `result.data.id` as the `x-velt-workspace-id` header and `result.data.authToken` as the `x-velt-auth-token` header. +- **API-key-level endpoints** (e.g., [Add Domains](/api-reference/rest-apis/v2/workspace/domains/add), [Update Email Config](/api-reference/rest-apis/v2/workspace/emailconfig/update)): extract the API key ID from `Object.keys(result.data.apiKeyList)[0]`, then retrieve its auth token via [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get). Pass these as `x-velt-api-key` and `x-velt-auth-token`. + ```js { diff --git a/api-reference/rest-apis/v2/workspace/delete-domain.mdx b/api-reference/rest-apis/v2/workspace/delete-domain.mdx index c2136b60..fa74b52a 100644 --- a/api-reference/rest-apis/v2/workspace/delete-domain.mdx +++ b/api-reference/rest-apis/v2/workspace/delete-domain.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/domains/delete" Use this API to remove domains from your organization's allowed domains list. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/domains/delete` @@ -26,7 +30,7 @@ Use this API to remove domains from your organization's allowed domains list. - Array of domains to remove. Max 100 entries. Must be valid URLs. + Array of domains to remove. Max 100 entries. You can send full URLs (e.g., `"https://www.example.com"`) or bare domains (e.g., `"example.com"`). The API normalizes all entries by stripping the protocol and `www` prefix before matching. diff --git a/api-reference/rest-apis/v2/workspace/domains-get.mdx b/api-reference/rest-apis/v2/workspace/domains-get.mdx index bf8f7b08..4aa716cb 100644 --- a/api-reference/rest-apis/v2/workspace/domains-get.mdx +++ b/api-reference/rest-apis/v2/workspace/domains-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/domains/get" Use this API to retrieve the list of allowed domains for a workspace. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/domains/get` @@ -23,6 +27,10 @@ Use this API to retrieve the list of allowed domains for a workspace. This endpoint does not require a request body. + +The returned `allowedDomains` array contains bare domains (e.g., `"example.com"`, `"localhost"`). Protocols and `www` prefixes are stripped during storage. + + # Example Request ```JSON diff --git a/api-reference/rest-apis/v2/workspace/domains-request.mdx b/api-reference/rest-apis/v2/workspace/domains-request.mdx deleted file mode 100644 index fec0998c..00000000 --- a/api-reference/rest-apis/v2/workspace/domains-request.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: "Request Domain" -api: "POST https://api.velt.dev/v2/workspace/domains/request" ---- - -Use this API to submit a domain addition request for review. - -# Endpoint - -`POST https://api.velt.dev/v2/workspace/domains/request` - -# Headers - - - Your API key. - - - - Your [Auth Token](/security/auth-tokens). - - -# Body - -#### Params - - - - - The domain to request access for. - - - The client document ID associated with the domain request. - - - The organization ID making the request. - - - - -# Example Request - -```JSON -{ - "data": { - "domain": "https://www.example.com", - "clientDocumentId": "doc_abc123", - "organizationId": "org_xyz456" - } -} -``` - -# Example Response - -#### Success Response - -```JSON -{ - "result": { - "status": "success", - "message": "Domain request created successfully.", - "data": { - "domainRequestId": "req_abc123", - "domain": "https://www.example.com", - "clientDocumentId": "doc_abc123", - "status": "pending" - } - } -} -``` - -#### Failure Response - -```JSON -{ - "error": { - "status": "INVALID_ARGUMENT", - "message": "domain is required." - } -} -``` - - -```js -{ - "result": { - "status": "success", - "message": "Domain request created successfully.", - "data": { - "domainRequestId": "req_abc123", - "domain": "https://www.example.com", - "clientDocumentId": "doc_abc123", - "status": "pending" - } - } -} -``` - diff --git a/api-reference/rest-apis/v2/workspace/email-status.mdx b/api-reference/rest-apis/v2/workspace/email-status.mdx index eee9601c..5a0ee3da 100644 --- a/api-reference/rest-apis/v2/workspace/email-status.mdx +++ b/api-reference/rest-apis/v2/workspace/email-status.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/email/status" Use this API to check whether a given email address has been verified for workspace ownership. + +This is a **public endpoint** — no authentication headers are required. + + # Endpoint `POST https://api.velt.dev/v2/workspace/email/status` diff --git a/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx b/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx index 2d8bdb4b..0605562c 100644 --- a/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx +++ b/api-reference/rest-apis/v2/workspace/emailconfig-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/emailconfig/get" Use this API to retrieve the current email service configuration for a workspace. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/emailconfig/get` diff --git a/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx b/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx index 73d00285..75ade310 100644 --- a/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx +++ b/api-reference/rest-apis/v2/workspace/emailconfig-update.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/emailconfig/update" Use this API to update the email service configuration for a workspace. At least one of `useEmailService` or `emailServiceConfig` must be provided. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/emailconfig/update` @@ -44,7 +48,24 @@ Use this API to update the email service configuration for a workspace. At least Sender company name. - Event triggers that activate email notifications. + Event triggers that activate email notifications. Each key is an event type string and the value is a boolean to enable (`true`) or disable (`false`) that trigger. See [Webhooks](/webhooks/advanced) for the full list of event types. Common keys include: + + + Trigger when a new comment thread is created. + + + Trigger when a new comment is added to a thread. + + + Trigger when a thread's status changes (e.g., resolved). + + + Trigger when a thread is assigned to a user. + + + Trigger when a thread's priority changes. + + diff --git a/api-reference/rest-apis/v2/workspace/get.mdx b/api-reference/rest-apis/v2/workspace/get.mdx index 8a5bb200..4d88d63a 100644 --- a/api-reference/rest-apis/v2/workspace/get.mdx +++ b/api-reference/rest-apis/v2/workspace/get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/get" Use this API to retrieve details of an existing Velt workspace. + +This endpoint uses **workspace-level auth**: pass `x-velt-workspace-id` and `x-velt-auth-token` (from the Create Workspace response) as headers. + + # Endpoint `POST https://api.velt.dev/v2/workspace/get` @@ -66,6 +70,10 @@ Use this API to retrieve details of an existing Velt workspace. } ``` + +`apiKeyList` is a **keyed object** (not an array). Each key is the API key ID. To extract the first API key, use `Object.keys(result.data.apiKeyList)[0]` in JavaScript or iterate over the object keys. + + #### Failure Response ##### If workspace not found diff --git a/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx b/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx deleted file mode 100644 index c171bd5f..00000000 --- a/api-reference/rest-apis/v2/workspace/requested-domains-get.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "Get Requested Domains" -api: "POST https://api.velt.dev/v2/workspace/requested/domains/get" ---- - -Use this API to retrieve all pending domain requests for a workspace. - -# Endpoint - -`POST https://api.velt.dev/v2/workspace/requested/domains/get` - -# Headers - - - Your API key. - - - - Your [Auth Token](/security/auth-tokens). - - -# Body - -This endpoint does not require a request body. - -# Example Request - -```JSON -{ - "data": {} -} -``` - -# Example Response - -#### Success Response - -```JSON -{ - "result": { - "status": "success", - "message": "Requested domains retrieved successfully.", - "data": { - "requestedDomains": { - "req_abc123": { - "clientDocumentId": "doc_abc123", - "domain": "https://www.example.com", - "documentName": "My Document", - "id": "req_abc123", - "status": "pending" - } - } - } - } -} -``` - -#### Failure Response - -```JSON -{ - "error": { - "status": "PERMISSION_DENIED", - "message": "Invalid API key." - } -} -``` - - -```js -{ - "result": { - "status": "success", - "message": "Requested domains retrieved successfully.", - "data": { - "requestedDomains": { - "req_abc123": { - "clientDocumentId": "doc_abc123", - "domain": "https://www.example.com", - "documentName": "My Document", - "id": "req_abc123", - "status": "pending" - } - } - } - } -} -``` - diff --git a/api-reference/rest-apis/v2/workspace/send-login-link.mdx b/api-reference/rest-apis/v2/workspace/send-login-link.mdx index 719b6cbc..ac343d75 100644 --- a/api-reference/rest-apis/v2/workspace/send-login-link.mdx +++ b/api-reference/rest-apis/v2/workspace/send-login-link.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/email/send-login-link" Use this API to send a login link to a workspace owner's email address. + +This is a **public endpoint** — no authentication headers are required. + + # Endpoint `POST https://api.velt.dev/v2/workspace/email/send-login-link` diff --git a/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx b/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx index fbf79c9c..0318b63d 100644 --- a/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx +++ b/api-reference/rest-apis/v2/workspace/webhookconfig-get.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/webhookconfig/get" Use this API to retrieve the current webhook service configuration for a workspace. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/webhookconfig/get` diff --git a/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx b/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx index daa87ee2..e4166d54 100644 --- a/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx +++ b/api-reference/rest-apis/v2/workspace/webhookconfig-update.mdx @@ -5,6 +5,10 @@ api: "POST https://api.velt.dev/v2/workspace/webhookconfig/update" Use this API to update the webhook service configuration for a workspace. At least one of `useWebhookService` or `webhookServiceConfig` must be provided. + +This endpoint uses **API-key-level auth**: pass `x-velt-api-key` and `x-velt-auth-token` as headers. You can obtain these from the [Get Auth Tokens](/api-reference/rest-apis/v2/workspace/authtokens-get) endpoint. + + # Endpoint `POST https://api.velt.dev/v2/workspace/webhookconfig/update` @@ -50,7 +54,36 @@ Use this API to update the webhook service configuration for a workspace. At lea Public key used for payload encryption. - Event triggers that activate webhook notifications. + Event triggers that activate webhook notifications. Each key is an event type string and the value is a boolean to enable (`true`) or disable (`false`) that trigger. See [Webhooks](/webhooks/advanced) for the full list of event types. Common keys include: + + + Trigger when a new comment thread is created. + + + Trigger when a new comment is added to a thread. + + + Trigger when a comment is updated. + + + Trigger when a comment is deleted. + + + Trigger when a thread's status changes (e.g., resolved). + + + Trigger when a thread is assigned to a user. + + + Trigger when a thread's priority changes. + + + Trigger when a reaction is added to a comment. + + + Trigger when a reaction is removed from a comment. + + diff --git a/docs.json b/docs.json index 8b9e1375..73cb4565 100644 --- a/docs.json +++ b/docs.json @@ -571,26 +571,53 @@ { "group": "Workspace", "pages": [ - "api-reference/rest-apis/v2/workspace/create", - "api-reference/rest-apis/v2/workspace/get", - "api-reference/rest-apis/v2/workspace/email-status", - "api-reference/rest-apis/v2/workspace/send-login-link", - "api-reference/rest-apis/v2/workspace/apikey-create", - "api-reference/rest-apis/v2/workspace/apikeys-get", - "api-reference/rest-apis/v2/workspace/apikey-update", - "api-reference/rest-apis/v2/workspace/apikeymetadata-get", - "api-reference/rest-apis/v2/workspace/authtokens-get", - "api-reference/rest-apis/v2/workspace/authtoken-reset", - "api-reference/rest-apis/v2/workspace/add-domain", - "api-reference/rest-apis/v2/workspace/delete-domain", - "api-reference/rest-apis/v2/workspace/domains-get", - "api-reference/rest-apis/v2/workspace/domains-request", - "api-reference/rest-apis/v2/workspace/requested-domains-get", - "api-reference/rest-apis/v2/workspace/additional-url-request", - "api-reference/rest-apis/v2/workspace/emailconfig-get", - "api-reference/rest-apis/v2/workspace/emailconfig-update", - "api-reference/rest-apis/v2/workspace/webhookconfig-get", - "api-reference/rest-apis/v2/workspace/webhookconfig-update" + { + "group": "Account Creation and Verification", + "pages": [ + "api-reference/rest-apis/v2/workspace/create", + "api-reference/rest-apis/v2/workspace/get", + "api-reference/rest-apis/v2/workspace/email-status", + "api-reference/rest-apis/v2/workspace/send-login-link" + ] + }, + { + "group": "API Key Management", + "pages": [ + "api-reference/rest-apis/v2/workspace/apikey-create", + "api-reference/rest-apis/v2/workspace/apikeys-get", + "api-reference/rest-apis/v2/workspace/apikey-update", + "api-reference/rest-apis/v2/workspace/apikeymetadata-get" + ] + }, + { + "group": "Auth Tokens", + "pages": [ + "api-reference/rest-apis/v2/workspace/authtokens-get", + "api-reference/rest-apis/v2/workspace/authtoken-reset" + ] + }, + { + "group": "Manage Domains", + "pages": [ + "api-reference/rest-apis/v2/workspace/add-domain", + "api-reference/rest-apis/v2/workspace/delete-domain", + "api-reference/rest-apis/v2/workspace/domains-get" + ] + }, + { + "group": "Email Notifications Configuration", + "pages": [ + "api-reference/rest-apis/v2/workspace/emailconfig-get", + "api-reference/rest-apis/v2/workspace/emailconfig-update" + ] + }, + { + "group": "Webhooks Configuration", + "pages": [ + "api-reference/rest-apis/v2/workspace/webhookconfig-get", + "api-reference/rest-apis/v2/workspace/webhookconfig-update" + ] + } ] } ] From 461cd66d6cab0f3cbcc725bf484b20f78ec7aa88 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Mon, 13 Apr 2026 23:42:37 -0700 Subject: [PATCH 7/7] Merge remote-tracking branch 'origin/main' into v5.0.2-beta.13 --- docs.json | 29 ++++- .../primitives.mdx} | 8 +- .../wireframes.mdx} | 4 +- .../notifications-tool/primitives.mdx | 112 ++++++++++++++++++ .../wireframes.mdx} | 4 +- 5 files changed, 144 insertions(+), 13 deletions(-) rename ui-customization/features/async/notifications/{notifications-primitives.mdx => notifications-panel/primitives.mdx} (99%) rename ui-customization/features/async/notifications/{notifications-panel.mdx => notifications-panel/wireframes.mdx} (99%) create mode 100644 ui-customization/features/async/notifications/notifications-tool/primitives.mdx rename ui-customization/features/async/notifications/{notifications-tool.mdx => notifications-tool/wireframes.mdx} (96%) diff --git a/docs.json b/docs.json index 73cb4565..f5e53114 100644 --- a/docs.json +++ b/docs.json @@ -376,9 +376,20 @@ { "group": "In-app Notifications", "pages": [ - "ui-customization/features/async/notifications/notifications-tool", - "ui-customization/features/async/notifications/notifications-panel", - "ui-customization/features/async/notifications/notifications-primitives" + { + "group": "Notifications Tool", + "pages": [ + "ui-customization/features/async/notifications/notifications-tool/wireframes", + "ui-customization/features/async/notifications/notifications-tool/primitives" + ] + }, + { + "group": "Notifications Panel", + "pages": [ + "ui-customization/features/async/notifications/notifications-panel/wireframes", + "ui-customization/features/async/notifications/notifications-panel/primitives" + ] + } ] }, { @@ -857,6 +868,18 @@ { "source": "/get-started/setup", "destination": "/get-started/quickstart" + }, + { + "source": "/ui-customization/features/async/notifications/notifications-tool", + "destination": "/ui-customization/features/async/notifications/notifications-tool/wireframes" + }, + { + "source": "/ui-customization/features/async/notifications/notifications-panel", + "destination": "/ui-customization/features/async/notifications/notifications-panel/wireframes" + }, + { + "source": "/ui-customization/features/async/notifications/notifications-primitives", + "destination": "/ui-customization/features/async/notifications/notifications-panel/primitives" } ], "logo": { diff --git a/ui-customization/features/async/notifications/notifications-primitives.mdx b/ui-customization/features/async/notifications/notifications-panel/primitives.mdx similarity index 99% rename from ui-customization/features/async/notifications/notifications-primitives.mdx rename to ui-customization/features/async/notifications/notifications-panel/primitives.mdx index fff51cad..5b101c28 100644 --- a/ui-customization/features/async/notifications/notifications-primitives.mdx +++ b/ui-customization/features/async/notifications/notifications-panel/primitives.mdx @@ -1,12 +1,8 @@ --- -title: Notifications Primitives -description: 60+ primitive components for building custom Notifications tool and panel interfaces. +title: Notifications Panel Primitives +description: Primitive components for building custom Notifications panel interfaces. --- - -We recommend that you familiarize yourselves with [UI Customization Concepts](/ui-customization/overview) before attempting to modify any components. - - ## Overview The Notifications Primitives API provides granular components that can be used independently to build fully custom notification tool and panel interfaces. All primitives share a common set of inputs documented below; list-type primitives additionally support template forwarding via slot attributes (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`). diff --git a/ui-customization/features/async/notifications/notifications-panel.mdx b/ui-customization/features/async/notifications/notifications-panel/wireframes.mdx similarity index 99% rename from ui-customization/features/async/notifications/notifications-panel.mdx rename to ui-customization/features/async/notifications/notifications-panel/wireframes.mdx index 8f7578d9..24d2d6b0 100644 --- a/ui-customization/features/async/notifications/notifications-panel.mdx +++ b/ui-customization/features/async/notifications/notifications-panel/wireframes.mdx @@ -1,6 +1,6 @@ --- -title: Notifications Panel -description: The Notification Panel contains all notifications within the current organization. It appears when you click the notification tool or embed it directly on a page. +title: Notifications Panel Wireframes +description: Wireframes for the Notifications Panel. --- diff --git a/ui-customization/features/async/notifications/notifications-tool/primitives.mdx b/ui-customization/features/async/notifications/notifications-tool/primitives.mdx new file mode 100644 index 00000000..bc86332e --- /dev/null +++ b/ui-customization/features/async/notifications/notifications-tool/primitives.mdx @@ -0,0 +1,112 @@ +--- +title: Notifications Tool Primitives +description: Pprimitive components for building custom Notifications tool interfaces with maximum flexibility. +--- +## Overview + +The Notifications Primitives API provides granular components that can be used independently to build fully custom notification tool and panel interfaces. All primitives share a common set of inputs documented below; list-type primitives additionally support template forwarding via slot attributes (`[listItemTemplate]`, `[itemTemplate]`, `[triggerTemplate]`). + +## Common Inputs + +All Notifications primitive components accept the following inputs. See [`NotificationsPrimitiveCommonProps`](/api-reference/sdk/models/data-models#notificationsprimitivecommonprops) for the full type definition. + +| React Prop | HTML Attribute | Type | Default | Description | +|------------|----------------|------|---------|-------------| +| `variant` | `variant` | `string` | — | Visual variant for the component. | +| `darkMode` | `dark-mode` | `boolean` | `false` | Enables dark mode rendering. | +| `shadowDom` | `shadow-dom` | `boolean` | `false` | Renders the component inside a Shadow DOM. | +| `parentLocalUIState` | `parent-local-ui-state` | `object` | — | Local UI state passed down from a parent primitive. | + +--- + +## Components + +### VeltNotificationsToolIcon + +Icon displayed in the notifications tool trigger button. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolUnreadIcon + +Icon shown in the notifications tool trigger when there are unread notifications. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolLabel + +Text label displayed in the notifications tool trigger button. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + + +--- + +### VeltNotificationsToolUnreadCount + +Badge showing the count of unread notifications on the tool trigger. + + + +```jsx + +``` + +**Props:** Common inputs only (see [Common Inputs](#common-inputs) section). + + +```html + +``` + +**Attributes:** Common attributes only (see [Common Inputs](#common-inputs) section). + + \ No newline at end of file diff --git a/ui-customization/features/async/notifications/notifications-tool.mdx b/ui-customization/features/async/notifications/notifications-tool/wireframes.mdx similarity index 96% rename from ui-customization/features/async/notifications/notifications-tool.mdx rename to ui-customization/features/async/notifications/notifications-tool/wireframes.mdx index 2a753474..95bb58b3 100644 --- a/ui-customization/features/async/notifications/notifications-tool.mdx +++ b/ui-customization/features/async/notifications/notifications-tool/wireframes.mdx @@ -1,6 +1,6 @@ --- -title: Notifications Tool -description: The button that opens or closes the notification panel. +title: Notifications Tool Wireframes +description: Wireframes for the Notifications Tool. ---