BlogIndexDocumentUpsertedPayload blog.index_document.upserted@1
Generated at from
openvibe-contracts v0.33.0 and
openvibe-sdk v0.5.0.
- Version
- 1.0.0
- Owner
- blog
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/events/payloads/blog.index_document.upserted.v1.json
blog.index_document.upserted v1 (OpenVibe.Blog server/domain/publication.js syncIndex, via openvibe-publishing/index-hooks indexEvent). The OpenVibe.Search document of a published, public, listable post, sent whenever what Search should hold changed (the revision grows with every change). Consumed by OpenVibe.Search ('*.index_document.*'). Envelope: subject { type: post, id, revision: <document revision> }, visibility internal, priority important, actor service:blog.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: post
{
"owner": "blog",
"type": "post",
"id": "pst_01JAB2C3D4E5F6G7H8J9K0MNPS",
"revision": 2,
"deleted": false,
"visibility": "public",
"canonical_url": "https://openvibe.blog/@alex/hello-world",
"title": "Hello world",
"summary": "First post.",
"body": "Hello world, this is the first post.",
"facets": {
"blog": "alex",
"tags": [
"intro"
],
"categories": []
},
"language": "en",
"authorship": "human",
"provenance": [],
"publication_state": "published",
"published_at": "2026-09-22T12:00:00.000Z",
"updated_at": "2026-09-22T12:00:00.000Z",
"indexability": {
"decision": "index",
"reasons": []
}
}Rejected: no-indexability
{
"owner": "blog",
"type": "post",
"id": "pst_01JAB2C3D4E5F6G7H8J9K0MNPS",
"revision": 2,
"deleted": false,
"visibility": "public",
"canonical_url": "https://openvibe.blog/@alex/hello-world",
"title": "Hello world",
"publication_state": "published"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('blog.index_document.upserted@1', value); // { valid, errors: [{ path, message }] }