CodesRelease codes.release@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

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

codes.release@1: one release of an app or mod as OpenVibe.Codes presents it (server/domain/releases.js view): its lifecycle (draft → published → deprecated or revoked), compatibility ranges and the app's trust tier (metadata only; grants in OpenVibe.Network are the authority). The manifest itself is served separately (codes.app-manifest@1).

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^rel_[0-9A-HJKMNP-TV-Z]{26}$
app_idstringyes
  • pattern ^app_[0-9A-HJKMNP-TV-Z]{26}$
project_idstring | null
environmentenum
  • one of "production", "sandbox"
kindenumyes
  • one of "app", "mod"
subject_idstring | null
namestringyes
versionstringyes
statusenumyes
  • one of "draft", "published", "deprecated", "revoked"
manifest_idstringyes
compatibilityobject
notesstring | null
created_atstringyes
created_bystring | null
published_atstring | null
deprecated_atstring | null
deprecation_reasonstring | null
replacementstring | null
revoked_atstring | null
revocation_reasonstring | null
trustobjectyes
trust.tierstringyes
trust.notestring | null
trust.set_bystring | null
trust.set_atstring | null

Examples

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

Valid: published
{
  "id": "rel_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "app_id": "app_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "environment": "production",
  "kind": "app",
  "subject_id": null,
  "name": "Stream Deck Bridge",
  "version": "1.4.0",
  "status": "published",
  "manifest_id": "man_01JAB2C3D4E5F6G7H8J9K0MNPT",
  "compatibility": {
    "openvibe-contracts": ">=0.40.0"
  },
  "notes": "Scene switching over the chat socket.",
  "created_at": "2026-09-24T10:00:00.000Z",
  "created_by": "app:app_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "published_at": "2026-09-24T10:05:00.000Z",
  "deprecated_at": null,
  "deprecation_reason": null,
  "replacement": null,
  "revoked_at": null,
  "revocation_reason": null,
  "trust": {
    "tier": "unreviewed",
    "note": "",
    "set_by": null,
    "set_at": null
  }
}
Rejected: unknown-status
{
  "id": "rel_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "app_id": "app_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "environment": "production",
  "kind": "app",
  "subject_id": null,
  "name": "Stream Deck Bridge",
  "version": "1.4.0",
  "status": "live",
  "manifest_id": "man_01JAB2C3D4E5F6G7H8J9K0MNPT",
  "compatibility": {
    "openvibe-contracts": ">=0.40.0"
  },
  "notes": "Scene switching over the chat socket.",
  "created_at": "2026-09-24T10:00:00.000Z",
  "created_by": "app:app_01JAB2C3D4E5F6G7H8J9K0MNPR",
  "published_at": "2026-09-24T10:05:00.000Z",
  "deprecated_at": null,
  "deprecation_reason": null,
  "replacement": null,
  "revoked_at": null,
  "revocation_reason": null,
  "trust": {
    "tier": "unreviewed",
    "note": "",
    "set_by": null,
    "set_at": null
  }
}

Validate

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