ReviewsEntityResolveResult reviews.entity-resolve-result@1
Generated at from
openvibe-contracts v0.53.0 and
openvibe-sdk v0.11.0.
- Version
- 1.0.0
- Owner
- reviews
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/reviews/entity-resolve-result.v1.json
reviews.entity-resolve-result@1: answers of reviews.entity.resolve on OpenVibe.Reviews. GET /api/v1/entities?q=&limit=&offset= → { entities, total } (total only when listing; a search by q answers { entities }). POST /api/v1/resolve → { match: exact | ambiguous | none, entity, via, rule, candidates }. GET /api/v1/entities/:ref → the entity page as JSON: { entity, aliases, merged_from, links, aggregate, aggregate_revision, signals, inactive_signals, sources, entity_trust, summary, open_corrections, decision, editor }, or { entity, canonical } for a merged or deleted entity. GET …/history → { entity, aggregates, summary_revisions, merges, signals, audit } (410 entity.deleted for readers). GET …/aggregate → { entity_id, aggregate, aggregate_revision } (409 entity.merged, 410 entity.deleted). GET …/summary/revisions/:n → { revision }. GET /api/v1/items → { items } (the resolution queue; editors). GET /api/v1/items/:id → { item } (410 item.removed). POST /api/v1/items/:id/resolution → { item, signal, settled_items } when confirmed, { item } when ignored.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: aggregate
{
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"aggregate": {
"revision": 3,
"computed_at": "2026-09-24T09:40:12.000Z",
"trigger": "signal_added",
"result": {
"method": "reviews-aggregate@1",
"components": {
"rating": {
"count": 318,
"percent": 84,
"inputs": [
"sig_01JAC2S3G4H5J6K7M8N9P0Q1R2"
],
"on_scale": {
"value": 4.2,
"best": 5,
"worst": 1
}
}
},
"inputs": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"observed_at": "2026-09-24T08:15:00.000Z",
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"weight": 318
}
],
"excluded": [],
"sources": [
"sound-lab"
],
"observed": {
"earliest": "2026-09-24T08:15:00.000Z",
"latest": "2026-09-24T08:15:00.000Z"
},
"computation": [
"rating: 84% = Σ(value ÷ best × count) ÷ Σ count over 1 signal and 318 ratings"
]
}
},
"aggregate_revision": 3
}Valid: confirmed
{
"item": {
"id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"source_key": "sound-lab",
"kind": "review_signal",
"identity": "https://soundlab.example/lumen-x2",
"canonical_url": "https://soundlab.example/lumen-x2",
"title": "Lumen X2",
"item_revision": 2,
"published_at": "2026-09-20",
"retrieved_at": "2026-09-24T08:15:00.000Z",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"fields": {
"gtin": "0012345678905",
"rating": {
"value": 4.2,
"best": 5,
"count": 318
}
},
"state": "active",
"removed_at": null,
"removed_reason": null,
"resolution": "resolved",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"resolution_rule": "gtin",
"candidates": [],
"signal_note": null,
"signal": {
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"observed_at": "2026-09-24T08:15:00.000Z",
"source_published_at": "2026-09-20",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318
}
},
"signal": {
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"observed_at": "2026-09-24T08:15:00.000Z",
"source_published_at": "2026-09-20",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"status": "active",
"status_reason": null,
"status_at": null,
"superseded_by": null,
"trust": {},
"editor_trust": {},
"created_at": "2026-09-24T08:15:00.000Z",
"provenance": {
"source_key": "sound-lab",
"source_name": "Sound Lab",
"source_homepage": "https://soundlab.example",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"item_kind": "review_signal",
"retrieved_at": "2026-09-24T08:15:00.000Z",
"last_seen_at": "2026-09-24T09:40:12.000Z",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"item_state": "active",
"item_removed_reason": null
}
},
"settled_items": 0
}Valid: history
{
"entity": {
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"aggregates": [
{
"revision": 3,
"computed_at": "2026-09-24T09:40:12.000Z",
"trigger": "signal_added",
"result": {
"method": "reviews-aggregate@1",
"components": {
"rating": {
"count": 318,
"percent": 84,
"inputs": [
"sig_01JAC2S3G4H5J6K7M8N9P0Q1R2"
],
"on_scale": {
"value": 4.2,
"best": 5,
"worst": 1
}
}
},
"inputs": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"observed_at": "2026-09-24T08:15:00.000Z",
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"weight": 318
}
],
"excluded": [],
"sources": [
"sound-lab"
],
"observed": {
"earliest": "2026-09-24T08:15:00.000Z",
"latest": "2026-09-24T08:15:00.000Z"
},
"computation": [
"rating: 84% = Σ(value ÷ best × count) ÷ Σ count over 1 signal and 318 ratings"
]
}
}
],
"summary_revisions": [
{
"number": 2,
"status": "published",
"overview": "Well-reviewed for comfort; battery life is the common complaint.",
"points": [
{
"key": "overview",
"kind": "overview",
"text": null,
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
},
{
"key": "pro:0",
"kind": "pro",
"text": "Comfortable over long sessions",
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S4G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
}
],
"authorship": {
"mode": "human",
"workflow": null,
"stub_provider": false
},
"disclosure": null,
"review": null,
"system": null,
"correction": null,
"author": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"message": null,
"created_at": "2026-09-24T09:40:12.000Z"
}
],
"merges": [
{
"id": "lnk_01JAC5M6N7P8Q9R0S1T2V3W4X5",
"from": {
"id": "ent_01JAC1E3N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E3N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"to": {
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"note": null,
"merged_at": "2026-09-24T08:15:00.000Z",
"merged_by": null,
"split_at": null,
"split_by": null,
"split_note": null
}
],
"signals": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"observed_at": "2026-09-24T08:15:00.000Z",
"source_published_at": "2026-09-20",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"status": "active",
"status_reason": null,
"status_at": null,
"superseded_by": null,
"trust": {},
"editor_trust": {},
"created_at": "2026-09-24T08:15:00.000Z",
"provenance": {
"source_key": "sound-lab",
"source_name": "Sound Lab",
"source_homepage": "https://soundlab.example",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"item_kind": "review_signal",
"retrieved_at": "2026-09-24T08:15:00.000Z",
"last_seen_at": "2026-09-24T09:40:12.000Z",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"item_state": "active",
"item_removed_reason": null
}
}
],
"audit": [
{
"id": 41,
"at": "2026-09-24T09:40:12.000Z",
"action": "summary.published",
"target": "sum_01JAC6S7T8V9W0X1Y2Z3A4B5C6",
"actor": "an editor",
"detail": {
"revision": 2,
"previous": 1
}
}
]
}Valid: list
{
"entities": [
{
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
}
],
"total": 1
}Valid: merged
{
"entity": {
"id": "ent_01JAC1E3N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "merged",
"merged_into": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"canonical": {
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
}
}Valid: page
{
"entity": {
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"aliases": [
{
"id": "als_01JAC4A5B6C7D8E9F0G1H2J3K4",
"type": "gtin",
"value": "0012345678905"
}
],
"merged_from": [],
"links": [],
"aggregate": {
"revision": 3,
"computed_at": "2026-09-24T09:40:12.000Z",
"trigger": "signal_added",
"result": {
"method": "reviews-aggregate@1",
"components": {
"rating": {
"count": 318,
"percent": 84,
"inputs": [
"sig_01JAC2S3G4H5J6K7M8N9P0Q1R2"
],
"on_scale": {
"value": 4.2,
"best": 5,
"worst": 1
}
}
},
"inputs": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"observed_at": "2026-09-24T08:15:00.000Z",
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"weight": 318
}
],
"excluded": [],
"sources": [
"sound-lab"
],
"observed": {
"earliest": "2026-09-24T08:15:00.000Z",
"latest": "2026-09-24T08:15:00.000Z"
},
"computation": [
"rating: 84% = Σ(value ÷ best × count) ÷ Σ count over 1 signal and 318 ratings"
]
}
},
"aggregate_revision": 3,
"signals": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"observed_at": "2026-09-24T08:15:00.000Z",
"source_published_at": "2026-09-20",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318,
"status": "active",
"status_reason": null,
"status_at": null,
"superseded_by": null,
"trust": {},
"editor_trust": {},
"created_at": "2026-09-24T08:15:00.000Z",
"provenance": {
"source_key": "sound-lab",
"source_name": "Sound Lab",
"source_homepage": "https://soundlab.example",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"item_kind": "review_signal",
"retrieved_at": "2026-09-24T08:15:00.000Z",
"last_seen_at": "2026-09-24T09:40:12.000Z",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"item_state": "active",
"item_removed_reason": null
}
}
],
"inactive_signals": [],
"sources": [
{
"key": "sound-lab",
"name": "Sound Lab",
"homepage_url": "https://soundlab.example",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"status": "active",
"stale": false,
"last_success_at": "2026-09-24T08:15:00.000Z",
"trust": {}
}
],
"entity_trust": {},
"summary": {
"id": "sum_01JAC6S7T8V9W0X1Y2Z3A4B5C6",
"state": "published",
"head_revision": 2,
"flagged": false,
"flag_reason": null,
"flagged_at": null,
"published_at": "2026-09-24T08:15:00.000Z",
"revision_published_at": "2026-09-24T09:40:12.000Z",
"published": {
"number": 2,
"status": "published",
"overview": "Well-reviewed for comfort; battery life is the common complaint.",
"points": [
{
"key": "overview",
"kind": "overview",
"text": null,
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
},
{
"key": "pro:0",
"kind": "pro",
"text": "Comfortable over long sessions",
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S4G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
}
],
"authorship": {
"mode": "human",
"workflow": null,
"stub_provider": false
},
"disclosure": null,
"review": null,
"system": null,
"correction": null,
"author": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"message": null,
"created_at": "2026-09-24T09:40:12.000Z"
},
"pending": 0,
"history": [
{
"number": 2,
"status": "published",
"created_at": "2026-09-24T09:40:12.000Z",
"disclosure": null,
"correction": null
}
]
},
"open_corrections": 1,
"decision": {
"indexable": true,
"robots": "index, follow",
"reasons": []
},
"editor": false
}Valid: queue
{
"items": [
{
"id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"source_key": "sound-lab",
"kind": "review_signal",
"identity": "https://soundlab.example/lumen-x2",
"canonical_url": "https://soundlab.example/lumen-x2",
"title": "Lumen X2",
"item_revision": 2,
"published_at": "2026-09-20",
"retrieved_at": "2026-09-24T08:15:00.000Z",
"license_note": null,
"terms_note": "Ratings may be shown with a link",
"fields": {
"gtin": "0012345678905",
"rating": {
"value": 4.2,
"best": 5,
"count": 318
}
},
"state": "active",
"removed_at": null,
"removed_reason": null,
"resolution": "resolved",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"resolution_rule": "gtin",
"candidates": [],
"signal_note": null,
"signal": {
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"canonical_entity_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"type": "rating_aggregate",
"source_key": "sound-lab",
"source_item_id": "itm_01JAC3T4V5W6X7Y8Z9A0B1C2D3",
"item_revision": 2,
"observed_at": "2026-09-24T08:15:00.000Z",
"source_published_at": "2026-09-20",
"canonical_url": "https://soundlab.example/lumen-x2",
"license_note": null,
"rating_value": 4.2,
"rating_best": 5,
"rating_worst": 1,
"rating_count": 318
}
}
]
}Valid: resolve
{
"match": "exact",
"entity": {
"id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"slug": "lumen-x2-headphones",
"name": "Lumen X2 Headphones",
"kind": "product",
"description": null,
"state": "active",
"merged_into": null,
"canonical_id": "ent_01JAC1E2N3T4V5W6X7Y8Z9A0B1",
"noindex": false,
"url": "https://openvibe.reviews/e/lumen-x2-headphones",
"created_at": "2026-09-24T08:15:00.000Z",
"updated_at": "2026-09-24T09:40:12.000Z"
},
"via": null,
"rule": "gtin",
"candidates": []
}Valid: revision
{
"revision": {
"number": 2,
"status": "published",
"overview": "Well-reviewed for comfort; battery life is the common complaint.",
"points": [
{
"key": "overview",
"kind": "overview",
"text": null,
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S3G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
},
{
"key": "pro:0",
"kind": "pro",
"text": "Comfortable over long sessions",
"supported": true,
"citations": [
{
"signal_id": "sig_01JAC2S4G4H5J6K7M8N9P0Q1R2",
"ok": true,
"status": "active",
"in_entity": true,
"superseded_by": null
}
]
}
],
"authorship": {
"mode": "human",
"workflow": null,
"stub_provider": false
},
"disclosure": null,
"review": null,
"system": null,
"correction": null,
"author": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"message": null,
"created_at": "2026-09-24T09:40:12.000Z"
}
}Rejected: bad-match
{
"match": "probable",
"entity": null,
"via": null,
"rule": null,
"candidates": []
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('reviews.entity-resolve-result@1', value); // { valid, errors: [{ path, message }] }