ReviewsSummaryUpdatedPayload reviews.summary.updated@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.updated.v1.json
reviews.summary.updated v1 (OpenVibe.Reviews server/reviews/service.js publishSummary, via openvibe-publishing/index-hooks publicationEvent). A published summary got a different published revision, in the transaction of the change: an editor published another revision, approved the pending revision prepared after a source change, or corrected the summary (POST …/summary/revisions with correction_note, or accepting a correction request), which publishes at once and carries correction. 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. 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
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
canonical_url | string | yes | The entity page (/e/<slug>) that shows the summary. |
|
publication_state | const | yes |
| |
indexability | object | yes | The gate's decision for the entity page after the change, in Search's vocabulary. |
|
indexability.decision | enum | yes |
| |
indexability.reasons | array of string | yes |
| |
entity_id | string | yes | The entity the summary belongs to (one summary per entity). |
|
entity_slug | string | yes |
| |
authorship | enum | yes | Authorship 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. |
|
correction | object | Present when the published revision is a correction: the public note and the revision it corrects. |
| |
correction.note | string | yes | What was corrected, as readers see it. |
|
correction.corrects | integer | yes | The summary revision that was published when the correction was made. |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: correction
{
"canonical_url": "https://openvibe.reviews/e/portal-2",
"publication_state": "published",
"indexability": {
"decision": "index",
"reasons": []
},
"entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
"entity_slug": "portal-2",
"authorship": "ai_assisted",
"correction": {
"note": "The overview said all reviewers recommend it; one does not.",
"corrects": 2
}
}Valid: new-revision
{
"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: correction-leaks-request
{
"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",
"correction": {
"note": "The overview said all reviewers recommend it; one does not.",
"corrects": 2,
"request": "crr_01M38GW3A5FSK4H3P7C776SPSF"
}
}Rejected: correction-note-too-short
{
"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",
"correction": {
"note": "typo",
"corrects": 2
}
}Rejected: missing-indexability
{
"canonical_url": "https://openvibe.reviews/e/portal-2",
"publication_state": "published",
"entity_id": "ent_01M38GW2QD088TQ08VN985JTXT",
"entity_slug": "portal-2",
"authorship": "human"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('reviews.summary.updated@1', value); // { valid, errors: [{ path, message }] }