NetworkPresenceUpdateRequest network.presence-update-request@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/network/presence-update-request.v1.json

network.presence-update-request@1: the body of PUT /api/v1/me/presence on OpenVibe.Network. Every field is optional; only the fields sent change. state is the person's chosen state (auto: online or away from heartbeats, dnd, invisible); status_text and emoji are theirs; show_status is the 'Show my status' switch. An empty body is refused.

Fields

FieldTypeRequiredDescriptionConstraints
stateenumThe chosen state. auto derives online or away from the newest heartbeat and the last input.
  • one of "auto", "dnd", "invisible"
status_textstring | nullThe status line; null clears it. Markup and control characters are stripped.
  • maxLength 80
emojistring | nullOne emoji, or null to clear it. More than one grapheme cluster is refused.
  • maxLength 16
show_statusbooleanThe 'Show my status' switch (default on). Off reads as offline to everyone, like invisible.

Examples

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

Valid: clear
{
  "status_text": null,
  "emoji": null,
  "show_status": false
}
Valid: state-only
{
  "state": "dnd"
}
Valid: text-and-emoji
{
  "status_text": "Out for lunch",
  "emoji": "🍜"
}
Rejected: empty
{}
Rejected: long-emoji
{
  "emoji": "not-an-emoji-at-all"
}
Rejected: unknown-field
{
  "state": "auto",
  "last_seen": "2026-11-07T09:00:00.000Z"
}
Rejected: unknown-state
{
  "state": "online"
}

Validate

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