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