NetworkLabelPrefs network.label-prefs@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- network
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/network/label-prefs.v1.json
network.label-prefs@1 (L1, labels and choices, 2026-10-31): what one person sees for each content label, on every OpenVibe site. One setting per label, stored in Network's site prefs, so the choice follows the account across Stream, Video, Pics and every other site. GET and PUT /api/v1/me/label-prefs; the response and the request are this shape. The web default is show for every label; the native apps hide nudity and 18+ until the person turns them on here (pinned by the app stores' user-content rules). The home page shows nothing labelled 18+ whatever the prefs say: it is the owner's one clean page.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
prefs | object | yes | One choice for every label. A missing label is not a choice: a client asks Network and gets all six. |
|
prefs.nudity | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes | ||
prefs.language | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes | ||
prefs.graphic | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes | ||
prefs.18+ | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes | ||
prefs.flashing | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes | ||
prefs.spoilers | https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choice | yes |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: all-show
{
"prefs": {
"nudity": "show",
"language": "show",
"graphic": "show",
"18+": "show",
"flashing": "show",
"spoilers": "show"
}
}Valid: mixed
{
"prefs": {
"nudity": "hide",
"language": "show",
"graphic": "blur",
"18+": "hide",
"flashing": "blur",
"spoilers": "blur"
}
}Rejected: extra-label
{
"prefs": {
"nudity": "show",
"language": "show",
"graphic": "show",
"18+": "show",
"flashing": "show",
"spoilers": "show",
"gore": "show"
}
}Rejected: missing-label
{
"prefs": {
"nudity": "show",
"language": "show",
"graphic": "show",
"flashing": "show",
"spoilers": "show"
}
}Rejected: unknown-choice
{
"prefs": {
"nudity": "sometimes",
"language": "show",
"graphic": "show",
"18+": "show",
"flashing": "show",
"spoilers": "show"
}
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('network.label-prefs@1', value); // { valid, errors: [{ path, message }] }