VideoPlaylist video.playlist@1

Generated at from openvibe-contracts v0.177.0 and openvibe-sdk v0.44.0.

Version
1.0.0
Owner
media-hub
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/video/playlist.v1.json

video.playlist@1: one playlist on openvibe.video as the API returns it. `owner` is present on reads of one playlist: a person (kind user, with their username when known) or an app, agent or service (never named).

Fields

FieldTypeRequiredDescriptionConstraints
idstringyesA playlist id (vpl_ + ULID).
  • pattern ^vpl_[0-9A-HJKMNP-TV-Z]{26}$
titlestringyes
  • minLength 1
  • maxLength 120
descriptionstringyes
  • maxLength 2000
visibilityenumyes
  • one of "public", "unlisted", "private"
item_countintegeryes
  • minimum 0
created_atstringyesISO 8601 time.
updated_atstringyesISO 8601 time.
ownerobject
owner.kindenumyes
  • one of "user", "app", "agent", "service"
owner.usernamestring | null

Examples

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

Valid: app-owner
{
  "id": "vpl_01K7A1B2C3D4E5F6G7H8J9K0MN",
  "title": "Best of the week",
  "description": "",
  "visibility": "public",
  "item_count": 2,
  "created_at": "2026-10-12T19:00:00.000Z",
  "updated_at": "2026-10-12T19:05:00.000Z",
  "owner": {
    "kind": "app"
  }
}
Valid: basic
{
  "id": "vpl_01K7A1B2C3D4E5F6G7H8J9K0MN",
  "title": "Best of the week",
  "description": "",
  "visibility": "public",
  "item_count": 2,
  "created_at": "2026-10-12T19:00:00.000Z",
  "updated_at": "2026-10-12T19:05:00.000Z"
}
Valid: with-owner
{
  "id": "vpl_01K7A1B2C3D4E5F6G7H8J9K0MN",
  "title": "Best of the week",
  "description": "",
  "visibility": "public",
  "item_count": 2,
  "created_at": "2026-10-12T19:00:00.000Z",
  "updated_at": "2026-10-12T19:05:00.000Z",
  "owner": {
    "kind": "user",
    "username": "kim"
  }
}
Rejected: bad-id
{
  "id": "pl_1",
  "title": "Best of the week",
  "description": "",
  "visibility": "public",
  "item_count": 2,
  "created_at": "2026-10-12T19:00:00.000Z",
  "updated_at": "2026-10-12T19:05:00.000Z"
}
Rejected: bad-visibility
{
  "id": "vpl_01K7A1B2C3D4E5F6G7H8J9K0MN",
  "title": "Best of the week",
  "description": "",
  "visibility": "friends",
  "item_count": 2,
  "created_at": "2026-10-12T19:00:00.000Z",
  "updated_at": "2026-10-12T19:05:00.000Z"
}

Validate

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