curl -X PATCH https://api.bodhveda.com/preferences/42 \
-H "Authorization: Bearer bv_xxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily digest",
"description": "Receive a daily summary of activity.",
"default_enabled": false
}'import { Bodhveda } from "@bodhveda/js";
const bodhveda = new Bodhveda("bv_xxxxxxxxx");
const pref = await bodhveda.preferences.update(42, {
name: "Daily digest",
description: "Receive a daily summary of activity.",
default_enabled: false,
});import (
"context"
bodhveda "github.com/MudgalLabs/bodhveda/sdk/go"
)
ctx := context.Background()
client := bodhveda.NewClient("bv_xxxxxxxxx", nil)
pref, _ := client.Preferences.Update(ctx, 42, &bodhveda.UpdateProjectPreferenceRequest{
Name: "Daily digest",
Description: "Receive a daily summary of activity.",
DefaultEnabled: false,
}){
"message": "Project preference updated",
"data": {
"id": 12,
"project_id": 1,
"target": {
"channel": "digest",
"topic": "none",
"event": "sent"
},
"medium": "email",
"default_enabled": false,
"label": "Weekly digest",
"created_at": "2025-11-07T05:31:56Z",
"updated_at": "2025-11-07T06:00:00Z"
}
}{
"error": "<string>",
"details": "<string>"
}Update a catalog entry
Update a catalog entry’s label and default. The natural key (channel/topic/event/medium) is immutable.
curl -X PATCH https://api.bodhveda.com/preferences/42 \
-H "Authorization: Bearer bv_xxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily digest",
"description": "Receive a daily summary of activity.",
"default_enabled": false
}'import { Bodhveda } from "@bodhveda/js";
const bodhveda = new Bodhveda("bv_xxxxxxxxx");
const pref = await bodhveda.preferences.update(42, {
name: "Daily digest",
description: "Receive a daily summary of activity.",
default_enabled: false,
});import (
"context"
bodhveda "github.com/MudgalLabs/bodhveda/sdk/go"
)
ctx := context.Background()
client := bodhveda.NewClient("bv_xxxxxxxxx", nil)
pref, _ := client.Preferences.Update(ctx, 42, &bodhveda.UpdateProjectPreferenceRequest{
Name: "Daily digest",
Description: "Receive a daily summary of activity.",
DefaultEnabled: false,
}){
"message": "Project preference updated",
"data": {
"id": 12,
"project_id": 1,
"target": {
"channel": "digest",
"topic": "none",
"event": "sent"
},
"medium": "email",
"default_enabled": false,
"label": "Weekly digest",
"created_at": "2025-11-07T05:31:56Z",
"updated_at": "2025-11-07T06:00:00Z"
}
}{
"error": "<string>",
"details": "<string>"
}name, description and default_enabled. The natural key (channel/topic/event/medium) is immutable — to change it, delete the entry and create a new one.Authorizations
Bearer authentication header of the form Bearer bv_xxxxxxxxx, where bv_xxxxxxxxx is your API Key with Full access scope.
Path Parameters
The catalog entry's ID.
Body
Updates a catalog entry's name, description, default and mandatory flag. The natural key (channel/topic/event/medium) is immutable.
Human-readable name for the catalog entry (e.g. "Weekly digest").
Optional longer blurb shown alongside the name on a settings screen. Omitted or blank stores none.
Whether recipients may opt out. A mandatory entry is cataloged (so sends pass the target gate) but its recipient toggle is refused with a 400, and any rule a recipient already had is ignored. For transactional notifications — password resets, security alerts, a one-shot welcome. default_enabled still applies, so setting it false stops the notification: mandatory removes the recipient's choice, not yours. Defaults to false.
Response
The updated catalog entry.