ReviewsSummaryPublishedPayload reviews.summary.published@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.summary.published.v1.json

reviews.summary.published v1 (OpenVibe.Reviews server/reviews/service.js publishSummary, via openvibe-publishing/index-hooks publicationEvent). An entity's summary that was not published became published (an editor publishing a revision, or approving one with publish on, which is how an AI-drafted revision gets published), in the transaction of the change. For subscribers other than Search: the entity page's canonical URL, publication state and Search-shaped indexability, the entity id and slug, and the revision's authorship; never the summary text or its citations (Search gets those in reviews.index_document.upserted) and never a rating (a summary cannot carry one). correction appears only when the revision published is a correction revision (normally that is reviews.summary.updated). Envelope: subject { type: summary, id: sum_…, revision: <published summary revision> }, visibility public when the entity page is listable by the gate, otherwise internal, priority important, actor the editor (user usr_…).

Fields

FieldTypeRequiredDescriptionConstraints
canonical_urlstringyesThe entity page (/e/<slug>) that shows the summary.
  • pattern ^https?://
  • format uri
  • maxLength 2048
publication_stateconstyes
  • = "published"
indexabilityobjectyesThe gate's decision for the entity page after the change, in Search's vocabulary.
  • no other fields
indexability.decisionenumyes
  • one of "index", "noindex"
indexability.reasonsarray of stringyes
  • maxItems 20
  • unique items
  • items: pattern ^[a-z][a-z0-9_]{1,63}$
entity_idstringyesThe entity the summary belongs to (one summary per entity).
  • pattern ^ent_[0-9A-HJKMNP-TV-Z]{26}$
entity_slugstringyes
  • pattern ^[a-z0-9]+(-[a-z0-9]+)*$
  • maxLength 90
authorshipenumyesAuthorship of the published revision: human (editor-written), ai_generated (an OpenVibe.AI draft a person approved), ai_assisted (an AI draft a person corrected); null only for a revision without an authorship record.
  • one of "human", "ai_assisted", "ai_generated", null
correctionobjectPresent when the published revision is a correction: the public note and the revision it corrects.
  • no other fields
correction.notestringyesWhat was corrected, as readers see it.
  • minLength 10
  • maxLength 2000
correction.correctsintegeryesThe summary revision that was published when the correction was made.
  • minimum 1

Examples

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

Valid: ai-approved-noindex
{
  "canonical_url": "https://openvibe.reviews/e/widget-3000",
  "publication_state": "published",
  "indexability": {
    "decision": "noindex",
    "reasons": [
      "thin_content"
    ]
  },
  "entity_id": "ent_01M38GW32MMJWAVC9KPYXC759Y",
  "entity_slug": "widget-3000",
  "authorship": "ai_generated"
}
Valid: human
{
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "publication_state": "published",
  "indexability": {
    "decision": "index",
    "reasons": []
  },
  "entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "entity_slug": "portal-2",
  "authorship": "human"
}
Rejected: carries-rating
{
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "publication_state": "published",
  "indexability": {
    "decision": "index",
    "reasons": []
  },
  "entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "entity_slug": "portal-2",
  "authorship": "human",
  "rating": 4.5
}
Rejected: missing-authorship
{
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "publication_state": "published",
  "indexability": {
    "decision": "index",
    "reasons": []
  },
  "entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "entity_slug": "portal-2"
}
Rejected: unpublished-state
{
  "canonical_url": "https://openvibe.reviews/e/portal-2",
  "publication_state": "unpublished",
  "indexability": {
    "decision": "index",
    "reasons": []
  },
  "entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
  "entity_slug": "portal-2",
  "authorship": "human"
}

Validate

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