BlogPostReadResult blog.post-read-result@1

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

Version
1.0.0
Owner
blog
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/blog/post-read-result.v1.json

blog.post-read-result@1: answers of blog.post.read on OpenVibe.Blog. GET /api/v1/posts/:id → { post } (editors and staff get the full view; readers of a published post the public one; a members-only post someone may not open is 403 post.members_only with a teaser); GET /api/v1/posts/:id/revisions → { revisions } (each with its length instead of the content); GET …/revisions/:n → { revision, citations }; GET …/diff?from=&to=&mode= → { diff }; GET /api/v1/blogs/:handle/posts?all=1 → { posts } (drafts too, members only).

Fields

This schema has no named fields.

Examples

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

Valid: post
{
  "post": {
    "id": "pst_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "blog": {
      "id": "blg_01JAB2C3D4E5F6G7H8J9K0MNPQ",
      "handle": "alice"
    },
    "slug": "my-restream-setup",
    "url": "https://openvibe.blog/@alice/my-restream-setup",
    "state": "published",
    "visibility": "public",
    "author_subject": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
    "title": "My restream setup",
    "summary": "One encoder, three platforms.",
    "revision": 2,
    "published_revision": 2,
    "first_published_at": "2026-09-24T10:00:00.000Z",
    "published_at": "2026-09-25T10:00:00.000Z",
    "tags": [
      "obs",
      "restream"
    ],
    "categories": [],
    "series": null,
    "allow_comments": true,
    "noindex": false,
    "indexability": {
      "indexable": true,
      "robots": "index,follow",
      "reasons": []
    }
  }
}
Valid: revisions
{
  "revisions": [
    {
      "number": 2,
      "length": 1840,
      "fields": {
        "title": "My restream setup"
      }
    }
  ]
}
Rejected: no-number
{
  "revisions": [
    {
      "length": 5
    }
  ]
}

Validate

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