SearchProviderOffer search.provider-offer@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
search
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/search/provider-offer.v1.json

search.provider-offer@1: one web search provider as the Search Fabric's ladder and Route see it (GET /api/v1/query/providers, capability search.fabric.query): what it covers, what it costs, whether it is usable now and how it has answered. Prices are the vendor's published ones as of checked_at; nothing here is a secret.

Fields

FieldTypeRequiredDescriptionConstraints
providerstringyes
  • pattern ^[a-z][a-z0-9_]{1,39}$
namestring
  • maxLength 80
scopesarray of enumyes
  • minItems 1
  • items: one of "network", "mine", "web", "news", "images", "video", "products", "people", "places", "code"
price_usd_per_callnumberyes
  • minimum 0
independent_indexbooleanSearches its own crawl rather than reselling another engine's.
availablebooleanyesConfigured and not standing down (balance, key, rate limit, daily cap).
reasonstring | null
  • maxLength 160
daily_capinteger | null
  • minimum 0
used_todayinteger | null
  • minimum 0
latency_ms_p50integer | null
  • minimum 0
answered_ratenumber | nullShare of calls in the last day that returned at least one result.
  • minimum 0
  • maximum 1
terms_urlstring | null
  • maxLength 2048
checked_atstringyes
  • maxLength 40

Examples

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

Valid: deepseek
{
  "provider": "deepseek",
  "name": "DeepSeek Search",
  "scopes": [
    "web",
    "news"
  ],
  "price_usd_per_call": 0.00075,
  "independent_index": false,
  "available": true,
  "reason": null,
  "daily_cap": 1500,
  "used_today": 212,
  "latency_ms_p50": 1380,
  "answered_rate": 0.97,
  "terms_url": "https://api-docs.deepseek.com/guides/search",
  "checked_at": "2026-10-28T11:00:00Z"
}
Rejected: negative-price
{
  "provider": "x",
  "scopes": [
    "web"
  ],
  "price_usd_per_call": -1,
  "available": true,
  "checked_at": "2026-10-28T11:00:00Z"
}

Validate

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