MediahubVideoPublishedPayload mediahub.video.published@1

Generated at from openvibe-contracts v0.221.0 and openvibe-sdk v0.65.0.

Version
1.0.0
Owner
media-hub
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/events/payloads/mediahub.video.published.v1.json

mediahub.video.published v1 (OpenVibe.MediaHub server/video/uploads.js): a video a person uploaded or recorded on OpenVibe.Video is public and ready for the first time, so it has a listed watch page. Written to MediaHub's outbox in the transaction that makes it so; making it private and public again does not repeat it. OpenVibe.Quest credits the owner's "Publish a video" quest from it. Envelope: source media-hub (namespace mediahub), subject { type: video, id: <upload id> }, actor the owner, visibility public.

Fields

FieldTypeRequiredDescriptionConstraints
uploadstringyesThe upload id. Also the envelope subject id.
  • pattern ^vup_[0-9A-HJKMNP-TV-Z]{26}$
owneridentity.subject-refyesThe person who uploaded it.
titlestringyes
  • minLength 1
  • maxLength 120
urlstringyesIts watch page: https://openvibe.video/u/<upload id>.
  • format uri
published_atstringyes
  • format date-time

Examples

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

Valid: first
{
  "upload": "vup_01M516F1WX5NN6C0EMW2V0G8Y9",
  "owner": {
    "type": "user",
    "id": "usr_01J8Z3V9Q6N1X2Y3Z4A5B6C7D8"
  },
  "title": "A walk on the coast",
  "url": "https://openvibe.video/u/vup_01M516F1WX5NN6C0EMW2V0G8Y9",
  "published_at": "2026-10-16T03:00:00.000Z"
}
Rejected: bad-upload-id
{
  "upload": "vid_123",
  "owner": {
    "type": "user",
    "id": "usr_01J8Z3V9Q6N1X2Y3Z4A5B6C7D8"
  },
  "title": "A walk on the coast",
  "url": "https://openvibe.video/u/vid_123",
  "published_at": "2026-10-16T03:00:00.000Z"
}
Rejected: no-owner
{
  "upload": "vup_01M516F1WX5NN6C0EMW2V0G8Y9",
  "title": "A walk on the coast",
  "url": "https://openvibe.video/u/vup_01M516F1WX5NN6C0EMW2V0G8Y9",
  "published_at": "2026-10-16T03:00:00.000Z"
}

Validate

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