LiveSetupTaskCompletedPayload live.setup.task_completed@1

Generated at from openvibe-contracts v0.193.1 and openvibe-sdk v0.48.0.

Version
1.0.0
Owner
live
Visibility
internal
Status
active
Compatibility
backward
Decision
ADR-004
Schema
https://openvibe.network/contracts/events/payloads/live.setup.task_completed.v1.json

live.setup.task_completed v1 (OpenVibe.Live server/streaming/setup-progress.js): a streamer finished one of the tasks of Live's go-live setup hub for the first time (their first stream slot, first custom emote, first follower, ...). Live records each task once per person (live_setup_tasks) and writes this event to its outbox in the same transaction, when it next works out the person's progress. OpenVibe.Quest turns each task into a quest (owner Q16: Live's setup steps become quests). Envelope: subject { type: user, id: usr_... } the streamer, actor the same person, visibility internal. Never carries what the person made, only which task it was.

Fields

FieldTypeRequiredDescriptionConstraints
taskenumyesThe setup hub's task id: slot, method, restream, golive, profile, offline, emote, sound, goal, powerchat, panels, share, mods, requests, moderation, robot, aibot, paste.
  • one of "slot", "method", "restream", "golive", "profile", "offline", "emote", "sound", "goal", "powerchat", "panels", "share", "mods", "requests", "moderation", "robot", "aibot", "paste"
useridentity.subject-refyesThe streamer who finished it.
titlestringThe task's title as the hub shows it.
  • maxLength 120
groupstringThe hub's group: Stream, Look & feel, Community & money, Grow, Build & mod.
  • maxLength 40
completed_atstring
  • format date-time
doneintegerHow many of the hub's tasks the person has done, this one included.
  • minimum 0
  • maximum 100
totalinteger
  • minimum 1
  • maximum 100

Examples

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

Valid: emote
{
  "task": "emote",
  "user": {
    "type": "user",
    "id": "usr_01J8Z3V9Q6N1X2Y3Z4A5B6C7D8"
  },
  "title": "Upload a custom emote",
  "group": "Look & feel",
  "completed_at": "2026-10-15T18:00:00.000Z",
  "done": 5,
  "total": 18
}
Rejected: no-user
{
  "task": "slot"
}
Rejected: unknown-task
{
  "task": "buy-coins",
  "user": {
    "type": "user",
    "id": "usr_01J8Z3V9Q6N1X2Y3Z4A5B6C7D8"
  }
}

Validate

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