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 }] }