NetworkMeConsentResult network.me-consent-result@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/me-consent-result.v1.json

network.me-consent-result@1 (L24): "Your data choices" for the signed-in person. GET /api/v1/me/consent (and the answer to PUT /api/v1/me/consent/:purpose and DELETE /api/v1/me/consent/:purpose/:client) on OpenVibe.Network. Every purpose is listed with the words the account page shows, whether the person has turned it on, and the history of their changes. Off is the default for every purpose.

Fields

FieldTypeRequiredDescriptionConstraints
purposesarray of objectyes
  • maxItems 16
  • items: no other fields
purposes[].idenumyes
  • one of "ai.train", "data.public", "face.recognize", "ai.looks", "app.data"
purposes[].titlestringyes
  • minLength 1
  • maxLength 80
purposes[].allowsstringyesWhat turning it on allows, in one plain line.
  • minLength 1
  • maxLength 300
purposes[].offstringyesWhat turning it off does.
  • minLength 1
  • maxLength 300
purposes[].cannot_undostringyesWhat turning it off cannot undo (empty when nothing).
  • maxLength 300
purposes[].adults_onlybooleanyesTurning it on asks the person to confirm they are 18 or older.
purposes[].kindsarray of enumyesThe kinds of content the person may narrow it to (empty: the purpose takes none).
  • maxItems 8
  • unique items
  • items: one of "streams", "vods", "clips", "voice", "chat", "posts", "pictures", "code"
purposes[].text_versionstringyes
  • pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}\.[0-9]{1,3}$
consentsnetwork.consentyesThe person's active choices (network.consent@1), one per purpose and app.
  • maxItems 200
historyarray of objectyesThe newest changes first.
  • maxItems 200
  • items: no other fields
history[].consent_idstringyes
  • pattern ^cns_[0-9A-HJKMNP-TV-Z]{26}$
history[].purposeenumyes
  • one of "ai.train", "data.public", "face.recognize", "ai.looks", "app.data"
history[].clientstring | null
  • pattern ^[A-Za-z0-9][A-Za-z0-9_.:-]{0,79}$
history[].actionenumyes
  • one of "granted", "revoked", "expired"
history[].atstringyes
  • format date-time
history[].byenumyesWho made the change: the person, the app being revoked, an account merge, an account deletion, or the move of an older record.
  • one of "person", "app_revoked", "merge", "deletion", "import"
history[].text_versionstringyes
  • pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}\.[0-9]{1,3}$

Examples

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

Valid: one-choice
{
  "purposes": [
    {
      "id": "ai.train",
      "title": "Train AI on my content",
      "allows": "OpenVibe may train or fine-tune its models on the content you pick.",
      "off": "Off: nothing new of yours is used for training.",
      "cannot_undo": "A model already trained keeps what it learned.",
      "adults_only": true,
      "kinds": [
        "streams",
        "vods",
        "clips",
        "voice",
        "chat",
        "posts",
        "pictures",
        "code"
      ],
      "text_version": "2026-10-31.1"
    }
  ],
  "consents": [
    {
      "id": "cns_01K6R3A1B2C3D4E5F6G7H8J9KA",
      "subject": "usr_01K6R2Z8C4V7M9Q3T5W1X2Y3Z4",
      "purpose": "ai.train",
      "on": true,
      "kinds": [
        "streams",
        "vods"
      ],
      "client": null,
      "options": {},
      "text_version": "2026-10-31.1",
      "source": "account",
      "granted_at": "2026-10-31T05:00:00.000Z",
      "revoked_at": null,
      "expires_at": null
    }
  ],
  "history": [
    {
      "consent_id": "cns_01K6R3A1B2C3D4E5F6G7H8J9KA",
      "purpose": "ai.train",
      "client": null,
      "action": "granted",
      "at": "2026-10-31T05:00:00.000Z",
      "by": "person",
      "text_version": "2026-10-31.1"
    }
  ]
}
Rejected: unknown-action
{
  "purposes": [],
  "consents": [],
  "history": [
    {
      "consent_id": "cns_01K6R3A1B2C3D4E5F6G7H8J9KA",
      "purpose": "ai.train",
      "action": "sold",
      "at": "2026-10-31T05:00:00.000Z",
      "by": "person",
      "text_version": "2026-10-31.1"
    }
  ]
}

Validate

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