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/json blog.blog-create-request@1
Response
application/json blog.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&#39;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/json blog.blog-configure-request@1
Response
application/json blog.blog-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>blog.blog.configure</strong> (first-party): Change a blog&#39;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/json blog.json-feed@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>blog.feed.read</strong> (first-party): Read a blog&#39;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/json blog.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&#39;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/json blog.member-request@1
Response
application/json blog.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&#39;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/json blog.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&#39;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/json blog.post-create-request@1
Response
application/json blog.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/json blog.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/json blog.theme-request@1
Response
application/json blog.blog-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>blog.theme.set</strong> (first-party): Choose a blog&#39;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/json blog.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/json blog.post-update-request@1
Response
application/json blog.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/json blog.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/json blog.post-update-request@1
Response
application/json blog.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/json blog.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/json blog.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/json blog.publish-request@1
Response
application/json blog.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/json blog.post-update-request@1
Response
application/json blog.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/json blog.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/json blog.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/json blog.schedule-request@1
Response
application/json blog.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&#39;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/json blog.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&#39;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/json blog.publication-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>blog.post.unpublish</strong> (first-party): Take a published post down (readers get 404, Search a tombstone, feeds and sitemaps drop it). Editors, owners, the author, and staff (moderation).</p>