TipsOverlayToken tips.overlay-token@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-token.v1.json

tips.overlay-token@1: an overlay token on OpenVibe.Tips (server/domain/overlays.js presentToken), without its secret: a scoped, revocable credential an OBS browser source holds in its URL (scopes alerts, goals), optionally bound to one overlay config. Never a creator cookie; only its hash is stored.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^tovt_[0-9A-HJKMNP-TV-Z]{26}$
creatoridentity.subject-refyes
scopesarray of enumyes
  • items: one of "alerts", "goals"
labelstring | nullyes
config_idstring | nullyes
created_atstringyes
last_used_atstring | nullyes
revoked_atstring | nullyes
activebooleanyes

Examples

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

Valid: active
{
  "id": "tovt_01JAB2C3D4E5F6G7H8J9K0MNQA",
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "scopes": [
    "alerts",
    "goals"
  ],
  "label": "OBS main scene",
  "config_id": null,
  "created_at": "2026-09-25T09:12:40.118Z",
  "last_used_at": null,
  "revoked_at": null,
  "active": true
}
Rejected: bad-scope
{
  "id": "tovt_01JAB2C3D4E5F6G7H8J9K0MNQA",
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "scopes": [
    "chat"
  ],
  "label": "OBS main scene",
  "config_id": null,
  "created_at": "2026-09-25T09:12:40.118Z",
  "last_used_at": null,
  "revoked_at": null,
  "active": true
}

Validate

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