OpenVibe.Blog API
Generated at from
openvibe-contracts v0.53.0 and
openvibe-sdk v0.11.0.
Server https://openvibe.blog. 22 routes performing 12 capabilities. OpenAPI 3.1 document.
POST /api/v1/blogs
Get-or-create the blog of the acting member (X-OV-Subject, a usr_ subject): one member blog per subject, created on first use, owned by that subject, handle = the Network username unless another free
- Capabilities
- blog.blog.create
- Visibility
- first-party
- Request body
application/jsonblog.blog-create-request@1- Response
application/jsonblog.blog-create-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.blog.create</strong> (first-party): Get-or-create the blog of the acting member (X-OV-Subject, a usr_ subject): one member blog per subject, created on first use, owned by that subject, handle = the Network username unless another free handle is given. The charter's blog.create as a three-segment id. Browsers use their Network user JWT instead.</p>PATCH /api/v1/blogs/{handle}
Change a blog's title, description, language and feed settings (RSS, Atom, JSON Feed on/off, item count, full text or summaries).
- Capabilities
- blog.blog.configure
- Visibility
- first-party
- Parameters
handle(path, required)
- Request body
application/jsonblog.blog-configure-request@1- Response
application/jsonblog.blog-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.blog.configure</strong> (first-party): Change a blog's title, description, language and feed settings (RSS, Atom, JSON Feed on/off, item count, full text or summaries). Only an owner of the blog (or staff on the official blog) acting through X-OV-Subject.</p>GET /api/v1/blogs/{handle}/feed
Read a blog's JSON Feed through the API (public, published, listable posts only; the same items as /@handle/feed.json).
- Capabilities
- blog.feed.read
- Visibility
- first-party
- Parameters
handle(path, required)
- Response
application/jsonblog.json-feed@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.feed.read</strong> (first-party): Read a blog's JSON Feed through the API (public, published, listable posts only; the same items as /@handle/feed.json). Browsers and crawlers read the public RSS, Atom and JSON Feed URLs without any capability.</p>GET /api/v1/blogs/{handle}/members
List, add, change and remove a blog's members (owner, editor, author) by Network subject.
- Capabilities
- blog.member.manage
- Visibility
- first-party
- Parameters
handle(path, required)
- Input
- blog.member-request@1
- Response
application/jsonblog.member-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.member.manage</strong> (first-party): List, add, change and remove a blog's members (owner, editor, author) by Network subject. A member blog keeps at least one owner. Owners only.</p>PUT /api/v1/blogs/{handle}/members/{subject}
List, add, change and remove a blog's members (owner, editor, author) by Network subject.
- Capabilities
- blog.member.manage
- Visibility
- first-party
- Parameters
handle(path, required)subject(path, required)
- Request body
application/jsonblog.member-request@1- Response
application/jsonblog.member-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.member.manage</strong> (first-party): List, add, change and remove a blog's members (owner, editor, author) by Network subject. A member blog keeps at least one owner. Owners only.</p>DELETE /api/v1/blogs/{handle}/members/{subject}
List, add, change and remove a blog's members (owner, editor, author) by Network subject.
- Capabilities
- blog.member.manage
- Visibility
- first-party
- Parameters
handle(path, required)subject(path, required)
- Input
- blog.member-request@1
- Response
application/jsonblog.member-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.member.manage</strong> (first-party): List, add, change and remove a blog's members (owner, editor, author) by Network subject. A member blog keeps at least one owner. Owners only.</p>POST /api/v1/blogs/{handle}/posts
Create a draft post (revision 1) on a blog the acting member belongs to.
- Capabilities
- blog.post.create
- Visibility
- first-party
- Parameters
handle(path, required)
- Request body
application/jsonblog.post-create-request@1- Response
application/jsonblog.post-create-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.create</strong> (first-party): Create a draft post (revision 1) on a blog the acting member belongs to. With X-OV-Origin: ai the draft is AI-generated output (OpenVibe.AI blog.draft_post; authorship.workflow { id, runId } required): never attributed to the person, noindex, and not publishable until a person reviews it.</p>GET /api/v1/blogs/{handle}/posts?all=1
Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject.
- Capabilities
- blog.post.read
- Visibility
- first-party
- Parameters
handle(path, required)
- Response
application/jsonblog.post-read-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.read</strong> (first-party): Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject. Published public posts need no capability.</p>PUT /api/v1/blogs/{handle}/theme
Choose a blog's theme from the small set of openvibe-shared token presets (vibe, paper, slate, sand, nord, high-contrast).
- Capabilities
- blog.theme.set
- Visibility
- first-party
- Parameters
handle(path, required)
- Request body
application/jsonblog.theme-request@1- Response
application/jsonblog.blog-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.theme.set</strong> (first-party): Choose a blog's theme from the small set of openvibe-shared token presets (vibe, paper, slate, sand, nord, high-contrast). There is no site-local theme engine and no custom CSS. Owners only.</p>GET /api/v1/posts/{id}
Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject.
- Capabilities
- blog.post.read
- Visibility
- first-party
- Parameters
id(path, required)
- Response
application/jsonblog.post-read-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.read</strong> (first-party): Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject. Published public posts need no capability.</p>PATCH /api/v1/posts/{id}
Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, medi
- Capabilities
- blog.post.update
- Visibility
- first-party
- Parameters
id(path, required)
- Request body
application/jsonblog.post-update-request@1- Response
application/jsonblog.post-update-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.update</strong> (first-party): Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, media attachments (OpenVibe.Media object ids) and revert as a new revision. Authors edit their own posts; editors and owners every post of the blog.</p>DELETE /api/v1/posts/{id}
Delete a post: readers get 410, Search a tombstone, the Community thread is hidden; immutable revisions are kept.
- Capabilities
- blog.post.delete
- Visibility
- first-party
- Parameters
id(path, required)
- Response
application/jsonblog.delete-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.delete</strong> (first-party): Delete a post: readers get 410, Search a tombstone, the Community thread is hidden; immutable revisions are kept. Editors, owners, the author, and staff (moderation).</p>POST /api/v1/posts/{id}/attachments
Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, medi
- Capabilities
- blog.post.update
- Visibility
- first-party
- Parameters
id(path, required)
- Request body
application/jsonblog.post-update-request@1- Response
application/jsonblog.post-update-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.update</strong> (first-party): Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, media attachments (OpenVibe.Media object ids) and revert as a new revision. Authors edit their own posts; editors and owners every post of the blog.</p>DELETE /api/v1/posts/{id}/attachments/{aid}
Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, medi
- Capabilities
- blog.post.update
- Visibility
- first-party
- Parameters
id(path, required)aid(path, required)
- Input
- blog.post-update-request@1
- Response
application/jsonblog.post-update-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.update</strong> (first-party): Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, media attachments (OpenVibe.Media object ids) and revert as a new revision. Authors edit their own posts; editors and owners every post of the blog.</p>GET /api/v1/posts/{id}/diff
Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject.
- Capabilities
- blog.post.read
- Visibility
- first-party
- Parameters
id(path, required)
- Response
application/jsonblog.post-read-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.read</strong> (first-party): Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject. Published public posts need no capability.</p>POST /api/v1/posts/{id}/publish
Make a revision the published one (idempotent).
- Capabilities
- blog.post.publish
- Visibility
- first-party
- Parameters
id(path, required)
- Request body
application/jsonblog.publish-request@1- Response
application/jsonblog.publication-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.publish</strong> (first-party): Make a revision the published one (idempotent). AI-generated revisions are refused (409 post.review_required) until a person has recorded an approving review.</p>POST /api/v1/posts/{id}/revert
Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, medi
- Capabilities
- blog.post.update
- Visibility
- first-party
- Parameters
id(path, required)
- Request body
application/jsonblog.post-update-request@1- Response
application/jsonblog.post-update-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.update</strong> (first-party): Edit a post: content becomes a new immutable revision (expected_revision required; 412 revision.conflict when someone saved first), slug changes leave 301 redirects, visibility, taxonomy, series, media attachments (OpenVibe.Media object ids) and revert as a new revision. Authors edit their own posts; editors and owners every post of the blog.</p>GET /api/v1/posts/{id}/revisions
Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject.
- Capabilities
- blog.post.read
- Visibility
- first-party
- Parameters
id(path, required)
- Response
application/jsonblog.post-read-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.read</strong> (first-party): Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject. Published public posts need no capability.</p>GET /api/v1/posts/{id}/revisions/{n}
Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject.
- Capabilities
- blog.post.read
- Visibility
- first-party
- Parameters
id(path, required)n(path, required)
- Response
application/jsonblog.post-read-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.read</strong> (first-party): Read posts that are not public (drafts, scheduled, members-only, private), their revisions and diffs, for the member in X-OV-Subject. Published public posts need no capability.</p>POST /api/v1/posts/{id}/schedule
Schedule a publish of a revision (or an unpublish) at a future time, or cancel it.
- Capabilities
- blog.post.schedule
- Visibility
- first-party
- Parameters
id(path, required)
- Request body
application/jsonblog.schedule-request@1- Response
application/jsonblog.schedule-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.schedule</strong> (first-party): Schedule a publish of a revision (or an unpublish) at a future time, or cancel it. Idempotent per (post, action, time, revision); applied by Blog's worker with leases, so a restart never publishes twice; a job that cannot succeed emits blog.schedule.failed.</p>DELETE /api/v1/posts/{id}/schedule
Schedule a publish of a revision (or an unpublish) at a future time, or cancel it.
- Capabilities
- blog.post.schedule
- Visibility
- first-party
- Parameters
id(path, required)
- Input
- blog.schedule-request@1
- Response
application/jsonblog.schedule-result@1- Errors
- errors.problem@1 (application/problem+json)
Description
<p><strong>blog.post.schedule</strong> (first-party): Schedule a publish of a revision (or an unpublish) at a future time, or cancel it. Idempotent per (post, action, time, revision); applied by Blog's worker with leases, so a restart never publishes twice; a job that cannot succeed emits blog.schedule.failed.</p>POST /api/v1/posts/{id}/unpublish
Take a published post down (readers get 404, Search a tombstone, feeds and sitemaps drop it).
- Capabilities
- blog.post.unpublish
- Visibility
- first-party
- Parameters
id(path, required)
- Response
application/jsonblog.publication-result@1- Errors
- errors.problem@1 (application/problem+json)