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

FieldTypeRequiredDescriptionConstraints
prefsobjectyesOne choice for every label. A missing label is not a choice: a client asks Network and gets all six.
  • no other fields
prefs.nudityhttps://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes
prefs.languagehttps://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes
prefs.graphichttps://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes
prefs.18+https://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes
prefs.flashinghttps://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes
prefs.spoilershttps://openvibe.network/contracts/network/label-prefs.v1.json#/$defs/choiceyes

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 }] }