ReviewsSignalImportResult reviews.signal-import-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/signal-import-result.v1.json
reviews.signal-import-result@1: answers of reviews.signal.import on OpenVibe.Reviews. POST /api/v1/signals/import → { outcome, item, signal }: outcome created | updated | unchanged | removed | removed:unknown | ignored:removed | ignored:older_revision | ignored:category (item null for another category), the item as Reviews keeps it and its active signal (null when it states none or is not resolved). POST /api/v1/sources/sync → { pull, queue }: pages read, items applied, unchanged and skipped, the new cursor (ok false with a reason when Sources is not configured or failed), and the queued items fetched.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: ignored
{
"outcome": "ignored:category",
"item": null,
"signal": null
}Valid: imported
{
"outcome": "created",
"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
}
}
}Valid: sync
{
"pull": {
"ok": true,
"after": 5120,
"pages": 2,
"applied": 14,
"unchanged": 3,
"skipped": 0
},
"queue": {
"ok": true,
"done": 1,
"failed": 0
}
}Valid: unconfigured
{
"pull": {
"ok": false,
"reason": "OpenVibe.Sources is not configured"
},
"queue": {
"ok": false,
"reason": "OpenVibe.Sources is not configured",
"done": 0
}
}Rejected: bad-outcome
{
"outcome": "deleted",
"item": null,
"signal": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('reviews.signal-import-result@1', value); // { valid, errors: [{ path, message }] }