NetworkModInstallRequest network.mod-install-request@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-013
Schema
https://openvibe.network/contracts/network/mod-install-request.v1.json

network.mod-install-request@1 (OpenVibe.Network; roadmap WS-M task 3, ADR-013): a runtime (OpenVibe.Games) registers an install's mod principal, POST /internal/mods with capability mods.grant.manage. The manifest (mods.mod-manifest@1) names the requested capabilities; `approve` is the subset staff approved at install, and the rest stays pending. The runtime that registers a mod is its owner: only it (or Network staff) changes its grants. Registering the same mod again answers the existing principal.

Fields

FieldTypeRequiredDescriptionConstraints
manifestobjectyesThe mod's manifest, mods.mod-manifest@1.
approvearray of stringApproved at install; each must be requested by the manifest.
  • maxItems 64
  • unique items
  • items: pattern ^[a-z][a-z0-9_]*(\.[a-z0-9_]+){2,}$
actorstringWho installed it at the runtime (a subject or 'games'), for the audit row.
  • maxLength 80

Examples

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

Valid: install
{
  "manifest": {
    "id": "mod_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "approve": [
    "games.world.announce"
  ],
  "actor": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
}
Rejected: no-manifest
{
  "approve": []
}

Validate

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