NewsTopicManageResult news.topic-manage-result@1

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

Version
1.0.0
Owner
news
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/news/topic-manage-result.v1.json

news.topic-manage-result@1: the answer of news.topic.manage on OpenVibe.News: POST /api/v1/topics → { topic, created } — 201 with the new topic, or 200 with the existing topic of that slug (created false; an existing topic is never renamed). Timestamps are epoch milliseconds.

Fields

FieldTypeRequiredDescriptionConstraints
topicobjectyes
topic.idstringyes
  • pattern ^top_[0-9A-HJKMNP-TV-Z]{26}$
topic.slugstringyes
topic.namestringyes
topic.descriptionstring | nullyes
topic.statusenumyes
  • one of "active", "archived"
topic.created_atintegeryesEpoch milliseconds.
topic.updated_atintegeryesEpoch milliseconds.
createdbooleanyes

Examples

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

Valid: created
{
  "topic": {
    "id": "top_01JAB1T2V3W4X5Y6Z7A8B9C0D1",
    "slug": "local",
    "name": "Local",
    "description": "Stories from the harbour towns",
    "status": "active",
    "created_at": 1790237700000,
    "updated_at": 1790237700000
  },
  "created": true
}
Rejected: iso-timestamps
{
  "topic": {
    "id": "top_01JAB1T2V3W4X5Y6Z7A8B9C0D1",
    "slug": "local",
    "name": "Local",
    "description": null,
    "status": "active",
    "created_at": "2026-09-24T08:15:00.000Z",
    "updated_at": "2026-09-24T08:15:00.000Z"
  },
  "created": true
}

Validate

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