openvibers/openvibe.contracts Commits
0.210.0: Sources categories housing, food and jobs; Bot's catalog names only what it runs (no ESP32, RTSP or hardware for sale), Actor's real free tier, Help without 'coming' (#205)
Changes
@@@ -4,6 +4,34 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) thfrom `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,the notes were in the tag and commit messages (`git tag -n1`).++## 0.210.0 — 2026-10-22++++- **Sources categories `housing`, `food` and `jobs`** (plan 2026-10-22, track F1). `sources.source@1`,++ `sources.item@1`, `sources.source-write-request@1` and the four `sources.*` event payloads accept them, so the++ owner's top aggregators can move their own fetches into Sources:++ - OpenVibe.Rent's and Homes' listings and rent data;++ - OpenVibe.Food's recalls and food data;++ - OpenVibe.Work's job boards.++++ They then share Sources' robots and terms checks, retention and the Search feed. A consumer that switched on the++ old nine values should treat an unknown category as "other". Nothing in production sends the new values until++ Sources pins this release.++- Catalog copy that promised what the products do not do (plan 2026-10-22, track H5), checked against each product's++ code. **OpenVibe.Bot**:++ - Its description, FAQ and keywords named ESP32 boards, Android apps, ONVIF and RTSP cameras, ready-made bots to buy++ and "kits that list exactly what to buy". None ships:++ - OpenVibe sells no hardware, and the one curated kit (Adeept ADR036) is a parts list;++ - the ONVIF camera is a server-side connector the operator configures.++ - It now names what Bot's profiles and drivers run: the Adeept kit, ROS 2, Cozmo, LOOI, a phone in its browser, and++ the generic relay for anything else.++ - The planned-site `vision` block (robot arms, telepresence bots, a recording toggle, "flash a ready-made card")++ and the `plannedRepo`/`meanwhile` pointers go, as for the other live products; nothing reads them since++ OpenVibe.Sites retired.++- **OpenVibe.Actor**'s cost answer gives its real free tier (20 tasks a day, $0.05 a task, $0.25 a day), not "limits++ published before launch".++- **OpenVibe.Help** no longer says "live or coming": every site it covers is live.++- The catalog changes are text only.++## 0.209.3 — 2026-10-21- Codes' site text names OpenVibe Git at `git.openvibe.codes`, where it moved on 2026-10-21 (Codes#93; the old@@@ -2,7 +2,7 @@> Machine-readable contracts for the whole OpenVibe network.--**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.209.3: 798 schemas in `contracts/catalog.json`, 45 service manifests, 348 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).++**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.210.0: 798 schemas in `contracts/catalog.json`, 45 service manifests, 348 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).**Plan:** OpenVibe Development Roadmap, Wave 1 (implementation plan rev 3, §3.1 and §18.11).**License:** AGPL-3.0 (same as every OpenVibe service).@@@ -63,7 +63,7 @@ OpenAPI 3.1 per service: `generated/openapi/<service>.json` (index in `generated| `events.event-envelope` | events | durable event shape for OpenVibe.Events (Wave 3) || `media.media-ref` | media | `med_<ULID>` (Wave 4) or transitional `legacy:<app>:<kind>:<id>` |--Manifests: `manifests/services/` (45 services at v0.209.3: 39 `alpha`, 1 `beta` (Media), 4 `stable` (Games, Live, Network, Tools) and 1 `retired` (Sites, 2026-10-14); OpenVibe.Realtime has no manifest, as ADR-005 closed it before it was built; Contracts, SDK, Shared and Publishing are released libraries and Examples a repository with CI, none of them a runtime; `docs/ESTATE.md` tables every repository), `manifests/capabilities/` (348 capabilities at v0.209.3: 306 `active`, 27 `planned` and 15 `retired`; the v0.1 set was Media upload/read, chat send, paste create, coins credit/debit, notifications push, subject resolve and Community post). Each active capability names the route that implements it today. Where a service is reachable today (public, loopback only, library) is Network's observed overlay (`server/registry/exposure.js` there); manifest notes say whether a service is deployed and launched publicly.++Manifests: `manifests/services/` (45 services at v0.210.0: 39 `alpha`, 1 `beta` (Media), 4 `stable` (Games, Live, Network, Tools) and 1 `retired` (Sites, 2026-10-14); OpenVibe.Realtime has no manifest, as ADR-005 closed it before it was built; Contracts, SDK, Shared and Publishing are released libraries and Examples a repository with CI, none of them a runtime; `docs/ESTATE.md` tables every repository), `manifests/capabilities/` (348 capabilities at v0.210.0: 306 `active`, 27 `planned` and 15 `retired`; the v0.1 set was Media upload/read, chat send, paste create, coins credit/debit, notifications push, subject resolve and Community post). Each active capability names the route that implements it today. Where a service is reachable today (public, loopback only, library) is Network's observed overlay (`server/registry/exposure.js` there); manifest notes say whether a service is deployed and launched publicly.**Ids.** Subjects use prefixed ULIDs: `usr_`, `gst_`, `app_`, `mod_`. Services and system actors use slugs (`live`, `media`). Events use `evt_` and Media objects `med_`.@@@ -11,7 +11,7 @@"deployment": "none of its own: a library and artifact repository published as release tags; services pin a tag and deploy it with their own releases","contracts": "openvibe-contracts (this package: package.json's version, released as the matching tag)","features": [-- "798 JSON Schemas with valid and invalid fixtures (at v0.209.3)",++ "798 JSON Schemas with valid and invalid fixtures (at v0.210.0)","45 service manifests with lifecycle declarations (39 alpha, 1 beta, 4 stable, 1 retired)","348 capability manifests (306 active, 27 planned, 15 retired) and the staff capability map","13 user-module namespace manifests",@@@ -8,7 +8,7 @@"additionalProperties": false,"properties": {"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },-- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },++ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },"run_id": { "type": "string", "pattern": "^frn_[0-9A-HJKMNP-TV-Z]{26}$", "description": "The recorded fetch run (GET /api/v1/sources/:key/runs)." },"endpoint_url": { "type": "string", "minLength": 1, "maxLength": 2048 },"state": { "enum": ["robots_denied", "http_error", "rate_limited", "parse_error"] },@@@ -9,7 +9,7 @@"properties": {"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },-- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },++ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },"canonical_url": { "type": ["string", "null"], "format": "uri" },"title": { "type": ["string", "null"] },@@@ -9,7 +9,7 @@"properties": {"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },-- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },++ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },"canonical_url": { "type": ["string", "null"], "format": "uri" },"title": { "type": ["string", "null"] },@@@ -9,7 +9,7 @@"properties": {"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },-- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },++ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },"canonical_url": { "type": ["string", "null"], "format": "uri" },"title": { "type": ["string", "null"] },@@@ -9,7 +9,7 @@"properties": {"id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },-- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },++ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | review_signal | record | coupon …" },"identity": { "type": "string", "minLength": 1, "maxLength": 2048, "description": "The source's own id (guid, @id, API id) or the canonical URL." },"canonical_url": { "type": ["string", "null"], "format": "uri" },@@@ -37,7 +37,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {@@@ -51,7 +51,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "key": "nasa-news",++ "name": "NASA news releases",++ "type": "rss",++ "category": "weather",++ "homepage_url": "https://www.nasa.gov/",++ "endpoints": [++ {++ "url": "https://www.nasa.gov/news-release/feed/"++ }++ ],++ "auth": {++ "mode": "none"++ },++ "robots_note": "robots.txt allows the feed path (checked 2026-09-23)",++ "terms_note": "US government work; verify before enabling",++ "license_note": null,++ "min_interval_ms": 60000,++ "poll_interval_sec": 3600,++ "stale_after_sec": 172800,++ "max_items": 200,++ "enabled": false,++ "review_required": true,++ "sensitivity": "none",++ "default_indexability": "noindex"++}nnew file mode 100644@@@ -0,0 +1,26 @@++{++ "key": "example-jobs-feed",++ "name": "A jobs board feed (example)",++ "type": "rss",++ "category": "jobs",++ "homepage_url": "https://jobs.example.org/",++ "endpoints": [++ {++ "url": "https://jobs.example.org/feed.xml"++ }++ ],++ "auth": {++ "mode": "none"++ },++ "robots_note": "example fixture",++ "terms_note": "example fixture",++ "license_note": null,++ "min_interval_ms": 60000,++ "poll_interval_sec": 3600,++ "stale_after_sec": 172800,++ "max_items": 200,++ "enabled": false,++ "review_required": true,++ "sensitivity": "none",++ "default_indexability": "noindex"++}@@@ -3759,7 +3759,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {@@@ -4153,7 +4156,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"kind": {@@@ -6790,7 +6796,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"kind": {@@@ -6869,7 +6878,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"kind": {@@@ -6952,7 +6964,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"kind": {@@@ -7030,7 +7045,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"run_id": {@@@ -7307,7 +7325,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Actor API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.AI API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Billing API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Blog API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Bot API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Chat API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Codes API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Community API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Coupons API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Deals API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Events API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Food API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Games API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Host API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Inventory API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Live API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.MediaHub API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Media API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Network API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.News API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenRestream API",-- "version": "0.209.3",-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Play API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Quest API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Reviews API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Run API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Search API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Services API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Sources API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -942,7 +942,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"kind": {@@@ -1470,7 +1473,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {@@@ -1840,7 +1846,10 @@"trade","hosting","crowdfunding",-- "games"++ "games",++ "housing",++ "food",++ "jobs"]},"homepage_url": {@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Space API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tips API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Tools API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Trade API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.VIP API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Watch API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Wiki API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Work API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -3,8 +3,8 @@"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema","info": {"title": "OpenVibe.Zone API",-- "version": "0.209.3",-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",++ "version": "0.210.0",++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.","license": {"name": "MIT","identifier": "MIT"@@@ -6156,7 +6156,19 @@ export interface Source {key: string;name: string;type: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";homepage_url?: string | null;/*** @maxItems 20@@@ -72827,7 +72839,19 @@ export interface Source {export interface SourceItem {id: string;source_key: string;-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";/*** article | url | sitemap | product | offer | review | review_signal | record | coupon …*/@@@ -75414,7 +75438,19 @@ export interface ChatRoomMessageDeletedPayload {export interface SourcesItemCreatedPayload {item_id: string;source_key: string;-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";/*** article | url | sitemap | product | offer | review | record … (sources.item@1 kind).*/@@@ -75436,7 +75472,19 @@ export interface SourcesItemCreatedPayload {export interface SourcesItemUpdatedPayload {item_id: string;source_key: string;-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";/*** article | url | sitemap | product | offer | review | record … (sources.item@1 kind).*/@@@ -75459,7 +75507,19 @@ export interface SourcesItemUpdatedPayload {export interface SourcesItemRemovedPayload {item_id: string;source_key: string;-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";/*** article | url | sitemap | product | offer | review | record … (sources.item@1 kind).*/@@@ -75481,7 +75541,19 @@ export interface SourcesItemRemovedPayload {*/export interface SourcesFetchFailedPayload {source_key: string;-- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";/*** The recorded fetch run (GET /api/v1/sources/:key/runs).*/@@@ -75795,7 +75867,19 @@ export type SourcesSourceWriteRequest =key?: string;name?: string;type?: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";-- category?: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";++ category?:++ | "news"++ | "blog"++ | "reviews"++ | "deals"++ | "coupons"++ | "trade"++ | "hosting"++ | "crowdfunding"++ | "games"++ | "housing"++ | "food"++ | "jobs";homepage_url?: string | null;/*** @maxItems 20@@@ -54,8 +54,8 @@"answer": "Yes. The router, the runtime, the console and the Node are open source and run on your own server with local models, and can link to openvibe.actor when you want hosted agents or the rest of the network."},{-- "question": "What will it cost?",-- "answer": "You will be able to start without paying, within limits published before launch; bigger tasks and stronger agents will be paid, with the cost shown per task."++ "question": "What does it cost?",++ "answer": "Every task shows what it cost and why it went where it did. Each person gets 20 free tasks a day, up to $0.05 a task and $0.25 a day; a task whose cheapest capable agent would cost more than its budget is refused before it runs. Paid budgets are not on sale yet."}],"keywords": "ai agent router, openrouter for agents, ai agent that controls your computer, remote control computer with ai, self-hosted ai agent, computer use agent, ai command console, agent api, cloud ai agent, mcp server",@@@ -5,7 +5,7 @@"icon": "fa-robot","accent": "#f472b6","tagline": "Get your robot online in minutes.",-- "description": "OpenVibe.Bot is an open control panel for robots. Add a robot, pair it with one command or a QR code, and drive it from any browser with live video, real controls and a stop button that always works. Buy a ready-made bot or bring your own: a Raspberry Pi robot, an ESP32, a ROS 2 robot, a phone, or a Cozmo. Share control, automate it, hand it to your AI agent, and stream it to OpenVibe.Live or openre.stream when you want to.",++ "description": "OpenVibe.Bot is an open control panel for robots. Add a robot, pair it with one command on the robot (or a QR code for a phone), and drive it from any browser with live video, real controls and a stop button that always works. It runs a Raspberry Pi robot such as the Adeept 4WD kit, a ROS 2 robot, a Cozmo, a LOOI or a phone, and anything else through the generic relay and your own script. Share control, automate it, hand it to your AI agent, and show it on OpenVibe.Live or openre.stream when you want to.","pillars": [{"title": "Pair devices",@@@ -21,7 +21,7 @@},{"title": "Stream it",-- "text": "Connect a device to a Live stream, a game or a website."++ "text": "Show the camera on a Live channel, or embed a read-only view in any website."}],"faq": [@@@ -34,8 +34,8 @@"answer": "No. Streaming is optional. Bot is a control panel for your robot first: drive it, check on it, share it and automate it."},{-- "question": "Which robot comes first?",-- "answer": "The Adeept 4WD Smart Car Kit for Raspberry Pi: four motors, a pan-tilt camera, distance and line sensors, lights and a buzzer. OpenVibe's device agent drives it directly, so its own open control port never has to be exposed."++ "question": "Which robots have built-in support?",++ "answer": "The Adeept 4WD Smart Car Kit for Raspberry Pi (ordinary or mecanum wheels), ROS 2 robots that take cmd_vel, Cozmo, LOOI through the community's Bluetooth bridge, and a phone, whose browser becomes the robot. OpenVibe's device agent drives each one directly, so no robot's own control port is ever exposed."},{"question": "Does it work with Cozmo?",@@@ -43,7 +43,7 @@},{"question": "What hardware works?",-- "answer": "A Raspberry Pi or another Linux board, an ESP32, a ROS 2 robot, an Android phone, or an ONVIF or RTSP camera. The curated kits list exactly what to buy."++ "answer": "A Raspberry Pi or another Linux board running the OpenVibe Node, with a driver for your model; a ROS 2 robot; a Cozmo or a LOOI through a computer next to it; or any phone, in its browser, with nothing to install. Anything else joins through the generic relay and your own script, or a driver you write and submit for others to use. The Adeept kit's page lists its parts; OpenVibe does not sell hardware."},{"question": "How does it keep the robot safe?",@@@ -51,170 +51,11 @@},{"question": "What will it cost?",-- "answer": "Controlling your own robot will not cost anything. Limits and any paid extras will be published before launch."++ "answer": "Controlling your own robot is free. Any paid extra would be listed on the site, with its price, before it starts."}],-- "keywords": "robot control panel, control a robot from the browser, remote control robot online, raspberry pi robot web control, esp32 robot control, ros 2 web control, telepresence robot, stream a robot live, open source robot controller, cozmo remote control, cozmo web control, cozmo sdk alternative",-- "vision": {-- "badge": "being built",-- "cta": [-- "Robots on Live today",-- "https://openvibe.live",-- "fa-tower-broadcast"-- ],-- "viz": {-- "kind": "panel",-- "name": "Rover-1",-- "latency": "84 ms",-- "onair": "Streaming to openvibe.live",-- "battery": 82,-- "keys": [-- [-- "fa-lightbulb",-- "Lights"-- ],-- [-- "fa-bullhorn",-- "Horn"-- ],-- [-- "fa-comment",-- "Speak"-- ],-- [-- "fa-camera-rotate",-- "Camera"-- ]-- ],-- "caption": "Design preview of the robot panel",-- "label": "Design preview: a robot control panel with live video, a drive pad, buttons, battery level and a stop button"-- },-- "stepsTitle": "Online in three steps",-- "stepsLead": "No port forwarding, no stream keys, no config files.",-- "steps": [-- [-- "Add a robot",-- "Name it and pick what it is: a rover, an arm, a camera, a phone on wheels or your own design."-- ],-- [-- "Pair it",-- "Paste one command on the robot, flash a ready-made card, or scan a QR code. It gets its own key, which you can revoke any time."-- ],-- [-- "Drive it",-- "Live video and controls in any browser, phone included, with a stop button that always works."-- ]-- ],-- "choices": {-- "title": "Buy one or bring your own",-- "lead": "Start with hardware that is known to work, or use what you already have.",-- "items": [-- {-- "icon": "fa-box-open",-- "title": "Get a robot",-- "text": "Curated kits with parts lists, tested settings and build guides, and ready-made bots that arrive paired to your account. The first one on OpenVibe.Bot is the Adeept 4WD Smart Car for Raspberry Pi.",-- "chips": [-- "Adeept 4WD Smart Car (Raspberry Pi)",-- "Rover kits",-- "Telepresence bots",-- "Pan-tilt cameras",-- "Robot arms"-- ]-- },-- {-- "icon": "fa-screwdriver-wrench",-- "title": "Bring your own",-- "text": "Anything with motors, a camera or sensors. Install the OpenVibe device agent on the robot, or, for robots with their own firmware like Cozmo, on a computer next to it, and your robot shows up in the panel.",-- "chips": [-- "Raspberry Pi and Linux boards",-- "Cozmo, through a bridge",-- "ESP32",-- "ROS 2",-- "Android phones",-- "ONVIF and RTSP cameras",-- "Serial motor boards"-- ]-- }-- ]-- },-- "featuresTitle": "More than a stream",-- "featuresLead": "A control panel for anything you build, whether or not anyone is watching.",-- "features": [-- [-- "fa-gamepad",-- "Real controls",-- "Drive pad, keyboard, touch joystick and gamepad; buttons, sliders, servos and camera pan-tilt, laid out from your robot's profile."-- ],-- [-- "fa-bolt",-- "Low latency",-- "Video and commands over WebRTC, so driving feels direct. Works behind ordinary home and mobile networks."-- ],-- [-- "fa-user-group",-- "Share control",-- "Invite friends as operators, or open a public queue with timed turns, cooldowns and per-role limits."-- ],-- [-- "fa-shield-halved",-- "Safe by default",-- "The robot stops itself when commands stop. An emergency stop, speed and range limits and time windows, all logged."-- ],-- [-- "fa-diagram-project",-- "Automate it",-- "Schedules, triggers and webhooks, plus an API and SDKs for your own apps."-- ],-- [-- "fa-user-astronaut",-- "Hand it to your agent",-- "Let your OpenVibe.Actor agent patrol, check on or perform with your robot, with your approval."-- ]-- ],-- "connectTitle": "Stream it, record it, connect it",-- "connectLead": "Optional, one toggle each. Your robot does not need an audience to be useful.",-- "connect": [-- [-- "fa-tower-broadcast",-- "Stream to OpenVibe.Live",-- "Put the robot's camera on your channel; viewers can drive it from chat or the panel.",-- "https://openvibe.live"-- ],-- [-- "fa-satellite-dish",-- "Stream through openre.stream",-- "Low-latency ingest and restreaming to other platforms from the same camera.",-- "https://openre.stream"-- ],-- [-- "fa-photo-film",-- "Record to OpenVibe.Media",-- "Keep every run as a video and cut clips from it.",-- "https://openvibe.media"-- ],-- [-- "fa-code",-- "Build on it",-- "The API, SDKs and examples.",-- "https://openvibe.services"-- ]-- ],-- "building": "OpenVibe.Bot is being built now, starting with our own robots; stream-controlled robots already run on OpenVibe.Live."-- },++ "keywords": "robot control panel, control a robot from the browser, remote control robot online, raspberry pi robot web control, ros 2 web control, telepresence robot, stream a robot live, open source robot controller, cozmo remote control, cozmo web control, cozmo sdk alternative, phone as a robot","relationships": {-- "service": "bot",-- "plannedRepo": "OpenVibe.Bot",-- "meanwhile": [-- {-- "label": "Robots on OpenVibe.Live",-- "url": "https://openvibe.live",-- "note": "Stream-controlled robots and cameras run on Live today."-- },-- {-- "label": "OpenVibe.Extensions",-- "url": "https://github.com/OpenVibers/OpenVibe.Extensions",-- "note": "Device-side agents and hardware scripts."-- }-- ]++ "service": "bot"}}@@@ -39,7 +39,7 @@},{"question": "Which sites does it cover?",-- "answer": "Every OpenVibe product site, live or coming, from OpenVibe.Live to OpenRestream. Each one has its own page with its questions and where it lives."++ "answer": "Every OpenVibe product site, from OpenVibe.Live to OpenRestream. Each one has its own page with its questions and where it lives."}],"keywords": "openvibe help, openvibe support, help center, support tickets, troubleshooting",@@@ -4,7 +4,7 @@"service": "contracts","product": "OpenVibe.Contracts","stage": "alpha",-- "version": "0.209.3",++ "version": "0.210.0","runtime": "node >=20","database": null,"migrations": 0,@@@ -1,12 +1,12 @@{"name": "openvibe-contracts",-- "version": "0.209.3",++ "version": "0.210.0","lockfileVersion": 3,"requires": true,"packages": {"": {"name": "openvibe-contracts",-- "version": "0.209.3",++ "version": "0.210.0","license": "AGPL-3.0-only","dependencies": {"ajv": "^8.17.1",@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.209.3",++ "version": "0.210.0","description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.","main": "index.js","types": "generated/typescript/index.d.ts",
@@ -4,6 +4,34 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
@@ -4,6 +4,34 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
the notes were in the tag and commit messages (`git tag -n1`).
the notes were in the tag and commit messages (`git tag -n1`).
+## 0.210.0 — 2026-10-22
+
+- **Sources categories `housing`, `food` and `jobs`** (plan 2026-10-22, track F1). `sources.source@1`,
+ `sources.item@1`, `sources.source-write-request@1` and the four `sources.*` event payloads accept them, so the
+ owner's top aggregators can move their own fetches into Sources:
+ - OpenVibe.Rent's and Homes' listings and rent data;
+ - OpenVibe.Food's recalls and food data;
+ - OpenVibe.Work's job boards.
+
+ They then share Sources' robots and terms checks, retention and the Search feed. A consumer that switched on the
+ old nine values should treat an unknown category as "other". Nothing in production sends the new values until
+ Sources pins this release.
+- Catalog copy that promised what the products do not do (plan 2026-10-22, track H5), checked against each product's
+ code. **OpenVibe.Bot**:
+ - Its description, FAQ and keywords named ESP32 boards, Android apps, ONVIF and RTSP cameras, ready-made bots to buy
+ and "kits that list exactly what to buy". None ships:
+ - OpenVibe sells no hardware, and the one curated kit (Adeept ADR036) is a parts list;
+ - the ONVIF camera is a server-side connector the operator configures.
+ - It now names what Bot's profiles and drivers run: the Adeept kit, ROS 2, Cozmo, LOOI, a phone in its browser, and
+ the generic relay for anything else.
+ - The planned-site `vision` block (robot arms, telepresence bots, a recording toggle, "flash a ready-made card")
+ and the `plannedRepo`/`meanwhile` pointers go, as for the other live products; nothing reads them since
+ OpenVibe.Sites retired.
+- **OpenVibe.Actor**'s cost answer gives its real free tier (20 tasks a day, $0.05 a task, $0.25 a day), not "limits
+ published before launch".
+- **OpenVibe.Help** no longer says "live or coming": every site it covers is live.
+- The catalog changes are text only.
+
## 0.209.3 — 2026-10-21
## 0.209.3 — 2026-10-21
- Codes' site text names OpenVibe Git at `git.openvibe.codes`, where it moved on 2026-10-21 (Codes#93; the old
- Codes' site text names OpenVibe Git at `git.openvibe.codes`, where it moved on 2026-10-21 (Codes#93; the old
@@ -2,7 +2,7 @@
@@ -2,7 +2,7 @@
> Machine-readable contracts for the whole OpenVibe network.
> Machine-readable contracts for the whole OpenVibe network.
-**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.209.3: 798 schemas in `contracts/catalog.json`, 45 service manifests, 348 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).
+**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.210.0: 798 schemas in `contracts/catalog.json`, 45 service manifests, 348 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).
**Plan:** OpenVibe Development Roadmap, Wave 1 (implementation plan rev 3, §3.1 and §18.11).
**Plan:** OpenVibe Development Roadmap, Wave 1 (implementation plan rev 3, §3.1 and §18.11).
**License:** AGPL-3.0 (same as every OpenVibe service).
**License:** AGPL-3.0 (same as every OpenVibe service).
@@ -63,7 +63,7 @@ OpenAPI 3.1 per service: `generated/openapi/<service>.json` (index in `generated
@@ -63,7 +63,7 @@ OpenAPI 3.1 per service: `generated/openapi/<service>.json` (index in `generated
| `events.event-envelope` | events | durable event shape for OpenVibe.Events (Wave 3) |
| `events.event-envelope` | events | durable event shape for OpenVibe.Events (Wave 3) |
| `media.media-ref` | media | `med_<ULID>` (Wave 4) or transitional `legacy:<app>:<kind>:<id>` |
| `media.media-ref` | media | `med_<ULID>` (Wave 4) or transitional `legacy:<app>:<kind>:<id>` |
-Manifests: `manifests/services/` (45 services at v0.209.3: 39 `alpha`, 1 `beta` (Media), 4 `stable` (Games, Live, Network, Tools) and 1 `retired` (Sites, 2026-10-14); OpenVibe.Realtime has no manifest, as ADR-005 closed it before it was built; Contracts, SDK, Shared and Publishing are released libraries and Examples a repository with CI, none of them a runtime; `docs/ESTATE.md` tables every repository), `manifests/capabilities/` (348 capabilities at v0.209.3: 306 `active`, 27 `planned` and 15 `retired`; the v0.1 set was Media upload/read, chat send, paste create, coins credit/debit, notifications push, subject resolve and Community post). Each active capability names the route that implements it today. Where a service is reachable today (public, loopback only, library) is Network's observed overlay (`server/registry/exposure.js` there); manifest notes say whether a service is deployed and launched publicly.
+Manifests: `manifests/services/` (45 services at v0.210.0: 39 `alpha`, 1 `beta` (Media), 4 `stable` (Games, Live, Network, Tools) and 1 `retired` (Sites, 2026-10-14); OpenVibe.Realtime has no manifest, as ADR-005 closed it before it was built; Contracts, SDK, Shared and Publishing are released libraries and Examples a repository with CI, none of them a runtime; `docs/ESTATE.md` tables every repository), `manifests/capabilities/` (348 capabilities at v0.210.0: 306 `active`, 27 `planned` and 15 `retired`; the v0.1 set was Media upload/read, chat send, paste create, coins credit/debit, notifications push, subject resolve and Community post). Each active capability names the route that implements it today. Where a service is reachable today (public, loopback only, library) is Network's observed overlay (`server/registry/exposure.js` there); manifest notes say whether a service is deployed and launched publicly.
**Ids.** Subjects use prefixed ULIDs: `usr_`, `gst_`, `app_`, `mod_`. Services and system actors use slugs (`live`, `media`). Events use `evt_` and Media objects `med_`.
**Ids.** Subjects use prefixed ULIDs: `usr_`, `gst_`, `app_`, `mod_`. Services and system actors use slugs (`live`, `media`). Events use `evt_` and Media objects `med_`.
@@ -11,7 +11,7 @@
@@ -11,7 +11,7 @@
"deployment": "none of its own: a library and artifact repository published as release tags; services pin a tag and deploy it with their own releases",
"deployment": "none of its own: a library and artifact repository published as release tags; services pin a tag and deploy it with their own releases",
"contracts": "openvibe-contracts (this package: package.json's version, released as the matching tag)",
"contracts": "openvibe-contracts (this package: package.json's version, released as the matching tag)",
"features": [
"features": [
- "798 JSON Schemas with valid and invalid fixtures (at v0.209.3)",
+ "798 JSON Schemas with valid and invalid fixtures (at v0.210.0)",
"45 service manifests with lifecycle declarations (39 alpha, 1 beta, 4 stable, 1 retired)",
"45 service manifests with lifecycle declarations (39 alpha, 1 beta, 4 stable, 1 retired)",
"348 capability manifests (306 active, 27 planned, 15 retired) and the staff capability map",
"348 capability manifests (306 active, 27 planned, 15 retired) and the staff capability map",
"13 user-module namespace manifests",
"13 user-module namespace manifests",
@@ -8,7 +8,7 @@
@@ -8,7 +8,7 @@
"additionalProperties": false,
"additionalProperties": false,
"properties": {
"properties": {
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },
+ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },
"run_id": { "type": "string", "pattern": "^frn_[0-9A-HJKMNP-TV-Z]{26}$", "description": "The recorded fetch run (GET /api/v1/sources/:key/runs)." },
"run_id": { "type": "string", "pattern": "^frn_[0-9A-HJKMNP-TV-Z]{26}$", "description": "The recorded fetch run (GET /api/v1/sources/:key/runs)." },
"endpoint_url": { "type": "string", "minLength": 1, "maxLength": 2048 },
"endpoint_url": { "type": "string", "minLength": 1, "maxLength": 2048 },
"state": { "enum": ["robots_denied", "http_error", "rate_limited", "parse_error"] },
"state": { "enum": ["robots_denied", "http_error", "rate_limited", "parse_error"] },
@@ -9,7 +9,7 @@
@@ -9,7 +9,7 @@
"properties": {
"properties": {
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },
+ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"title": { "type": ["string", "null"] },
"title": { "type": ["string", "null"] },
@@ -9,7 +9,7 @@
@@ -9,7 +9,7 @@
"properties": {
"properties": {
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },
+ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"title": { "type": ["string", "null"] },
"title": { "type": ["string", "null"] },
@@ -9,7 +9,7 @@
@@ -9,7 +9,7 @@
"properties": {
"properties": {
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"item_id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },
+ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | record … (sources.item@1 kind)." },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"title": { "type": ["string", "null"] },
"title": { "type": ["string", "null"] },
@@ -9,7 +9,7 @@
@@ -9,7 +9,7 @@
"properties": {
"properties": {
"id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"id": { "type": "string", "pattern": "^itm_[0-9A-HJKMNP-TV-Z]{26}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
"source_key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{1,63}$" },
- "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games"] },
+ "category": { "enum": ["news", "blog", "reviews", "deals", "coupons", "trade", "hosting", "crowdfunding", "games", "housing", "food", "jobs"] },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | review_signal | record | coupon …" },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_]{1,39}$", "description": "article | url | sitemap | product | offer | review | review_signal | record | coupon …" },
"identity": { "type": "string", "minLength": 1, "maxLength": 2048, "description": "The source's own id (guid, @id, API id) or the canonical URL." },
"identity": { "type": "string", "minLength": 1, "maxLength": 2048, "description": "The source's own id (guid, @id, API id) or the canonical URL." },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
"canonical_url": { "type": ["string", "null"], "format": "uri" },
@@ -37,7 +37,10 @@
@@ -37,7 +37,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
@@ -51,7 +51,10 @@
@@ -51,7 +51,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "key": "nasa-news",
+ "name": "NASA news releases",
+ "type": "rss",
+ "category": "weather",
+ "homepage_url": "https://www.nasa.gov/",
+ "endpoints": [
+ {
+ "url": "https://www.nasa.gov/news-release/feed/"
+ }
+ ],
+ "auth": {
+ "mode": "none"
+ },
+ "robots_note": "robots.txt allows the feed path (checked 2026-09-23)",
+ "terms_note": "US government work; verify before enabling",
+ "license_note": null,
+ "min_interval_ms": 60000,
+ "poll_interval_sec": 3600,
+ "stale_after_sec": 172800,
+ "max_items": 200,
+ "enabled": false,
+ "review_required": true,
+ "sensitivity": "none",
+ "default_indexability": "noindex"
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
+{
+ "key": "example-jobs-feed",
+ "name": "A jobs board feed (example)",
+ "type": "rss",
+ "category": "jobs",
+ "homepage_url": "https://jobs.example.org/",
+ "endpoints": [
+ {
+ "url": "https://jobs.example.org/feed.xml"
+ }
+ ],
+ "auth": {
+ "mode": "none"
+ },
+ "robots_note": "example fixture",
+ "terms_note": "example fixture",
+ "license_note": null,
+ "min_interval_ms": 60000,
+ "poll_interval_sec": 3600,
+ "stale_after_sec": 172800,
+ "max_items": 200,
+ "enabled": false,
+ "review_required": true,
+ "sensitivity": "none",
+ "default_indexability": "noindex"
+}
@@ -3759,7 +3759,10 @@
@@ -3759,7 +3759,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
@@ -4153,7 +4156,10 @@
@@ -4153,7 +4156,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"kind": {
"kind": {
@@ -6790,7 +6796,10 @@
@@ -6790,7 +6796,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"kind": {
"kind": {
@@ -6869,7 +6878,10 @@
@@ -6869,7 +6878,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"kind": {
"kind": {
@@ -6952,7 +6964,10 @@
@@ -6952,7 +6964,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"kind": {
"kind": {
@@ -7030,7 +7045,10 @@
@@ -7030,7 +7045,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"run_id": {
"run_id": {
@@ -7307,7 +7325,10 @@
@@ -7307,7 +7325,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Actor API",
"title": "OpenVibe.Actor API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.AI API",
"title": "OpenVibe.AI API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Billing API",
"title": "OpenVibe.Billing API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Blog API",
"title": "OpenVibe.Blog API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bot API",
"title": "OpenVibe.Bot API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Chat API",
"title": "OpenVibe.Chat API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Codes API",
"title": "OpenVibe.Codes API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Community API",
"title": "OpenVibe.Community API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Coupons API",
"title": "OpenVibe.Coupons API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Deals API",
"title": "OpenVibe.Deals API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Events API",
"title": "OpenVibe.Events API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Food API",
"title": "OpenVibe.Food API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Games API",
"title": "OpenVibe.Games API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Host API",
"title": "OpenVibe.Host API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Inventory API",
"title": "OpenVibe.Inventory API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Live API",
"title": "OpenVibe.Live API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.MediaHub API",
"title": "OpenVibe.MediaHub API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Media API",
"title": "OpenVibe.Media API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Network API",
"title": "OpenVibe.Network API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.News API",
"title": "OpenVibe.News API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenRestream API",
"title": "OpenRestream API",
- "version": "0.209.3",
- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Play API",
"title": "OpenVibe.Play API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Quest API",
"title": "OpenVibe.Quest API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Reviews API",
"title": "OpenVibe.Reviews API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Run API",
"title": "OpenVibe.Run API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Search API",
"title": "OpenVibe.Search API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Services API",
"title": "OpenVibe.Services API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Sources API",
"title": "OpenVibe.Sources API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -942,7 +942,10 @@
@@ -942,7 +942,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"kind": {
"kind": {
@@ -1470,7 +1473,10 @@
@@ -1470,7 +1473,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
@@ -1840,7 +1846,10 @@
@@ -1840,7 +1846,10 @@
"trade",
"trade",
"hosting",
"hosting",
"crowdfunding",
"crowdfunding",
- "games"
+ "games",
+ "housing",
+ "food",
+ "jobs"
]
]
},
},
"homepage_url": {
"homepage_url": {
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Space API",
"title": "OpenVibe.Space API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tips API",
"title": "OpenVibe.Tips API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tools API",
"title": "OpenVibe.Tools API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Trade API",
"title": "OpenVibe.Trade API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.VIP API",
"title": "OpenVibe.VIP API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Watch API",
"title": "OpenVibe.Watch API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Wiki API",
"title": "OpenVibe.Wiki API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Work API",
"title": "OpenVibe.Work API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Zone API",
"title": "OpenVibe.Zone API",
- "version": "0.209.3",
- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.209.3): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
+ "version": "0.210.0",
+ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.210.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -6156,7 +6156,19 @@ export interface Source {
@@ -6156,7 +6156,19 @@ export interface Source {
key: string;
key: string;
name: string;
name: string;
type: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";
type: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
homepage_url?: string | null;
homepage_url?: string | null;
/**
/**
* @maxItems 20
* @maxItems 20
@@ -72827,7 +72839,19 @@ export interface Source {
@@ -72827,7 +72839,19 @@ export interface Source {
export interface SourceItem {
export interface SourceItem {
id: string;
id: string;
source_key: string;
source_key: string;
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
/**
/**
* article | url | sitemap | product | offer | review | review_signal | record | coupon …
* article | url | sitemap | product | offer | review | review_signal | record | coupon …
*/
*/
@@ -75414,7 +75438,19 @@ export interface ChatRoomMessageDeletedPayload {
@@ -75414,7 +75438,19 @@ export interface ChatRoomMessageDeletedPayload {
export interface SourcesItemCreatedPayload {
export interface SourcesItemCreatedPayload {
item_id: string;
item_id: string;
source_key: string;
source_key: string;
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
/**
/**
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
*/
*/
@@ -75436,7 +75472,19 @@ export interface SourcesItemCreatedPayload {
@@ -75436,7 +75472,19 @@ export interface SourcesItemCreatedPayload {
export interface SourcesItemUpdatedPayload {
export interface SourcesItemUpdatedPayload {
item_id: string;
item_id: string;
source_key: string;
source_key: string;
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
/**
/**
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
*/
*/
@@ -75459,7 +75507,19 @@ export interface SourcesItemUpdatedPayload {
@@ -75459,7 +75507,19 @@ export interface SourcesItemUpdatedPayload {
export interface SourcesItemRemovedPayload {
export interface SourcesItemRemovedPayload {
item_id: string;
item_id: string;
source_key: string;
source_key: string;
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
/**
/**
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
* article | url | sitemap | product | offer | review | record … (sources.item@1 kind).
*/
*/
@@ -75481,7 +75541,19 @@ export interface SourcesItemRemovedPayload {
@@ -75481,7 +75541,19 @@ export interface SourcesItemRemovedPayload {
*/
*/
export interface SourcesFetchFailedPayload {
export interface SourcesFetchFailedPayload {
source_key: string;
source_key: string;
- category: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
/**
/**
* The recorded fetch run (GET /api/v1/sources/:key/runs).
* The recorded fetch run (GET /api/v1/sources/:key/runs).
*/
*/
@@ -75795,7 +75867,19 @@ export type SourcesSourceWriteRequest =
@@ -75795,7 +75867,19 @@ export type SourcesSourceWriteRequest =
key?: string;
key?: string;
name?: string;
name?: string;
type?: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";
type?: "rss" | "atom" | "sitemap" | "jsonld" | "api" | "manual";
- category?: "news" | "blog" | "reviews" | "deals" | "coupons" | "trade" | "hosting" | "crowdfunding" | "games";
+ category?:
+ | "news"
+ | "blog"
+ | "reviews"
+ | "deals"
+ | "coupons"
+ | "trade"
+ | "hosting"
+ | "crowdfunding"
+ | "games"
+ | "housing"
+ | "food"
+ | "jobs";
homepage_url?: string | null;
homepage_url?: string | null;
/**
/**
* @maxItems 20
* @maxItems 20
@@ -54,8 +54,8 @@
@@ -54,8 +54,8 @@
"answer": "Yes. The router, the runtime, the console and the Node are open source and run on your own server with local models, and can link to openvibe.actor when you want hosted agents or the rest of the network."
"answer": "Yes. The router, the runtime, the console and the Node are open source and run on your own server with local models, and can link to openvibe.actor when you want hosted agents or the rest of the network."
},
},
{
{
- "question": "What will it cost?",
- "answer": "You will be able to start without paying, within limits published before launch; bigger tasks and stronger agents will be paid, with the cost shown per task."
+ "question": "What does it cost?",
+ "answer": "Every task shows what it cost and why it went where it did. Each person gets 20 free tasks a day, up to $0.05 a task and $0.25 a day; a task whose cheapest capable agent would cost more than its budget is refused before it runs. Paid budgets are not on sale yet."
}
}
],
],
"keywords": "ai agent router, openrouter for agents, ai agent that controls your computer, remote control computer with ai, self-hosted ai agent, computer use agent, ai command console, agent api, cloud ai agent, mcp server",
"keywords": "ai agent router, openrouter for agents, ai agent that controls your computer, remote control computer with ai, self-hosted ai agent, computer use agent, ai command console, agent api, cloud ai agent, mcp server",
@@ -5,7 +5,7 @@
@@ -5,7 +5,7 @@
"icon": "fa-robot",
"icon": "fa-robot",
"accent": "#f472b6",
"accent": "#f472b6",
"tagline": "Get your robot online in minutes.",
"tagline": "Get your robot online in minutes.",
- "description": "OpenVibe.Bot is an open control panel for robots. Add a robot, pair it with one command or a QR code, and drive it from any browser with live video, real controls and a stop button that always works. Buy a ready-made bot or bring your own: a Raspberry Pi robot, an ESP32, a ROS 2 robot, a phone, or a Cozmo. Share control, automate it, hand it to your AI agent, and stream it to OpenVibe.Live or openre.stream when you want to.",
+ "description": "OpenVibe.Bot is an open control panel for robots. Add a robot, pair it with one command on the robot (or a QR code for a phone), and drive it from any browser with live video, real controls and a stop button that always works. It runs a Raspberry Pi robot such as the Adeept 4WD kit, a ROS 2 robot, a Cozmo, a LOOI or a phone, and anything else through the generic relay and your own script. Share control, automate it, hand it to your AI agent, and show it on OpenVibe.Live or openre.stream when you want to.",
"pillars": [
"pillars": [
{
{
"title": "Pair devices",
"title": "Pair devices",
@@ -21,7 +21,7 @@
@@ -21,7 +21,7 @@
},
},
{
{
"title": "Stream it",
"title": "Stream it",
- "text": "Connect a device to a Live stream, a game or a website."
+ "text": "Show the camera on a Live channel, or embed a read-only view in any website."
}
}
],
],
"faq": [
"faq": [
@@ -34,8 +34,8 @@
@@ -34,8 +34,8 @@
"answer": "No. Streaming is optional. Bot is a control panel for your robot first: drive it, check on it, share it and automate it."
"answer": "No. Streaming is optional. Bot is a control panel for your robot first: drive it, check on it, share it and automate it."
},
},
{
{
- "question": "Which robot comes first?",
- "answer": "The Adeept 4WD Smart Car Kit for Raspberry Pi: four motors, a pan-tilt camera, distance and line sensors, lights and a buzzer. OpenVibe's device agent drives it directly, so its own open control port never has to be exposed."
+ "question": "Which robots have built-in support?",
+ "answer": "The Adeept 4WD Smart Car Kit for Raspberry Pi (ordinary or mecanum wheels), ROS 2 robots that take cmd_vel, Cozmo, LOOI through the community's Bluetooth bridge, and a phone, whose browser becomes the robot. OpenVibe's device agent drives each one directly, so no robot's own control port is ever exposed."
},
},
{
{
"question": "Does it work with Cozmo?",
"question": "Does it work with Cozmo?",
@@ -43,7 +43,7 @@
@@ -43,7 +43,7 @@
},
},
{
{
"question": "What hardware works?",
"question": "What hardware works?",
- "answer": "A Raspberry Pi or another Linux board, an ESP32, a ROS 2 robot, an Android phone, or an ONVIF or RTSP camera. The curated kits list exactly what to buy."
+ "answer": "A Raspberry Pi or another Linux board running the OpenVibe Node, with a driver for your model; a ROS 2 robot; a Cozmo or a LOOI through a computer next to it; or any phone, in its browser, with nothing to install. Anything else joins through the generic relay and your own script, or a driver you write and submit for others to use. The Adeept kit's page lists its parts; OpenVibe does not sell hardware."
},
},
{
{
"question": "How does it keep the robot safe?",
"question": "How does it keep the robot safe?",
@@ -51,170 +51,11 @@
@@ -51,170 +51,11 @@
},
},
{
{
"question": "What will it cost?",
"question": "What will it cost?",
- "answer": "Controlling your own robot will not cost anything. Limits and any paid extras will be published before launch."
+ "answer": "Controlling your own robot is free. Any paid extra would be listed on the site, with its price, before it starts."
}
}
],
],
- "keywords": "robot control panel, control a robot from the browser, remote control robot online, raspberry pi robot web control, esp32 robot control, ros 2 web control, telepresence robot, stream a robot live, open source robot controller, cozmo remote control, cozmo web control, cozmo sdk alternative",
- "vision": {
- "badge": "being built",
- "cta": [
- "Robots on Live today",
- "https://openvibe.live",
- "fa-tower-broadcast"
- ],
- "viz": {
- "kind": "panel",
- "name": "Rover-1",
- "latency": "84 ms",
- "onair": "Streaming to openvibe.live",
- "battery": 82,
- "keys": [
- [
- "fa-lightbulb",
- "Lights"
- ],
- [
- "fa-bullhorn",
- "Horn"
- ],
- [
- "fa-comment",
- "Speak"
- ],
- [
- "fa-camera-rotate",
- "Camera"
- ]
- ],
- "caption": "Design preview of the robot panel",
- "label": "Design preview: a robot control panel with live video, a drive pad, buttons, battery level and a stop button"
- },
- "stepsTitle": "Online in three steps",
- "stepsLead": "No port forwarding, no stream keys, no config files.",
- "steps": [
- [
- "Add a robot",
- "Name it and pick what it is: a rover, an arm, a camera, a phone on wheels or your own design."
- ],
- [
- "Pair it",
- "Paste one command on the robot, flash a ready-made card, or scan a QR code. It gets its own key, which you can revoke any time."
- ],
- [
- "Drive it",
- "Live video and controls in any browser, phone included, with a stop button that always works."
- ]
- ],
- "choices": {
- "title": "Buy one or bring your own",
- "lead": "Start with hardware that is known to work, or use what you already have.",
- "items": [
- {
- "icon": "fa-box-open",
- "title": "Get a robot",
- "text": "Curated kits with parts lists, tested settings and build guides, and ready-made bots that arrive paired to your account. The first one on OpenVibe.Bot is the Adeept 4WD Smart Car for Raspberry Pi.",
- "chips": [
- "Adeept 4WD Smart Car (Raspberry Pi)",
- "Rover kits",
- "Telepresence bots",
- "Pan-tilt cameras",
- "Robot arms"
- ]
- },
- {
- "icon": "fa-screwdriver-wrench",
- "title": "Bring your own",
- "text": "Anything with motors, a camera or sensors. Install the OpenVibe device agent on the robot, or, for robots with their own firmware like Cozmo, on a computer next to it, and your robot shows up in the panel.",
- "chips": [
- "Raspberry Pi and Linux boards",
- "Cozmo, through a bridge",
- "ESP32",
- "ROS 2",
- "Android phones",
- "ONVIF and RTSP cameras",
- "Serial motor boards"
- ]
- }
- ]
- },
- "featuresTitle": "More than a stream",
- "featuresLead": "A control panel for anything you build, whether or not anyone is watching.",
- "features": [
- [
- "fa-gamepad",
- "Real controls",
- "Drive pad, keyboard, touch joystick and gamepad; buttons, sliders, servos and camera pan-tilt, laid out from your robot's profile."
- ],
- [
- "fa-bolt",
- "Low latency",
- "Video and commands over WebRTC, so driving feels direct. Works behind ordinary home and mobile networks."
- ],
- [
- "fa-user-group",
- "Share control",
- "Invite friends as operators, or open a public queue with timed turns, cooldowns and per-role limits."
- ],
- [
- "fa-shield-halved",
- "Safe by default",
- "The robot stops itself when commands stop. An emergency stop, speed and range limits and time windows, all logged."
- ],
- [
- "fa-diagram-project",
- "Automate it",
- "Schedules, triggers and webhooks, plus an API and SDKs for your own apps."
- ],
- [
- "fa-user-astronaut",
- "Hand it to your agent",
- "Let your OpenVibe.Actor agent patrol, check on or perform with your robot, with your approval."
- ]
- ],
- "connectTitle": "Stream it, record it, connect it",
- "connectLead": "Optional, one toggle each. Your robot does not need an audience to be useful.",
- "connect": [
- [
- "fa-tower-broadcast",
- "Stream to OpenVibe.Live",
- "Put the robot's camera on your channel; viewers can drive it from chat or the panel.",
- "https://openvibe.live"
- ],
- [
- "fa-satellite-dish",
- "Stream through openre.stream",
- "Low-latency ingest and restreaming to other platforms from the same camera.",
- "https://openre.stream"
- ],
- [
- "fa-photo-film",
- "Record to OpenVibe.Media",
- "Keep every run as a video and cut clips from it.",
- "https://openvibe.media"
- ],
- [
- "fa-code",
- "Build on it",
- "The API, SDKs and examples.",
- "https://openvibe.services"
- ]
- ],
- "building": "OpenVibe.Bot is being built now, starting with our own robots; stream-controlled robots already run on OpenVibe.Live."
- },
+ "keywords": "robot control panel, control a robot from the browser, remote control robot online, raspberry pi robot web control, ros 2 web control, telepresence robot, stream a robot live, open source robot controller, cozmo remote control, cozmo web control, cozmo sdk alternative, phone as a robot",
"relationships": {
"relationships": {
- "service": "bot",
- "plannedRepo": "OpenVibe.Bot",
- "meanwhile": [
- {
- "label": "Robots on OpenVibe.Live",
- "url": "https://openvibe.live",
- "note": "Stream-controlled robots and cameras run on Live today."
- },
- {
- "label": "OpenVibe.Extensions",
- "url": "https://github.com/OpenVibers/OpenVibe.Extensions",
- "note": "Device-side agents and hardware scripts."
- }
- ]
+ "service": "bot"
}
}
}
}
@@ -39,7 +39,7 @@
@@ -39,7 +39,7 @@
},
},
{
{
"question": "Which sites does it cover?",
"question": "Which sites does it cover?",
- "answer": "Every OpenVibe product site, live or coming, from OpenVibe.Live to OpenRestream. Each one has its own page with its questions and where it lives."
+ "answer": "Every OpenVibe product site, from OpenVibe.Live to OpenRestream. Each one has its own page with its questions and where it lives."
}
}
],
],
"keywords": "openvibe help, openvibe support, help center, support tickets, troubleshooting",
"keywords": "openvibe help, openvibe support, help center, support tickets, troubleshooting",
@@ -4,7 +4,7 @@
@@ -4,7 +4,7 @@
"service": "contracts",
"service": "contracts",
"product": "OpenVibe.Contracts",
"product": "OpenVibe.Contracts",
"stage": "alpha",
"stage": "alpha",
- "version": "0.209.3",
+ "version": "0.210.0",
"runtime": "node >=20",
"runtime": "node >=20",
"database": null,
"database": null,
"migrations": 0,
"migrations": 0,
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.209.3",
+ "version": "0.210.0",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.209.3",
+ "version": "0.210.0",
"license": "AGPL-3.0-only",
"license": "AGPL-3.0-only",
"dependencies": {
"dependencies": {
"ajv": "^8.17.1",
"ajv": "^8.17.1",
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.209.3",
+ "version": "0.210.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",