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
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | integer | yes | ||
space | string | yes | ||
slug | string | yes | ||
title | string | yes |
| |
url | string | yes | /s/<space>/t/<slug> | |
kind | string | yes | discussion, request, roadmap, … | |
status | string | null | |||
category | object | null | |||
members_only | object | null | |||
author | object | null | yes | The author projection: a person (subject and Network profile), OpenVibe AI (is_ai) or the system (is_system); null when unknown or deleted. | |
origin | string | yes | ||
pinned | boolean | yes | ||
locked | boolean | yes | ||
score | integer | yes | ||
reply_count | integer | yes |
| |
views | integer |
| ||
pages | integer | yes |
| |
last_post | object | null | |||
crosspost_of | any | |||
last_activity_at | string | null |
| ||
created_at | string | null | yes |
| |
my_vote | enum | yes |
|
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 }] }