BotDevice bot.device@1

Generated at from openvibe-contracts v0.97.0 and openvibe-sdk v0.26.0.

Version
1.0.0
Owner
bot
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/bot/device.v1.json

bot.device@1: a paired device as the API presents it (domain.present.device): never a credential or publish-key hash; online is added when a robot's devices are listed.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^dev_[0-9A-HJKMNP-TV-Z]{26}$
robot_idsarray of stringyes
  • items: pattern ^rob_[0-9A-HJKMNP-TV-Z]{26}$
namestring | null
kindstringyes
agent_versionstring | null
driversarray
capabilitiesobject
last_seenstring | null
  • format date-time
revoked_atstring | null
  • format date-time
created_atstringyes
  • format date-time
updated_atstringyes
  • format date-time
onlineboolean

Examples

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

Valid: agent
{
  "id": "dev_01J8Z4N0A1B2C3D4E5F6G7H8J9",
  "robot_ids": [
    "rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X"
  ],
  "name": "rover-pi",
  "kind": "agent",
  "agent_version": "0.1.0",
  "drivers": [
    "adeept"
  ],
  "capabilities": {},
  "last_seen": "2026-09-29T19:20:00.000Z",
  "revoked_at": null,
  "created_at": "2026-09-29T19:20:00.000Z",
  "updated_at": "2026-09-29T19:20:00.000Z"
}
Rejected: bad-robot-id
{
  "id": "dev_01J8Z4N0A1B2C3D4E5F6G7H8J9",
  "robot_ids": [
    "robot-1"
  ],
  "name": "rover-pi",
  "kind": "agent",
  "agent_version": "0.1.0",
  "drivers": [
    "adeept"
  ],
  "capabilities": {},
  "last_seen": "2026-09-29T19:20:00.000Z",
  "revoked_at": null,
  "created_at": "2026-09-29T19:20:00.000Z",
  "updated_at": "2026-09-29T19:20:00.000Z"
}

Validate

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