ServiceManifest registry.service-manifest@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
network
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/registry/service-manifest.v1.json

What a service is, where it lives and what it offers. The ecosystem registry is built from these, not from hard-coded route maps.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^[a-z][a-z0-9-]{1,39}$
namestring
versionstringyes
  • pattern ^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$
statusenumyes
  • one of "placeholder", "alpha", "beta", "stable", "degraded", "retired"
repositorystringyes
  • pattern ^OpenVibers/[A-Za-z0-9._-]+$
domainsarray of stringyes
publicOriginstring
  • format uri
healthstring
  • pattern ^/
readystring
  • pattern ^/
capabilitiesarray of stringyes
eventsProducedarray of stringyes
eventsConsumedarray of stringyes
namespacesOwnedarray of stringyes
contractRangesobject
notesstring

Examples

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

Valid: media
{
  "version": "0.1.0",
  "contractRanges": {
    "openvibe-contracts": "^0.1.0"
  },
  "id": "media",
  "name": "OpenVibe.Media",
  "status": "beta",
  "repository": "OpenVibers/OpenVibe.Media",
  "domains": [
    "openvibe.media"
  ],
  "publicOrigin": "https://openvibe.media",
  "health": "/healthz",
  "capabilities": [
    "media.object.upload",
    "media.object.read"
  ],
  "eventsProduced": [],
  "eventsConsumed": [],
  "namespacesOwned": [
    "media.*"
  ]
}
Rejected: bad-status
{
  "id": "x1",
  "version": "1.0.0",
  "status": "live",
  "repository": "OpenVibers/X",
  "domains": [],
  "capabilities": [],
  "eventsProduced": [],
  "eventsConsumed": [],
  "namespacesOwned": []
}

Validate

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