BlogPostCreateRequest blog.post-create-request@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-create-request.v1.json
blog.post-create-request@1: the body of POST /api/v1/blogs/:handle/posts on OpenVibe.Blog (blog.post.create; a member who may write, or a service acting for one; X-OV-Origin: ai makes an AI draft that needs a person's review). A new draft at revision 1: title required. Unknown fields are ignored; refusals are problem+json (post.invalid_title, post.too_long, post.invalid_visibility, post.invalid_slug, post.too_many_tags, post.invalid_series, …).
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
title | string | yes | Whitespace collapsed; required, at most 200 characters. |
|
body | string | Markdown. |
| |
summary | string | null | |||
visibility | enum | Default public; members gates it behind the blog's VIP entitlement (OpenVibe.VIP decides). |
| |
entitlement_key | string | members only: informational, default vip:<handle>. |
| |
slug | string | Default from the title; lowercase letters, digits and dashes (a taken one gets a number). | ||
allow_comments | boolean | integer | string | |||
noindex | boolean | integer | string | |||
tags | one of | At most 20 tags of at most 50 characters. | ||
categories | one of | Category paths (Parent > Child), at most 10. | ||
series | any | A series id (ser_…), a new series title, or { title }; null or empty leaves the series. | ||
series_id | string | null | |||
series_position | integer | string | null | |||
citations | array of object | Sources: a URL (with retrieved_at) or an OpenVibe.Sources item id; a quote may be text or { text }. At most 100 are kept. |
| |
citations[].url | string | null | |||
citations[].source_item_id | string | null | |||
citations[].title | string | null | |||
citations[].retrieved_at | string | null | |||
citations[].quote | any | |||
citations[].license_note | string | null | |||
message | string | null | |||
authorship | object | hybrid or imported authorship details; an AI service (X-OV-Origin: ai) writes AI drafts that need review. |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: draft
{
"title": "My restream setup",
"body": "One encoder, three platforms. Here is how.",
"summary": "One encoder, three platforms.",
"tags": "obs, restream",
"visibility": "public",
"citations": [
{
"url": "https://openre.stream/docs",
"retrieved_at": "2026-09-24T09:00:00Z"
}
]
}Rejected: no-title
{
"body": "no title"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('blog.post-create-request@1', value); // { valid, errors: [{ path, message }] }