ReviewsIndexDocumentUpsertedPayload reviews.index_document.upserted@1

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

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

reviews.index_document.upserted v1 (OpenVibe.Reviews server/reviews/service.js syncEntity, via openvibe-publishing/index-hooks indexEvent). The OpenVibe.Search document of an active entity page: the entity name as title, the published summary (or the entity description) as summary, the summary text and the aggregate's computation lines as body, facets kind / has_aggregate / sources, the published summary's authorship, provenance of up to 40 cited Sources items (plus the AI run of an AI-drafted summary), and the gate's indexability (noindex thin_content / unsourced until signals and a summary back the page). Sent whenever what Search should hold changed (the revision grows with every change), in the transaction of the change; the reconciliation at every start (reconcileIndex) re-sends only documents that differ. Consumed by OpenVibe.Search ('*.index_document.*'). Envelope: subject { type: entity, id, revision: <document revision> }, visibility internal, priority important, actor service:reviews.

Fields

This schema has no named fields.

Examples

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

Valid: new-entity
{
  "owner": "reviews",
  "type": "entity",
  "id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "title": "Portal 2",
  "body": "",
  "facets": {
    "kind": "game",
    "has_aggregate": false,
    "sources": []
  },
  "provenance": [],
  "publication_state": "published",
  "published_at": "2026-09-20T11:55:00.000Z",
  "updated_at": "2026-09-20T11:55:00.000Z",
  "indexability": {
    "decision": "noindex",
    "reasons": [
      "thin_content",
      "unsourced"
    ]
  }
}
Valid: with-summary
{
  "owner": "reviews",
  "type": "entity",
  "id": "ent_01M38GW32MMJWAVC9KPYXC759Y",
  "revision": 3,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.reviews/e/widget-3000",
  "title": "Widget 3000",
  "summary": "Shoppers at the one sampled store rate this widget well on average, with over a hundred ratings behind that average, according to the listing.",
  "body": "Shoppers at the one sampled store rate this widget well on average, with over a hundred ratings behind that average, according to the listing.\nrating: 84% = Σ(value ÷ best × count) ÷ Σ count over 1 signal and 120 ratings; on the shared 5-point scale: 4.2 = Σ(value × count) ÷ Σ count",
  "facets": {
    "kind": "product",
    "has_aggregate": true,
    "sources": [
      "shop-example"
    ]
  },
  "authorship": "ai_generated",
  "provenance": [
    {
      "service": "ai",
      "type": "run",
      "id": "run_01J9ZZZZZZZZZZZZZZZZZZZZZZ",
      "label": "reviews.summarize_entity"
    },
    {
      "service": "sources",
      "type": "item",
      "id": "itm_01M2ZB05BG9JCWV5MRXRD4ZTBG",
      "url": "https://shop.example/p/widget",
      "retrieved_at": "2026-09-20T12:00:06.000Z"
    }
  ],
  "publication_state": "published",
  "published_at": "2026-09-20T11:58:00.000Z",
  "updated_at": "2026-09-20T12:10:00.000Z",
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}
Rejected: other-owner
{
  "owner": "wiki",
  "type": "entity",
  "id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "title": "Portal 2",
  "body": "",
  "facets": {
    "kind": "game",
    "has_aggregate": false,
    "sources": []
  },
  "provenance": [],
  "publication_state": "published",
  "published_at": null,
  "updated_at": null,
  "indexability": {
    "decision": "noindex",
    "reasons": [
      "thin_content",
      "unsourced"
    ]
  }
}
Rejected: summary-type
{
  "owner": "reviews",
  "type": "summary",
  "id": "sum_01M38GW34CFNJCVW5PQEN5W1JA",
  "revision": 1,
  "deleted": false,
  "visibility": "public",
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "title": "Portal 2",
  "body": "",
  "facets": {},
  "provenance": [],
  "publication_state": "published",
  "published_at": null,
  "updated_at": null,
  "indexability": {
    "decision": "index",
    "reasons": []
  }
}
Rejected: tombstone-as-upsert
{
  "owner": "reviews",
  "type": "entity",
  "id": "ent_01M38GW372A3PM7110AHHTYM7C",
  "revision": 4,
  "deleted": true
}

Validate

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