PlayTitleResult play.title-result@1

Generated at from openvibe-contracts v0.177.0 and openvibe-sdk v0.44.0.

Version
1.0.0
Owner
play
Visibility
public
Status
active
Compatibility
backward
Decision
Games ADR-0007
Schema
https://openvibe.network/contracts/play/title-result.v1.json

The answer to registering or updating a title: the title as anyone reads it, and whether this call created it (201) or updated it (200).

Fields

FieldTypeRequiredDescriptionConstraints
titleobjectyes
title.idstringyes
  • pattern ^[a-z0-9][a-z0-9-]{1,39}$
title.namestringyes
title.urlstring | null
title.summarystring
title.playersinteger
  • minimum 0
title.achievementsarray of objectyes
title.achievements[].idstringyes
  • pattern ^[a-z0-9][a-z0-9_-]{0,63}$
title.achievements[].namestringyes
title.achievements[].descriptionstring
title.achievements[].hiddenboolean
title.achievements[].unlocked_byinteger
  • minimum 0
title.boardsarray of objectyes
title.boards[].idstringyes
  • pattern ^[a-z0-9][a-z0-9_-]{0,63}$
title.boards[].namestringyes
title.boards[].kindenumyes
  • one of "best", "sum"
title.created_atstring
  • format date-time
title.updated_atstring
  • format date-time
createdbooleanyes

Examples

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

Valid: basic
{
  "title": {
    "id": "salvage-rush",
    "name": "Salvage Rush",
    "url": null,
    "summary": "",
    "players": 2,
    "achievements": [
      {
        "id": "first-haul",
        "name": "First Haul",
        "description": "",
        "unlocked_by": 2
      }
    ],
    "boards": [
      {
        "id": "best",
        "name": "Best round",
        "kind": "best"
      }
    ],
    "created_at": "2026-10-14T12:00:00.000Z",
    "updated_at": "2026-10-14T12:00:00.000Z"
  },
  "created": true
}
Rejected: basic
{
  "title": {
    "id": "salvage-rush"
  },
  "created": "yes"
}

Validate

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