CommunityFeedCard community.feed-card@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- community
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/community/feed-card.v1.json
community.feed-card@1: one public card returned by GET /api/v1/feed on OpenVibe.Community.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
kind | enum | yes |
| |
url | string | yes |
| |
title | string | yes |
| |
text | string | yes |
| |
at | string | null | yes |
| |
site | string | yes |
| |
site_name | string | yes |
| |
actor | object | null | yes | ||
media | object | null | yes | ||
counts | object | yes |
| |
counts.views | integer |
| ||
counts.likes | integer |
| ||
counts.comments | integer |
| ||
live_now | boolean | |||
label | enum |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: basic
{
"id": "p:42",
"kind": "clip",
"url": "https://openvibe.live/clip/42",
"title": "A highlight",
"text": "A short clip",
"at": "2026-11-10T12:00:00.000Z",
"site": "live",
"site_name": "Live",
"actor": {
"name": "Ada",
"avatar": null
},
"media": {
"thumb": "https://openvibe.media/42.webp",
"preview": "https://openvibe.media/42.mp4",
"ratio": 1.7778,
"length": 18
},
"counts": {
"views": 12,
"likes": 3,
"comments": 1
},
"live_now": false
}Rejected: missing-title
{
"id": "p:42",
"kind": "clip",
"url": "https://openvibe.live/clip/42",
"text": "A short clip",
"at": null,
"site": "live",
"site_name": "Live",
"actor": null,
"media": null,
"counts": {}
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('community.feed-card@1', value); // { valid, errors: [{ path, message }] }