NetworkConsentChangedPayload network.consent.changed@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
network
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/events/payloads/network.consent.changed.v1.json

network.consent.changed v1 (OpenVibe.Network, L24): a person turned a purpose on or off, an app's grant was revoked, or a choice expired. A service that caches consent answers drops that subject's answers for the purpose at once; one that is running a use for the subject (a dataset build, a recognition, an AI text) checks again before it goes on. The payload names the change and never the content it covers.

Fields

FieldTypeRequiredDescriptionConstraints
consent_idstringyes
  • pattern ^cns_[0-9A-HJKMNP-TV-Z]{26}$
subjectstringyes
  • pattern ^usr_[0-9A-HJKMNP-TV-Z]{26}$
purposeenumyes
  • one of "ai.train", "data.public", "face.recognize", "ai.looks", "app.data"
clientstring | nullyes
  • pattern ^[A-Za-z0-9][A-Za-z0-9_.:-]{0,79}$
onbooleanyesWhether the purpose is allowed after the change.
kindsarray of enumyes
  • maxItems 8
  • unique items
  • items: one of "streams", "vods", "clips", "voice", "chat", "posts", "pictures", "code"
text_versionstringyes
  • pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}\.[0-9]{1,3}$
changed_atstringyes
  • format date-time

Examples

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

Valid: turned-on
{
  "consent_id": "cns_01K6R3A1B2C3D4E5F6G7H8J9KA",
  "subject": "usr_01K6R2Z8C4V7M9Q3T5W1X2Y3Z4",
  "purpose": "ai.train",
  "client": null,
  "on": true,
  "kinds": [
    "streams"
  ],
  "text_version": "2026-10-31.1",
  "changed_at": "2026-10-31T05:00:00.000Z"
}
Rejected: carries-content
{
  "consent_id": "cns_01K6R3A1B2C3D4E5F6G7H8J9KA",
  "subject": "usr_01K6R2Z8C4V7M9Q3T5W1X2Y3Z4",
  "purpose": "ai.train",
  "client": null,
  "on": true,
  "kinds": [
    "chat"
  ],
  "text_version": "2026-10-31.1",
  "changed_at": "2026-10-31T05:00:00.000Z",
  "content": "hello"
}

Validate

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