InventoryEquipped inventory.equipped@1

Generated at from openvibe-contracts v0.127.0 and openvibe-sdk v0.37.0.

Version
1.0.0
Owner
inventory
Visibility
public
Status
active
Compatibility
backward
Decision
ADR-054
Schema
https://openvibe.network/contracts/inventory/equipped.v1.json

What a person has equipped (ADR-054 §2), keyed <kind>:<slot>. Surfaces read it in batches (inventory.equipped-batch@1) and cache it briefly.

Fields

FieldTypeRequiredDescriptionConstraints
subjectstringyes
  • pattern ^usr_[0-9A-HJKMNP-TV-Z]{26}$
slotsobjectyes<kind>:<slot> → the instance in use.
updated_atstringyes
  • format date-time

Examples

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

Valid: nothing
{
  "subject": "usr_01JZ0000000000000000000BBB",
  "slots": {},
  "updated_at": "2026-10-09T03:00:00Z"
}
Valid: one-slot
{
  "subject": "usr_01JZ0000000000000000000AAA",
  "slots": {
    "live.name_effect:name_effect": {
      "instance_id": "inv_01JZ00000000000000000001NV",
      "definition_id": "itd_01JZ00000000000000000001TD",
      "token": "name-fx-rainbow"
    }
  },
  "updated_at": "2026-10-09T03:00:00Z"
}
Rejected: bad-slot-key
{
  "subject": "usr_01JZ0000000000000000000AAA",
  "slots": {
    "name_effect": {
      "instance_id": "inv_01JZ00000000000000000001NV",
      "definition_id": "itd_01JZ00000000000000000001TD"
    }
  },
  "updated_at": "2026-10-09T03:00:00Z"
}

Validate

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