NetworkFollowDeletedPayload network.follow.deleted@1

Generated at from openvibe-contracts v0.76.0 and openvibe-sdk v0.20.1.

Version
1.0.0
Owner
network
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-030
Schema
https://openvibe.network/contracts/events/payloads/network.follow.deleted.v1.json

network.follow.deleted v1 (OpenVibe.Network; roadmap WS-E task 4, ADR-030). A person stopped following something (or the follow went with an account). Written to Network's outbox in the transaction that removes the follow; unfollowing what is not followed sends nothing. A consumer applies the latest revision per (follower, target). Envelope: subject { type: user, id: <follower> }, visibility subject, actor the follower (system:network for an account removal).

Fields

FieldTypeRequiredDescriptionConstraints
followerstringyes
  • pattern ^usr_[0-9A-HJKMNP-TV-Z]{26}$
target_typeenumyes
  • one of "channel"
target_idstringyes
  • pattern ^usr_[0-9A-HJKMNP-TV-Z]{26}$
reasonenumWhy the follow went (default unfollowed).
  • one of "unfollowed", "account_removed", "target_removed"
revisionintegeryes
  • minimum 1
  • maximum 9007199254740991
atstring
  • format date-time

Examples

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

Valid: unfollow
{
  "follower": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "target_type": "channel",
  "target_id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "reason": "unfollowed",
  "revision": 2,
  "at": "2026-09-26T17:00:00Z"
}
Rejected: revision-zero
{
  "follower": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "target_type": "channel",
  "target_id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "revision": 0
}

Validate

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