ContentLabels common.content-labels@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- contracts
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/common/content-labels.v1.json
common.content-labels@1 (L1, labels and choices, 2026-10-31): what a stream, VOD, clip, picture or post is labelled as, and what the AI has suggested but the creator has not confirmed. Labels are choices, never bans: a label never hides content from the person who posted it, and it never hides content from a viewer whose label preferences show it. A creator sets a label; the AI may only suggest one (a suggestion the creator confirms, never a takedown); three viewer suggestions or a moderator put one on. The label set is one list everywhere: nudity, language, graphic, 18+, flashing and spoilers.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
labels | https://openvibe.network/contracts/common/content-labels.v1.json#/$defs/label | yes | The labels in force: set by the creator, or by a moderator, or by three viewer suggestions. A label never hides anything by itself; each viewer's prefs decide (network.label-prefs@1). |
|
suggested | https://openvibe.network/contracts/common/content-labels.v1.json#/$defs/label | yes | What the AI or a viewer suggested and nobody confirmed yet. Stored as a suggestion and never applied: a label in this list changes nothing for anyone until the creator (or a moderator) puts it in labels. |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: ai-suggestion
{
"labels": [
"18+"
],
"suggested": [
"nudity"
]
}Valid: creator-vod
{
"labels": [
"graphic",
"language"
],
"suggested": []
}Valid: nothing
{
"labels": [],
"suggested": []
}Rejected: duplicate-label
{
"labels": [
"nudity",
"nudity"
],
"suggested": []
}Rejected: missing-suggested
{
"labels": [
"nudity"
]
}Rejected: unknown-label
{
"labels": [
"gore"
],
"suggested": []
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('common.content-labels@1', value); // { valid, errors: [{ path, message }] }