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
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
provider | string | yes |
| |
name | string |
| ||
scopes | array of enum | yes |
| |
price_usd_per_call | number | yes |
| |
independent_index | boolean | Searches its own crawl rather than reselling another engine's. | ||
available | boolean | yes | Configured and not standing down (balance, key, rate limit, daily cap). | |
reason | string | null |
| ||
daily_cap | integer | null |
| ||
used_today | integer | null |
| ||
latency_ms_p50 | integer | null |
| ||
answered_rate | number | null | Share of calls in the last day that returned at least one result. |
| |
terms_url | string | null |
| ||
checked_at | string | yes |
|
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 }] }