SearchQueryResult search.query-result@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
search
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/search/query-result.v1.json

search.query-result@1: the answer of GET /api/v1/search — one page of hits the caller may see, a cursor for the next page, and facet counts when asked. Never a total count and never an ACL.

Fields

FieldTypeRequiredDescriptionConstraints
resultsarray of objectyes
  • maxItems 100
  • items: no other fields
results[].ownerstringyes
results[].typestringyes
results[].idstringyes
results[].revisioninteger
  • minimum 0
results[].visibilitystring
results[].titlestring | null
results[].summarystring | null
results[].canonical_urlstring | null
results[].facetsobject | null
results[].languagestring | null
results[].authorshipstring | null
results[].provenancearray | object | null
results[].published_atstring | null
results[].updated_atstring | null
results[].indexablebooleanfalse for a noindex document the caller may still see.
results[].snippet_htmlstring | nullEscaped text with <mark> around the matches; nothing else.
next_cursorstring | nullyes
facetsobject

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: page
{
  "results": [
    {
      "owner": "live",
      "type": "vod",
      "id": "912",
      "revision": 3,
      "visibility": "public",
      "title": "Building a forum",
      "summary": null,
      "canonical_url": "https://openvibe.live/vod/912",
      "facets": {
        "channel": "alex"
      },
      "language": null,
      "authorship": "human",
      "provenance": [],
      "published_at": "2026-09-24T19:00:00.000Z",
      "updated_at": null,
      "indexable": true,
      "snippet_html": "building a <mark>forum</mark>"
    }
  ],
  "next_cursor": null
}
Rejected: leaks-acl
{
  "results": [
    {
      "owner": "live",
      "type": "vod",
      "id": "912",
      "acl": [
        "usr_x"
      ]
    }
  ],
  "next_cursor": null
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('search.query-result@1', value);   // { valid, errors: [{ path, message }] }