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