SourcesIndexDocumentUpsertedPayload sources.index_document.upserted@1
Generated at from
openvibe-contracts v0.33.0 and
openvibe-sdk v0.5.0.
- Version
- 1.0.0
- Owner
- sources
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Decision
- ADR-017
- Schema
https://openvibe.network/contracts/events/payloads/sources.index_document.upserted.v1.json
sources.index_document.upserted v1 (OpenVibe.Sources server/items.js indexEvent). An item of a source with search_visibility was created or updated; the payload is its search.index-document@1 (owner sources, type item, visibility members for role:admin and role:global_mod, authorship imported, indexability noindex third_party_content). Consumed by OpenVibe.Search (*.index_document.*). Envelope: subject { type: item, id: <item id>, revision }, visibility internal, priority important, actor service:sources.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: staff-item
{
"owner": "sources",
"type": "item",
"id": "itm_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"revision": 1,
"visibility": "members",
"acl": {
"groups": [
"role:admin",
"role:global_mod"
]
},
"title": "Summit ends without agreement",
"summary": "",
"body": "",
"facets": {
"category": "news",
"source": "bbc-world",
"kind": "article"
},
"authorship": "imported",
"provenance": [
{
"service": "sources",
"type": "item",
"id": "itm_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"revision": 1,
"url": "https://www.bbc.co.uk/news/world-12345678",
"retrieved_at": "2026-09-23T08:00:00.000Z"
}
],
"publication_state": "published",
"published_at": "2026-09-23T07:45:00Z",
"updated_at": null,
"indexability": {
"decision": "noindex",
"reasons": [
"third_party_content"
]
},
"canonical_url": "https://www.bbc.co.uk/news/world-12345678"
}Rejected: no-indexability
{
"owner": "sources",
"type": "item",
"id": "itm_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"revision": 1,
"visibility": "members",
"acl": {
"groups": [
"role:admin",
"role:global_mod"
]
},
"title": "Summit ends without agreement",
"publication_state": "published"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('sources.index_document.upserted@1', value); // { valid, errors: [{ path, message }] }