NewsIndexDocumentUpsertedPayload news.index_document.upserted@1

Generated at from openvibe-contracts v0.34.2 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
news
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/events/payloads/news.index_document.upserted.v1.json

news.index_document.upserted v1 (OpenVibe.News server/domain/publication.js syncIndex, via openvibe-publishing/index-hooks indexEvent). The OpenVibe.Search document of a published (not retracted), public, listable story, sent whenever what Search should hold changed (the revision grows with every change): a publication or new published revision, a topic or noindex change, a person's review of an AI revision, or a cited source changing upstream. The body is the published revision's paragraphs as plain text; facets { topic?, outlets, sources }; provenance names the cited Sources items (and the AI run of an AI draft); language en. Consumed by OpenVibe.Search ('*.index_document.*'). Envelope: subject { type: story, id, revision: <document revision> }, visibility internal, priority important, actor service:news.

Fields

This schema has no named fields.

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: ai-assisted
{
  "owner": "news",
  "type": "story",
  "id": "sty_01K5S1E4G6J8M0P2R4T6V8X0Z2",
  "revision": 3,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.news/stories/europa-clipper-launches-for-jupiter",
  "title": "Europa Clipper is on its way to Jupiter",
  "summary": "NASA launched the Europa Clipper spacecraft on a Falcon Heavy rocket from Kennedy Space Center, beginning a cruise of several years to Jupiter and its moon Europa.",
  "body": "NASA launched the Europa Clipper spacecraft on a Falcon Heavy rocket from Kennedy Space Center, beginning a cruise of several years to Jupiter and its moon Europa.\n\nAccording to NASA the spacecraft should arrive at Jupiter in 2030, after which it will make repeated close passes of Europa to study its ice shell and the ocean beneath.",
  "facets": {
    "topic": "space",
    "outlets": [
      "Wire A",
      "Paper B",
      "Site C"
    ],
    "sources": 3
  },
  "language": "en",
  "authorship": "ai_assisted",
  "provenance": [
    {
      "service": "ai",
      "type": "run",
      "id": "run_01K5S4K9N1Q3S5V7X9Z1B3D5F7",
      "label": "news.summarize_story"
    },
    {
      "service": "sources",
      "type": "item",
      "id": "itm_01K5RZ2V7W9Y1A3C5E7G9J1K3M",
      "label": "NASA launches Europa Clipper probe to Jupiter moon Europa",
      "url": "https://wire-a.example/space/europa-clipper-launch",
      "retrieved_at": "2026-09-22T11:00:00.000Z"
    },
    {
      "service": "sources",
      "type": "item",
      "id": "itm_01K5RZ3X8Y0Z2B4D6F8H0K2M4P",
      "label": "Europa Clipper lifts off as NASA begins long trip to Jupiter",
      "url": "https://paper-b.example/2026/09/22/europa-clipper",
      "retrieved_at": "2026-09-22T11:00:00.000Z"
    }
  ],
  "publication_state": "published",
  "published_at": "2026-09-22T12:00:00.000Z",
  "updated_at": "2026-09-22T14:30:00.000Z",
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}
Valid: human-noindex
{
  "owner": "news",
  "type": "story",
  "id": "sty_01K5S1F5H7K9N1Q3S5V7X9Z1B3",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.news/stories/treatment-plant-expansion-approved",
  "title": "Treatment plant expansion approved",
  "summary": "The valley water authority approved the expansion of its treatment plant.",
  "body": "The valley water authority approved the expansion of its treatment plant.",
  "facets": {
    "outlets": [
      "Valley Courier"
    ],
    "sources": 1
  },
  "language": "en",
  "authorship": "human",
  "provenance": [
    {
      "service": "sources",
      "type": "item",
      "id": "itm_01K5RZ5A1B3C5D7E9F1G3H5J7K",
      "label": "Water authority backs plant expansion",
      "url": "https://valley-courier.example/water/plant",
      "retrieved_at": "2026-09-22T09:15:00.000Z"
    }
  ],
  "publication_state": "published",
  "published_at": "2026-09-22T12:00:00.000Z",
  "updated_at": "2026-09-22T12:00:00.000Z",
  "indexability": {
    "decision": "noindex",
    "reasons": [
      "unsourced"
    ]
  }
}
Rejected: bad-id
{
  "owner": "news",
  "type": "story",
  "id": "pst_01K5S1E4G6J8M0P2R4T6V8X0Z2",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.news/stories/europa-clipper-launches-for-jupiter",
  "title": "Europa Clipper is on its way to Jupiter",
  "body": "",
  "facets": {},
  "provenance": [],
  "publication_state": "published",
  "published_at": null,
  "updated_at": null,
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}
Rejected: missing-title
{
  "owner": "news",
  "type": "story",
  "id": "sty_01K5S1E4G6J8M0P2R4T6V8X0Z2",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.news/stories/europa-clipper-launches-for-jupiter",
  "body": "",
  "facets": {},
  "provenance": [],
  "publication_state": "published",
  "published_at": null,
  "updated_at": null,
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}
Rejected: tombstone
{
  "owner": "news",
  "type": "story",
  "id": "sty_01K5S1E4G6J8M0P2R4T6V8X0Z2",
  "revision": 4,
  "deleted": true
}
Rejected: wrong-owner
{
  "owner": "blog",
  "type": "story",
  "id": "sty_01K5S1E4G6J8M0P2R4T6V8X0Z2",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.news/stories/europa-clipper-launches-for-jupiter",
  "title": "Europa Clipper is on its way to Jupiter",
  "body": "",
  "facets": {},
  "provenance": [],
  "publication_state": "published",
  "published_at": null,
  "updated_at": null,
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('news.index_document.upserted@1', value);   // { valid, errors: [{ path, message }] }