BotRobot bot.robot@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/robot.v1.json

bot.robot@1: a robot on OpenVibe.Bot as its API presents it (domain.present.robot): its owner-chosen name, the device profile it runs, who may drive it (access_policy) and the latched e-stop.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^rob_[0-9A-HJKMNP-TV-Z]{26}$
namestringyes
  • minLength 1
profile_idstringyes
  • minLength 1
profile_versionany
access_policyenumyes
  • one of "private", "invite", "queue"
limitsobjectyes
estopobjectyes
estop.latchedbooleanyes
estop.bystring | nullyes
estop.atstring | nullyes
  • format date-time
created_atstringyes
  • format date-time
updated_atstringyes
  • format date-time

Examples

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

Valid: rover
{
  "id": "rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X",
  "name": "Rover",
  "profile_id": "adeept.adr036",
  "profile_version": 1,
  "access_policy": "private",
  "limits": {
    "max_command_ms": 300
  },
  "estop": {
    "latched": false,
    "by": null,
    "at": null
  },
  "created_at": "2026-09-29T19:20:00.000Z",
  "updated_at": "2026-09-29T19:20:00.000Z"
}
Rejected: bad-policy
{
  "id": "rob_01J8Z4M2Q0R7T9YV3K6N8P1W2X",
  "name": "Rover",
  "profile_id": "adeept.adr036",
  "profile_version": 1,
  "access_policy": "public",
  "limits": {
    "max_command_ms": 300
  },
  "estop": {
    "latched": false,
    "by": null,
    "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.robot@1', value);   // { valid, errors: [{ path, message }] }