openvibers/openvibe.contracts Commits

Regroup the sites into the owner's eight groups (ask 274) (#424)

OP OpenVibers committed 2 days ago · 12967ddb17 · 94 files, +198 −145

site.neighbourhood is now watch, talk, play, read, shop, tools, make or build, matching OpenVibe.Network frame/sites.js GROUPS and OpenVibe.Shared rooms.js HOODS. Merged sections keep the group they appear in: Media -> Video, Bench -> Report, Play -> Games. The enum keeps the four pre-0.400.0 ids for older manifests; a new test checks every manifest uses a current group and no group has more than seven tiles.

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 6060a677..4db0b758 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,9 @@
# Changelog
++## 0.400.0 — 2026-11-10
++
++- Regroup the sites into the owner's eight groups (plan ask 274, 2026-11-10): `site.neighbourhood` is now `watch`, `talk`, `play`, `read`, `shop`, `tools`, `make` or `build`, the same ids and order as OpenVibe.Network `frame/sites.js` GROUPS and OpenVibe.Shared `rooms.js` HOODS. Every site manifest carries its new group; merged sections point at the site that shows them (Media → Video/watch, Bench → Report/read, Play → Games/play).
++
## 0.399.0 — 2026-11-10
- #408: add `quest.today@1`, the private Quest today response.
ddiff --git a/contracts/registry/service-manifest.v1.json b/contracts/registry/service-manifest.v1.json
iindex 5b0d5667..36cf3c9e 100644
---- a/contracts/registry/service-manifest.v1.json
++++ b/contracts/registry/service-manifest.v1.json
@@@ -221,8 +221,8 @@
"$ref": "product.v1.json#/$defs/relationships"
},
"neighbourhood": {
-- "enum": ["streams", "games", "answers", "make", "shop", "people", "build"],
-- "description": "The room's launcher group in OpenVibe.Shared rooms.js and OpenVibe.Network frame/sites.js; optional so older manifests retain their meaning."
++ "enum": ["watch", "talk", "play", "read", "shop", "tools", "make", "build", "streams", "games", "answers", "people"],
++ "description": "The site's launcher group: the eight current groups are watch, talk, play, read, shop, tools, make and build (OpenVibe.Network frame/sites.js GROUPS), whose order and labels the menu, the footer and the home pages show (OpenVibe.Shared rooms.js repeats the ids for its rooms). The pre-0.400.0 ids streams, games, answers and people stay accepted for older manifests."
},
"strip": {
"type": "array",
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 43407d4b..6242b175 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -1860,15 +1860,20 @@
},
"neighbourhood": {
"enum": [
++ "watch",
++ "talk",
++ "play",
++ "read",
++ "shop",
++ "tools",
++ "make",
++ "build",
"streams",
"games",
"answers",
-- "make",
-- "shop",
-- "people",
-- "build"
++ "people"
],
-- "description": "The room's launcher group in OpenVibe.Shared rooms.js and OpenVibe.Network frame/sites.js; optional so older manifests retain their meaning."
++ "description": "The site's launcher group: the eight current groups are watch, talk, play, read, shop, tools, make and build (OpenVibe.Network frame/sites.js GROUPS), whose order and labels the menu, the footer and the home pages show (OpenVibe.Shared rooms.js repeats the ids for its rooms). The pre-0.400.0 ids streams, games, answers and people stay accepted for older manifests."
},
"strip": {
"type": "array",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 03f128ec..53c5e1e9 100644
---- a/generated/openapi/actor.json
++++ b/generated/openapi/actor.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Actor API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/ai.json b/generated/openapi/ai.json
iindex 6aceff07..fbc470a0 100644
---- a/generated/openapi/ai.json
++++ b/generated/openapi/ai.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.AI API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex 8575e3c4..bafa418e 100644
---- a/generated/openapi/bench.json
++++ b/generated/openapi/bench.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bench API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/billing.json b/generated/openapi/billing.json
iindex 091cf136..4414bff6 100644
---- a/generated/openapi/billing.json
++++ b/generated/openapi/billing.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Billing API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/blog.json b/generated/openapi/blog.json
iindex 6d7b059d..0d69d937 100644
---- a/generated/openapi/blog.json
++++ b/generated/openapi/blog.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Blog API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/bot.json b/generated/openapi/bot.json
iindex 7d8b7b37..c37e9f2b 100644
---- a/generated/openapi/bot.json
++++ b/generated/openapi/bot.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bot API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/chat.json b/generated/openapi/chat.json
iindex 28a6bf28..056bca5c 100644
---- a/generated/openapi/chat.json
++++ b/generated/openapi/chat.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Chat API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/codes.json b/generated/openapi/codes.json
iindex f71b0f41..abd1d4f0 100644
---- a/generated/openapi/codes.json
++++ b/generated/openapi/codes.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Codes API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/community.json b/generated/openapi/community.json
iindex 336c96ff..8af009dc 100644
---- a/generated/openapi/community.json
++++ b/generated/openapi/community.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Community API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/connect.json b/generated/openapi/connect.json
iindex 13ce3aa5..468a2e80 100644
---- a/generated/openapi/connect.json
++++ b/generated/openapi/connect.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe Connect API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/coupons.json b/generated/openapi/coupons.json
iindex e8d4cc60..a52bb995 100644
---- a/generated/openapi/coupons.json
++++ b/generated/openapi/coupons.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Coupons API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/deals.json b/generated/openapi/deals.json
iindex 05c56258..9eacfc9c 100644
---- a/generated/openapi/deals.json
++++ b/generated/openapi/deals.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Deals API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/design.json b/generated/openapi/design.json
iindex 09c8016f..19dc76b3 100644
---- a/generated/openapi/design.json
++++ b/generated/openapi/design.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Design API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/domains.json b/generated/openapi/domains.json
iindex 98e1a0ae..90f6ce54 100644
---- a/generated/openapi/domains.json
++++ b/generated/openapi/domains.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Domains API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/events.json b/generated/openapi/events.json
iindex 22594e4b..319ed7e6 100644
---- a/generated/openapi/events.json
++++ b/generated/openapi/events.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Events API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/exchange.json b/generated/openapi/exchange.json
iindex 14977636..1a8e23a3 100644
---- a/generated/openapi/exchange.json
++++ b/generated/openapi/exchange.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Exchange API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/food.json b/generated/openapi/food.json
iindex 1e6cec92..d4fe51d5 100644
---- a/generated/openapi/food.json
++++ b/generated/openapi/food.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Food API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/games.json b/generated/openapi/games.json
iindex 102554d0..56d640b8 100644
---- a/generated/openapi/games.json
++++ b/generated/openapi/games.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Games API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/git.json b/generated/openapi/git.json
iindex 958fc2ad..98f12f9a 100644
---- a/generated/openapi/git.json
++++ b/generated/openapi/git.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Git API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/host.json b/generated/openapi/host.json
iindex 0e298787..9e017ea4 100644
---- a/generated/openapi/host.json
++++ b/generated/openapi/host.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Host API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/inventory.json b/generated/openapi/inventory.json
iindex fee5aa1e..7d645fa9 100644
---- a/generated/openapi/inventory.json
++++ b/generated/openapi/inventory.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Inventory API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/live.json b/generated/openapi/live.json
iindex c5b788c7..137e6887 100644
---- a/generated/openapi/live.json
++++ b/generated/openapi/live.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Live API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/mail.json b/generated/openapi/mail.json
iindex 00122ba7..1f2facfe 100644
---- a/generated/openapi/mail.json
++++ b/generated/openapi/mail.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Mail API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/media-hub.json b/generated/openapi/media-hub.json
iindex 9a3b9d83..efec3752 100644
---- a/generated/openapi/media-hub.json
++++ b/generated/openapi/media-hub.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.MediaHub API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/media.json b/generated/openapi/media.json
iindex f1be9bfa..8ae36eec 100644
---- a/generated/openapi/media.json
++++ b/generated/openapi/media.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Media API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/network.json b/generated/openapi/network.json
iindex 659a822e..913c9da9 100644
---- a/generated/openapi/network.json
++++ b/generated/openapi/network.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Network API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/news.json b/generated/openapi/news.json
iindex 6e17ac6f..8ac0fd5f 100644
---- a/generated/openapi/news.json
++++ b/generated/openapi/news.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.News API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/openre.json b/generated/openapi/openre.json
iindex 2a8c6e42..b9dc8d5b 100644
---- a/generated/openapi/openre.json
++++ b/generated/openapi/openre.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenRestream API",
-- "version": "0.399.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/play.json b/generated/openapi/play.json
iindex d6b41c84..8976d4a9 100644
---- a/generated/openapi/play.json
++++ b/generated/openapi/play.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Play API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/quest.json b/generated/openapi/quest.json
iindex ea3966b6..bfc2df5e 100644
---- a/generated/openapi/quest.json
++++ b/generated/openapi/quest.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Quest API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/report.json b/generated/openapi/report.json
iindex 7a9925f8..5dab1f12 100644
---- a/generated/openapi/report.json
++++ b/generated/openapi/report.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Report API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/reviews.json b/generated/openapi/reviews.json
iindex 83508d6b..12f5b695 100644
---- a/generated/openapi/reviews.json
++++ b/generated/openapi/reviews.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Reviews API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/run.json b/generated/openapi/run.json
iindex 935f1438..1fb5bc96 100644
---- a/generated/openapi/run.json
++++ b/generated/openapi/run.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Run API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/search.json b/generated/openapi/search.json
iindex 4d72269e..f5ca56db 100644
---- a/generated/openapi/search.json
++++ b/generated/openapi/search.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Search API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/services.json b/generated/openapi/services.json
iindex 64092179..a6019445 100644
---- a/generated/openapi/services.json
++++ b/generated/openapi/services.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Services API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/sources.json b/generated/openapi/sources.json
iindex a01a8dce..8ba6a2e3 100644
---- a/generated/openapi/sources.json
++++ b/generated/openapi/sources.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Sources API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/space.json b/generated/openapi/space.json
iindex 8270be4d..baad5530 100644
---- a/generated/openapi/space.json
++++ b/generated/openapi/space.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Space API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/tips.json b/generated/openapi/tips.json
iindex 85aa5d73..fd3ded35 100644
---- a/generated/openapi/tips.json
++++ b/generated/openapi/tips.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tips API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/today.json b/generated/openapi/today.json
iindex 7a52d740..68538cfa 100644
---- a/generated/openapi/today.json
++++ b/generated/openapi/today.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Today API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/tools.json b/generated/openapi/tools.json
iindex 1c91f477..18d441ce 100644
---- a/generated/openapi/tools.json
++++ b/generated/openapi/tools.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tools API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/trade.json b/generated/openapi/trade.json
iindex 2a608ec8..748e8db7 100644
---- a/generated/openapi/trade.json
++++ b/generated/openapi/trade.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Trade API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/vip.json b/generated/openapi/vip.json
iindex 72091222..3785aaf4 100644
---- a/generated/openapi/vip.json
++++ b/generated/openapi/vip.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.VIP API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/vision.json b/generated/openapi/vision.json
iindex ff7c08c9..cc953659 100644
---- a/generated/openapi/vision.json
++++ b/generated/openapi/vision.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Vision API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/watch.json b/generated/openapi/watch.json
iindex 78358b28..d6246f96 100644
---- a/generated/openapi/watch.json
++++ b/generated/openapi/watch.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Watch API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/wiki.json b/generated/openapi/wiki.json
iindex 9d2d55d6..b46a812f 100644
---- a/generated/openapi/wiki.json
++++ b/generated/openapi/wiki.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Wiki API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/work.json b/generated/openapi/work.json
iindex add45d75..e13dc51d 100644
---- a/generated/openapi/work.json
++++ b/generated/openapi/work.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Work API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/openapi/zone.json b/generated/openapi/zone.json
iindex 3d931b4b..521b3815 100644
---- a/generated/openapi/zone.json
++++ b/generated/openapi/zone.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Zone API",
-- "version": "0.399.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.399.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.",
++ "version": "0.400.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.400.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"
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex 4476c21f..8479abdf 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -2963,9 +2963,21 @@ export interface ServiceManifest {
statusApi?: string;
};
/**
-- * The room's launcher group in OpenVibe.Shared rooms.js and OpenVibe.Network frame/sites.js; optional so older manifests retain their meaning.
++ * The site's launcher group: the eight current groups are watch, talk, play, read, shop, tools, make and build (OpenVibe.Network frame/sites.js GROUPS), whose order and labels the menu, the footer and the home pages show (OpenVibe.Shared rooms.js repeats the ids for its rooms). The pre-0.400.0 ids streams, games, answers and people stay accepted for older manifests.
*/
-- neighbourhood?: "streams" | "games" | "answers" | "make" | "shop" | "people" | "build";
++ neighbourhood?:
++ | "watch"
++ | "talk"
++ | "play"
++ | "read"
++ | "shop"
++ | "tools"
++ | "make"
++ | "build"
++ | "streams"
++ | "games"
++ | "answers"
++ | "people";
/**
* This site's own items on the network's footer strip, read with the rest of it at openvibe.network GET /api/frame/online?site=<id>: a label, an icon from the shared glyph set, an https link on an OpenVibe domain (any openvibe.* host), and either a count the site reports or a fixed line. Network checks every field again before it reaches a page.
*
ddiff --git a/manifests/services/bench.json b/manifests/services/bench.json
iindex f97f1fcb..1d67cffb 100644
---- a/manifests/services/bench.json
++++ b/manifests/services/bench.json
@@@ -105,6 +105,6 @@
"what": "The shared AI benchmark and comparison engine: kinds, pinned rounds, blind judgements, elo/pareto/cost boards, an open dataset per kind and private evals.",
"legalProfile": "service",
"position": 48,
-- "neighbourhood": "build"
++ "neighbourhood": "read"
}
}
ddiff --git a/manifests/services/blog.json b/manifests/services/blog.json
iindex 91551acd..d0aebbc3 100644
---- a/manifests/services/blog.json
++++ b/manifests/services/blog.json
@@@ -39,7 +39,7 @@
"answer": "Yes. Every blog has RSS, Atom and JSON feeds."
}
],
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
},
"capabilities": [
"blog.blog.create",
ddiff --git a/manifests/services/cam.json b/manifests/services/cam.json
iindex ddf719ef..d3dc4557 100644
---- a/manifests/services/cam.json
++++ b/manifests/services/cam.json
@@@ -79,6 +79,6 @@
"what": "The camera app with a timer, burst, grid and on-device filter; a private wall for the cameras you own, shared through revocable viewer grants; and the stills Live's cam button takes, every photo saved to Pics.",
"legalProfile": "ugc",
"position": 47,
-- "neighbourhood": "streams"
++ "neighbourhood": "watch"
}
}
ddiff --git a/manifests/services/casino.json b/manifests/services/casino.json
iindex 759408dc..13abce6c 100644
---- a/manifests/services/casino.json
++++ b/manifests/services/casino.json
@@@ -72,6 +72,6 @@
"what": "Every casino game with its insides showing: the rules, the exact odds and what each bet costs. Play with chips worth nothing, and watch a million rounds in your browser. Never real money.",
"legalProfile": "games",
"position": 49,
-- "neighbourhood": "games"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/chat.json b/manifests/services/chat.json
iindex 6cba2480..cd6f5efc 100644
---- a/manifests/services/chat.json
++++ b/manifests/services/chat.json
@@@ -169,6 +169,6 @@
"answer": "Yes. Pictures in rooms and server channels go through OpenVibe.Pics and show inline."
}
],
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
}
}
ddiff --git a/manifests/services/community.json b/manifests/services/community.json
iindex 6c47a332..1d872f98 100644
---- a/manifests/services/community.json
++++ b/manifests/services/community.json
@@@ -77,7 +77,7 @@
"answer": "Yes. Comments on Live recordings and clips, blog posts and hosting plans are OpenVibe.Community threads, so one account and one moderation team cover them all."
}
],
-- "neighbourhood": "people",
++ "neighbourhood": "talk",
"strip": [
{ "label": "Share a paste", "icon": "clipboard", "link": "https://openvibe.community/pastes", "line": "No account needed" }
]
ddiff --git a/manifests/services/design.json b/manifests/services/design.json
iindex d3595ce7..ccaa1cfd 100644
---- a/manifests/services/design.json
++++ b/manifests/services/design.json
@@@ -75,6 +75,6 @@
"what": "Try any OpenVibe theme on a Live channel, a Chat room and a shop at once, change its colours with contrast checks that must pass, use it on every site, and step back to any earlier look.",
"legalProfile": "service",
"position": 40,
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
}
}
ddiff --git a/manifests/services/domains.json b/manifests/services/domains.json
iindex 87afefd7..7d1d9105 100644
---- a/manifests/services/domains.json
++++ b/manifests/services/domains.json
@@@ -77,6 +77,6 @@
"what": "Every ending and every registrar for a name, with what you will really pay over 1, 3 and 5 years, the renewal traps flagged, and each domain's public history.",
"legalProfile": "public",
"position": 38,
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
}
}
ddiff --git a/manifests/services/exchange.json b/manifests/services/exchange.json
iindex 17b6af67..200f1bdc 100644
---- a/manifests/services/exchange.json
++++ b/manifests/services/exchange.json
@@@ -83,7 +83,7 @@
"what": "Models, keys, usage, search and deployments. Try models in Chat; compare and vote on Report.",
"legalProfile": "ugc",
"position": 45,
-- "neighbourhood": "shop"
++ "neighbourhood": "build"
},
"routes": [
{
ddiff --git a/manifests/services/food.json b/manifests/services/food.json
iindex f124a2d8..063fa9dc 100644
---- a/manifests/services/food.json
++++ b/manifests/services/food.json
@@@ -89,6 +89,6 @@
"what": "Find food banks and budget grocers near you, plan a week of meals for your household and budget, get recipe ideas from what is in your cupboard, and search every delivery app at once.",
"legalProfile": "tools",
"position": 25,
-- "neighbourhood": "shop"
++ "neighbourhood": "tools"
}
}
ddiff --git a/manifests/services/fun.json b/manifests/services/fun.json
iindex a8c27b83..0fb70fd9 100644
---- a/manifests/services/fun.json
++++ b/manifests/services/fun.json
@@@ -84,6 +84,6 @@
"what": "IRL quest boards on Live, a local guide from OpenStreetMap and group plans the group votes on; add the winner to your own Today.",
"legalProfile": "ugc",
"position": 46,
-- "neighbourhood": "games"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/games.json b/manifests/services/games.json
iindex 9dca8ed3..08287635 100644
---- a/manifests/services/games.json
++++ b/manifests/services/games.json
@@@ -40,7 +40,7 @@
"answer": "Yes. Leaderboards, achievements and cloud saves come from OpenVibe.Play, so your progress follows your account."
}
],
-- "neighbourhood": "games",
++ "neighbourhood": "play",
"strip": [
{ "label": "Play now", "icon": "game", "link": "https://openvibe.games/", "line": "Browser games, no download" }
]
ddiff --git a/manifests/services/git.json b/manifests/services/git.json
iindex 20fed2a6..be43ee8f 100644
---- a/manifests/services/git.json
++++ b/manifests/services/git.json
@@@ -72,6 +72,6 @@
"what": "Host code, browse it, mirror GitHub and clone it to your computer with Link, in OpenVibe's own theme.",
"legalProfile": "public",
"position": 33,
-- "neighbourhood": "make"
++ "neighbourhood": "build"
}
}
ddiff --git a/manifests/services/help.json b/manifests/services/help.json
iindex 46f5c1f9..6af528fb 100644
---- a/manifests/services/help.json
++++ b/manifests/services/help.json
@@@ -81,6 +81,6 @@
"what": "Every OpenVibe site in one help centre: what each one does, its common questions, and a ticket to a person when the answer is not there.",
"legalProfile": "account",
"position": 26,
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
}
}
ddiff --git a/manifests/services/host.json b/manifests/services/host.json
iindex fab152d3..1dffe9b5 100644
---- a/manifests/services/host.json
++++ b/manifests/services/host.json
@@@ -92,7 +92,7 @@
"answer": "From people running YABS on their own servers with a one-time link from openvibe.host/catalog/benchmarks/new. A result keeps the CPU, memory and disk, Geekbench scores with their public link, fio disk speeds, iperf3 network speeds and the city and network. Never the server's address, and never who ran it on the public page."
}
],
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
},
"capabilities": [
"host.catalog.manage",
ddiff --git a/manifests/services/inventory.json b/manifests/services/inventory.json
iindex a32e2b4b..1971e2b1 100644
---- a/manifests/services/inventory.json
++++ b/manifests/services/inventory.json
@@@ -116,6 +116,6 @@
"answer": "No. Items are never bought, sold, traded or turned into money."
}
],
-- "neighbourhood": "people"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/live.json b/manifests/services/live.json
iindex f2a6682f..c08bebe4 100644
---- a/manifests/services/live.json
++++ b/manifests/services/live.json
@@@ -44,7 +44,7 @@
"answer": "A write-up of what streamers talked about, from their own speech: the topics, each streamer's take in their own words with a link to the moment, every stream as an episode with a recap and chapters, and crossovers when streamers name each other. It replaced the Arena on 19 October 2026: no beefs, ratings or rankings."
}
],
-- "neighbourhood": "streams",
++ "neighbourhood": "watch",
"strip": [
{ "label": "The Rundown", "icon": "news", "link": "https://openvibe.live/rundown", "line": "What streamers talked about" }
]
ddiff --git a/manifests/services/locker.json b/manifests/services/locker.json
iindex 3d5a2002..ac352a88 100644
---- a/manifests/services/locker.json
++++ b/manifests/services/locker.json
@@@ -73,6 +73,6 @@
"what": "End-to-end encrypted files and expiring Sends: OpenVibe stores only ciphertext and cannot read what is inside.",
"legalProfile": "hosting",
"position": 54,
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
}
}
ddiff --git a/manifests/services/mail.json b/manifests/services/mail.json
iindex 85876d77..aca66378 100644
---- a/manifests/services/mail.json
++++ b/manifests/services/mail.json
@@@ -94,6 +94,6 @@
"what": "Ten-minute addresses that show you the code, and inboxes for your agents. Receive only.",
"legalProfile": "service",
"position": 7,
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
}
}
ddiff --git a/manifests/services/media-hub.json b/manifests/services/media-hub.json
iindex a74f5a36..29ef584b 100644
---- a/manifests/services/media-hub.json
++++ b/manifests/services/media-hub.json
@@@ -102,6 +102,6 @@
"what": "A 25 GB drive with share links and folder backups (openvibe.download), videos you upload or record with AI captions, chapters and the AI cut, plus Live's recordings (openvibe.video), and pictures with embed links, albums, any size and format, and alt text (openvibe.pics).",
"legalProfile": "hosting",
"position": 21,
-- "neighbourhood": "streams"
++ "neighbourhood": "watch"
}
}
ddiff --git a/manifests/services/media.json b/manifests/services/media.json
iindex 64d5248a..c790a4ed 100644
---- a/manifests/services/media.json
++++ b/manifests/services/media.json
@@@ -36,7 +36,7 @@
"answer": "You choose for each one: public, unlisted (only people with the link) or private."
}
],
-- "neighbourhood": "build"
++ "neighbourhood": "watch"
},
"capabilities": [
"media.access_key.manage",
ddiff --git a/manifests/services/meme.json b/manifests/services/meme.json
iindex e7602038..50f7d6d4 100644
---- a/manifests/services/meme.json
++++ b/manifests/services/meme.json
@@@ -76,6 +76,6 @@
"what": "Every entry in the open meme database cites the chat line or VOD second it came from, follows the later uses on a timeline, and keeps a status. Vote for meme of the week, caption a template, and report what needs fixing.",
"legalProfile": "ugc",
"position": 43,
-- "neighbourhood": "games"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/network.json b/manifests/services/network.json
iindex 241348d8..cb70d419 100644
---- a/manifests/services/network.json
++++ b/manifests/services/network.json
@@@ -46,7 +46,7 @@
"answer": "Yes. Link platforms like Twitch, YouTube or Kick to your OpenVibe account, and unlink them whenever you like."
}
],
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
},
"capabilities": [
"identity.emails.read",
ddiff --git a/manifests/services/news.json b/manifests/services/news.json
iindex b95b4513..6ab2e3f3 100644
---- a/manifests/services/news.json
++++ b/manifests/services/news.json
@@@ -75,7 +75,7 @@
}
]
},
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
},
"capabilities": [
"news.story.create",
ddiff --git a/manifests/services/openre.json b/manifests/services/openre.json
iindex ca274b8f..851bae8e 100644
---- a/manifests/services/openre.json
++++ b/manifests/services/openre.json
@@@ -115,7 +115,7 @@
}
]
},
-- "neighbourhood": "streams"
++ "neighbourhood": "watch"
},
"capabilities": [
"openre.stream.read",
ddiff --git a/manifests/services/play.json b/manifests/services/play.json
iindex 952d09a0..ec60f463 100644
---- a/manifests/services/play.json
++++ b/manifests/services/play.json
@@@ -102,6 +102,6 @@
"answer": "When a guest signs in, the game adopts them and their unlocks and scores become the person's."
}
],
-- "neighbourhood": "build"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/quest.json b/manifests/services/quest.json
iindex 437fbc25..8469beca 100644
---- a/manifests/services/quest.json
++++ b/manifests/services/quest.json
@@@ -117,6 +117,6 @@
"what": "One quest log across every OpenVibe site: real things you do on the network complete quests that pay badges and OpenCoins, and developer apps add quests on their own events.",
"legalProfile": "account",
"position": 28,
-- "neighbourhood": "games"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/report.json b/manifests/services/report.json
iindex 3bcc75f4..b8253f7c 100644
---- a/manifests/services/report.json
++++ b/manifests/services/report.json
@@@ -86,6 +86,6 @@
"what": "The network's numbers open to everyone, what streamers talked about in The Rundown, and every stream's after-show report, each number with its definition and its date.",
"legalProfile": "public",
"position": 39,
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
}
}
ddiff --git a/manifests/services/reviews.json b/manifests/services/reviews.json
iindex e0c2090d..d35ece32 100644
---- a/manifests/services/reviews.json
++++ b/manifests/services/reviews.json
@@@ -75,7 +75,7 @@
}
]
},
-- "neighbourhood": "answers"
++ "neighbourhood": "shop"
},
"capabilities": [
"reviews.entity.resolve",
ddiff --git a/manifests/services/search.json b/manifests/services/search.json
iindex 4db5ceb3..d606b229 100644
---- a/manifests/services/search.json
++++ b/manifests/services/search.json
@@@ -102,6 +102,6 @@
"answer": "Search lists only what its site marks public and indexable. Private, draft and noindex pages never appear, and a page removed from its site leaves Search too."
}
],
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
}
}
ddiff --git a/manifests/services/studio.json b/manifests/services/studio.json
iindex 2e53eb0a..5a21f872 100644
---- a/manifests/services/studio.json
++++ b/manifests/services/studio.json
@@@ -59,6 +59,6 @@
"what": "Photo for layers and retouching, Light for your library and RAW files: open-source apps, free, with your files on OpenVibe.",
"legalProfile": "hosting",
"position": 55,
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
}
}
ddiff --git a/manifests/services/surf.json b/manifests/services/surf.json
iindex 25d2fc3f..51814669 100644
---- a/manifests/services/surf.json
++++ b/manifests/services/surf.json
@@@ -69,6 +69,6 @@
"what": "Ride Counter-Strike-style surf maps in the browser against the clock, let an agent surf the web for you and report back with its sources, or lean back and surf what is on across OpenVibe.",
"legalProfile": "service",
"position": 42,
-- "neighbourhood": "games"
++ "neighbourhood": "play"
}
}
ddiff --git a/manifests/services/tips.json b/manifests/services/tips.json
iindex 042b7738..33982e70 100644
---- a/manifests/services/tips.json
++++ b/manifests/services/tips.json
@@@ -80,7 +80,7 @@
"answer": "Tips arrive as Vibes you can cash out, under the network’s cash-out rules (from 500 Vibes, after a 14-day hold)."
}
],
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
},
"capabilities": [
"tips.profile.get",
ddiff --git a/manifests/services/today.json b/manifests/services/today.json
iindex 6fdb6476..d959e1be 100644
---- a/manifests/services/today.json
++++ b/manifests/services/today.json
@@@ -91,6 +91,6 @@
"what": "Stream schedules, reminders that find you on any OpenVibe site, calendar feeds for your own calendar app, and a morning brief, all in one place.",
"legalProfile": "account",
"position": 41,
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
}
}
ddiff --git a/manifests/services/tools.json b/manifests/services/tools.json
iindex 72eb897c..64d1859e 100644
---- a/manifests/services/tools.json
++++ b/manifests/services/tools.json
@@@ -39,7 +39,7 @@
"answer": "Hundreds: video, audio and image converters, document tools, developer utilities and more, each with its own page on openvibe.tools or a tool subdomain."
}
],
-- "neighbourhood": "make"
++ "neighbourhood": "tools"
},
"capabilities": [
"tools.analytics.read",
ddiff --git a/manifests/services/tours.json b/manifests/services/tours.json
iindex eaa226d6..29fcff45 100644
---- a/manifests/services/tours.json
++++ b/manifests/services/tours.json
@@@ -79,6 +79,6 @@
"what": "A hundred cities from Wikivoyage and OpenStreetMap with cited places and walking routes, live IRL streams and recordings from OpenVibe.Live, stays from OpenVibe.Rent, and trips you plan and share. Flights link out, no affiliate.",
"legalProfile": "ugc",
"position": 50,
-- "neighbourhood": "streams"
++ "neighbourhood": "watch"
}
}
ddiff --git a/manifests/services/vip.json b/manifests/services/vip.json
iindex a1e7c41b..e5c345b6 100644
---- a/manifests/services/vip.json
++++ b/manifests/services/vip.json
@@@ -80,7 +80,7 @@
"answer": "A change publishes a new version. Members keep the version they joined while their membership lasts, and every version stays public in the plan’s terms history."
}
],
-- "neighbourhood": "people"
++ "neighbourhood": "talk"
},
"capabilities": [
"vip.plan.create",
ddiff --git a/manifests/services/vision.json b/manifests/services/vision.json
iindex fa6ebf19..33542afe 100644
---- a/manifests/services/vision.json
++++ b/manifests/services/vision.json
@@@ -112,6 +112,6 @@
"what": "Ask a picture a question, read its text with a local engine, compare models side by side with cost and latency, or point the UI check at a page to find overflow, cut-off text, low contrast, overlap and layering faults.",
"legalProfile": "ugc",
"position": 44,
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
}
}
ddiff --git a/manifests/services/wiki.json b/manifests/services/wiki.json
iindex f023bf2d..fd98619c 100644
---- a/manifests/services/wiki.json
++++ b/manifests/services/wiki.json
@@@ -39,7 +39,7 @@
"answer": "The page was written with AI assistance. It stays readable with that label, and out of search engines and network search until a person reviews it."
}
],
-- "neighbourhood": "answers"
++ "neighbourhood": "read"
},
"capabilities": [
"wiki.space.create",
ddiff --git a/package-lock.json b/package-lock.json
iindex aa345db8..47a66862 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.399.0",
++ "version": "0.400.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.399.0",
++ "version": "0.400.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex cc5db401..9ccbf539 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.399.0",
++ "version": "0.400.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",
ddiff --git a/test/run.js b/test/run.js
iindex 5d6144bf..0b33d674 100644
---- a/test/run.js
++++ b/test/run.js
@@@ -1053,6 +1053,7 @@ sub(path.join(__dirname, 'docs-currency.test.js'));
// ── Generated output and compatibility gate ──────────────────────────────
sub(path.join(__dirname, 'platform-fabric.test.js'));
sub(path.join(__dirname, 'platform-run.test.js'));
++sub(path.join(__dirname, 'site-neighbourhoods.test.js'));
sub(path.join(ROOT, 'scripts/generate.js'), '--check');
sub(path.join(ROOT, 'scripts/compat.js'));
sub(path.join(__dirname, 'changelog-history.test.js'));
ddiff --git a/test/site-neighbourhoods.test.js b/test/site-neighbourhoods.test.js
nnew file mode 100644
iindex 00000000..2cd1e6dd
---- /dev/null
++++ b/test/site-neighbourhoods.test.js
@@@ -0,0 +1,31 @@
++'use strict';
++// The owner's regrouping (2026-11-10, plan ask 274): every site manifest names one of the eight current groups, and
++// no group carries more than seven tiles. The three merged sections keep the group they appear in, but have no tile:
++// Media is Video's API (watch), Homes is Rent's for-sale search (shop, no manifest of its own) and Bench is Report's
++// AI section (read); Play is Games' game-services API (play). Network's frame/sites.js GROUPS is the list itself.
++const assert = require('assert');
++const fs = require('fs');
++const path = require('path');
++
++const GROUPS = ['watch', 'talk', 'play', 'read', 'shop', 'tools', 'make', 'build'];
++const MERGED = new Set(['media', 'bench', 'play']);
++const DIR = path.join(__dirname, '..', 'manifests/services');
++const sites = fs.readdirSync(DIR).filter((f) => f.endsWith('.json')).map((f) => {
++ const m = JSON.parse(fs.readFileSync(path.join(DIR, f), 'utf8'));
++ return m.site ? { id: f.replace(/\.json$/, ''), site: m.site } : null;
++}).filter(Boolean);
++
++assert.ok(sites.length >= 50, `every site manifest has a site block (${sites.length})`);
++const ids = new Set();
++for (const { id, site } of sites) {
++ assert.ok(!ids.has(site.icon), `${id}: icon ${site.icon} is a unique site id`);
++ ids.add(site.icon);
++ assert.ok(GROUPS.includes(site.neighbourhood), `${id}: neighbourhood ${site.neighbourhood} is one of the eight current groups`);
++}
++for (const g of GROUPS) {
++ const tiles = sites.filter(({ id, site }) => site.neighbourhood === g && !MERGED.has(id));
++ assert.ok(tiles.length > 0, `${g}: at least one tile`);
++ assert.ok(tiles.length <= 7, `${g}: ${tiles.length} tiles, at most seven (${tiles.map((x) => x.id).join(', ')})`);
++}
++for (const id of MERGED) assert.ok(sites.some((s) => s.id === id), `${id}: the merged entry still names its group`);
++console.log(`site neighbourhoods: ${sites.length} manifests in ${GROUPS.length} groups, merged sections listed, at most seven tiles a group`);