TipsOverlayConfig tips.overlay-config@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
tips
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/tips/overlay-config.v1.json

tips.overlay-config@1: an overlay config on OpenVibe.Tips (server/domain/overlays.js presentConfig): how a creator's alerts overlay (kind alerts: min_amount, duration_ms, show_message, show_amount, speak_message, sound_url, image_url, template) or goal widget (kind goal: show_amounts, show_percent, optionally one goal) looks. Open overlays using it receive every change at once.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^tovc_[0-9A-HJKMNP-TV-Z]{26}$
creatoridentity.subject-refyes
kindenumyes
  • one of "alerts", "goal"
namestringyes
settingsobjectyes
settings.min_amountinteger
  • minimum 1
settings.duration_msinteger
settings.show_messageboolean
settings.show_amountboolean
settings.speak_messageboolean
settings.sound_urlstring | null
settings.image_urlstring | null
settings.templatestring | null
settings.show_amountsboolean
settings.show_percentboolean
goal_idstring | nullyes
revisionintegeryes
  • minimum 1
created_atstringyes
updated_atstringyes

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: alerts
{
  "id": "tovc_01JAB2C3D4E5F6G7H8J9K0MNQB",
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "kind": "alerts",
  "name": "Alerts",
  "settings": {
    "min_amount": 1,
    "duration_ms": 8000,
    "show_message": true,
    "show_amount": true,
    "speak_message": false,
    "sound_url": null,
    "image_url": null,
    "template": "{name} tipped {amount} Vibes"
  },
  "goal_id": null,
  "revision": 1,
  "created_at": "2026-09-25T09:12:40.118Z",
  "updated_at": "2026-09-25T09:12:40.118Z"
}
Valid: goal
{
  "id": "tovc_01JAB2C3D4E5F6G7H8J9K0MNQC",
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "kind": "goal",
  "name": "Goal",
  "settings": {
    "show_amounts": true,
    "show_percent": true
  },
  "goal_id": "tgoal_01JAB2C3D4E5F6G7H8J9K0MNQ9",
  "revision": 1,
  "created_at": "2026-09-25T09:12:40.118Z",
  "updated_at": "2026-09-25T09:12:40.118Z"
}
Rejected: bad-kind
{
  "id": "tovc_01JAB2C3D4E5F6G7H8J9K0MNQB",
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "kind": "ticker",
  "name": "Alerts",
  "settings": {
    "min_amount": 1,
    "duration_ms": 8000,
    "show_message": true,
    "show_amount": true,
    "speak_message": false,
    "sound_url": null,
    "image_url": null,
    "template": "{name} tipped {amount} Vibes"
  },
  "goal_id": null,
  "revision": 1,
  "created_at": "2026-09-25T09:12:40.118Z",
  "updated_at": "2026-09-25T09:12:40.118Z"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('tips.overlay-config@1', value);   // { valid, errors: [{ path, message }] }