CommunityForumThread community.forum-thread@1

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

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

community.forum-thread@1: one forum thread as OpenVibe.Community's /api/v1/spaces API shows it (server/forum/service.js shapeThread): where it lives, its kind and status, category, members-only gate, author, origin, pin and lock state, score, reply count, views, pages, the last post and the caller's vote.

Fields

FieldTypeRequiredDescriptionConstraints
idintegeryes
spacestringyes
slugstringyes
titlestringyes
  • maxLength 200
urlstringyes/s/<space>/t/<slug>
kindstringyesdiscussion, request, roadmap, …
statusstring | null
categoryobject | null
members_onlyobject | null
authorobject | nullyesThe author projection: a person (subject and Network profile), OpenVibe AI (is_ai) or the system (is_system); null when unknown or deleted.
originstringyes
pinnedbooleanyes
lockedbooleanyes
scoreintegeryes
reply_countintegeryes
  • minimum 0
viewsinteger
  • minimum 0
pagesintegeryes
  • minimum 1
last_postobject | null
crosspost_ofany
last_activity_atstring | null
  • format date-time
created_atstring | nullyes
  • format date-time
my_voteenumyes
  • one of 1, -1, 0

Examples

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

Valid: new
{
  "id": 311,
  "space": "streaming",
  "slug": "restreaming-to-three-platforms",
  "title": "Restreaming to three platforms at once",
  "url": "/s/streaming/t/restreaming-to-three-platforms",
  "kind": "discussion",
  "status": null,
  "category": {
    "slug": "help",
    "name": "Help",
    "description": null,
    "position": 1
  },
  "members_only": null,
  "author": {
    "subject": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "username": "alice",
    "display_name": "Alice",
    "avatar_url": null,
    "profile_color": "#3b82f6"
  },
  "origin": "user",
  "pinned": false,
  "locked": false,
  "score": 0,
  "reply_count": 0,
  "views": 0,
  "pages": 1,
  "last_post": null,
  "crosspost_of": null,
  "last_activity_at": "2026-09-25T18:00:00.000Z",
  "created_at": "2026-09-25T18:00:00.000Z",
  "my_vote": 0
}
Rejected: bad-vote
{
  "id": 311,
  "space": "streaming",
  "slug": "restreaming-to-three-platforms",
  "title": "Restreaming to three platforms at once",
  "url": "/s/streaming/t/restreaming-to-three-platforms",
  "kind": "discussion",
  "status": null,
  "category": {
    "slug": "help",
    "name": "Help",
    "description": null,
    "position": 1
  },
  "members_only": null,
  "author": {
    "subject": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "username": "alice",
    "display_name": "Alice",
    "avatar_url": null,
    "profile_color": "#3b82f6"
  },
  "origin": "user",
  "pinned": false,
  "locked": false,
  "score": 0,
  "reply_count": 0,
  "views": 0,
  "pages": 1,
  "last_post": null,
  "crosspost_of": null,
  "last_activity_at": "2026-09-25T18:00:00.000Z",
  "created_at": "2026-09-25T18:00:00.000Z",
  "my_vote": 2
}

Validate

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