openvibers/openvibe.contracts Commits

Add frame.menu-card@1 and frame.menu-cards@1 (0.317.0) (#324)

OP OpenVibers committed 6 days ago · af464782e0 · 65 files, +856 −90

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex ff9b4170..1235ea00 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,11 @@
# Changelog
++## 0.317.0 — 2026-11-07
++
++- Add `frame.menu-card@1`: one card a site publishes for the network's Frame menu (the menu's network cards). A card has a stable id and site, a title of at most 60 characters, a kind (`rail`, `rows` or `chips`), up to six items with a title of at most 80, an optional meta line of at most 120 and an https URL, an optional `more` link with a label of at most 24, the time it was built and its ttl. A URL must be https on the publishing site's own origin or an `openvibe.*` host; the text is plain words and Network strips markup and drops unknown fields.
++- Add `frame.menu-cards@1`: the public file each open site serves at `/.well-known/openvibe-menu.json` — an array of at most three cards from that site. An empty array is valid (the site has no card right now); Live serves its rail with empty items when nobody is live, and Network then skips it.
++- Valid and invalid fixtures cover a live rail with and without items, a Games rows card, a three-card file, an empty file, a title over 60, seven items, an unknown kind, an `http` URL, an unknown field, a ttl under 30, four cards and a card with a bad timestamp.
++
## 0.316.0 — 2026-11-07
- Add `agent.timeline-entry@1`: one entry of the agent's timeline (design 2026-11-07 §2) — one step of the agent's work, in one mode, for one person. It carries the mode, the product, the step's own id, a plain title, when it started and ended, its status (running, waiting, needs_you, done, failed, stopped), the placement (where it ran and why), the cost, a link to the step's page, the one-line reason when it failed, the transition sentence when the mode changed, and the audience (private is Only me, the default). It never carries a prompt, a diff or a page.
ddiff --git a/README.md b/README.md
iindex da9d783f..ddff0c25 100644
---- a/README.md
++++ b/README.md
@@@ -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.295.0: 1017 schemas in `contracts/catalog.json`, 60 service manifests, 452 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.317.0: 1061 schemas in `contracts/catalog.json`, 60 service manifests, 479 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).
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex bf910e84..ef344fbd 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -9771,6 +9771,24 @@
"visibility": "first-party",
"compatibility": "backward",
"status": "active"
++ },
++ {
++ "id": "frame.menu-card",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "frame/menu-card.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "frame.menu-cards",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "frame/menu-cards.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
}
]
}
ddiff --git a/contracts/frame/menu-card.v1.json b/contracts/frame/menu-card.v1.json
nnew file mode 100644
iindex 00000000..0e51eb51
---- /dev/null
++++ b/contracts/frame/menu-card.v1.json
@@@ -0,0 +1,92 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/menu-card.v1.json",
++ "title": "FrameMenuCard",
++ "description": "frame.menu-card@1: one card a site publishes for the network's Frame menu. Each open site serves an array of at most three cards at /.well-known/openvibe-menu.json (frame.menu-cards@1); Network fetches that public file every five minutes, validates every card here, strips markup from the text and ranks the cards in GET /api/frame. A card is one kind of menu block: a rail (the live rail), rows (a ranked list) or chips (a short row of words). Every item links to https on the site's own origin or an openvibe.* host; Network refuses another origin. The text is plain words: markup is stripped, unknown fields are dropped and a file that fails this schema leaves the site's last good card in place for 30 minutes.",
++ "type": "object",
++ "required": ["id", "site", "title", "kind", "items", "updated_at", "ttl_s"],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,39}$",
++ "description": "The card's stable id in its site (live-now, new-worlds, trending). Two cards of one site never share it."
++ },
++ "site": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,39}$",
++ "description": "The Frame site id that publishes the card (live, games, media-hub). Network checks it against the host the file came from."
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 60,
++ "description": "The card's heading, in the owner's words."
++ },
++ "kind": {
++ "enum": ["rail", "rows", "chips"],
++ "description": "The block the Frame draws: a rail of live channels, a ranked list of rows, or a short row of chips."
++ },
++ "items": {
++ "type": "array",
++ "maxItems": 6,
++ "description": "The card's entries, in the site's own order. Empty means the site has a card but nothing to show (nobody is live); Network then skips it.",
++ "items": {
++ "type": "object",
++ "required": ["title", "url"],
++ "additionalProperties": false,
++ "properties": {
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80,
++ "description": "The entry's name, plain words."
++ },
++ "meta": {
++ "type": "string",
++ "maxLength": 120,
++ "description": "One short line under the name: \"12 watching\", \"7,412 views this week\", \"3 players\"."
++ },
++ "url": {
++ "type": "string",
++ "format": "uri",
++ "maxLength": 400,
++ "pattern": "^https://",
++ "description": "Where the entry opens: https on the publishing site's own origin or an openvibe.* host."
++ }
++ }
++ }
++ },
++ "more": {
++ "type": "object",
++ "required": ["label", "url"],
++ "additionalProperties": false,
++ "properties": {
++ "label": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 24,
++ "description": "The link's words (\"See all\", \"More worlds\")."
++ },
++ "url": {
++ "type": "string",
++ "format": "uri",
++ "maxLength": 400,
++ "pattern": "^https://",
++ "description": "https on the publishing site's own origin or an openvibe.* host."
++ }
++ }
++ },
++ "updated_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the site last built the card."
++ },
++ "ttl_s": {
++ "type": "integer",
++ "minimum": 30,
++ "maximum": 86400,
++ "description": "How long the site considers the card fresh, in seconds. Live uses 30; Network itself refetches every five minutes."
++ }
++ }
++}
ddiff --git a/contracts/frame/menu-cards.v1.json b/contracts/frame/menu-cards.v1.json
nnew file mode 100644
iindex 00000000..24e6012b
---- /dev/null
++++ b/contracts/frame/menu-cards.v1.json
@@@ -0,0 +1,11 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/menu-cards.v1.json",
++ "title": "FrameMenuCards",
++ "description": "frame.menu-cards@1: the public file a site serves at /.well-known/openvibe-menu.json — an array of at most three frame.menu-card@1 cards from one site. Network fetches it every five minutes with a five-second timeout and a 64 KB cap, drops unknown fields and markup, and keeps the site's last good card for 30 minutes if the file fails. An empty array is valid and means the site publishes no card right now.",
++ "type": "array",
++ "maxItems": 3,
++ "items": {
++ "$ref": "menu-card.v1.json"
++ }
++}
ddiff --git a/fixtures/frame.menu-card/invalid/bad-kind.json b/fixtures/frame.menu-card/invalid/bad-kind.json
nnew file mode 100644
iindex 00000000..f0af3708
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/bad-kind.json
@@@ -0,0 +1,9 @@
++{
++ "id": "trending",
++ "site": "media-hub",
++ "title": "Trending",
++ "kind": "grid",
++ "items": [],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 300
++}
ddiff --git a/fixtures/frame.menu-card/invalid/http-url.json b/fixtures/frame.menu-card/invalid/http-url.json
nnew file mode 100644
iindex 00000000..f914cac4
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/http-url.json
@@@ -0,0 +1,11 @@
++{
++ "id": "trending",
++ "site": "media-hub",
++ "title": "Trending",
++ "kind": "rows",
++ "items": [
++ { "title": "A clip", "meta": "2,100 views", "url": "http://openvibe.video/watch/abc" }
++ ],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 300
++}
ddiff --git a/fixtures/frame.menu-card/invalid/seven-items.json b/fixtures/frame.menu-card/invalid/seven-items.json
nnew file mode 100644
iindex 00000000..353d2ea4
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/seven-items.json
@@@ -0,0 +1,17 @@
++{
++ "id": "trending",
++ "site": "media-hub",
++ "title": "Trending",
++ "kind": "rows",
++ "items": [
++ { "title": "One", "url": "https://openvibe.video/one" },
++ { "title": "Two", "url": "https://openvibe.video/two" },
++ { "title": "Three", "url": "https://openvibe.video/three" },
++ { "title": "Four", "url": "https://openvibe.video/four" },
++ { "title": "Five", "url": "https://openvibe.video/five" },
++ { "title": "Six", "url": "https://openvibe.video/six" },
++ { "title": "Seven", "url": "https://openvibe.video/seven" }
++ ],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 300
++}
ddiff --git a/fixtures/frame.menu-card/invalid/title-too-long.json b/fixtures/frame.menu-card/invalid/title-too-long.json
nnew file mode 100644
iindex 00000000..969f11c5
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/title-too-long.json
@@@ -0,0 +1,9 @@
++{
++ "id": "live-now",
++ "site": "live",
++ "title": "Live now, and everything happening across the whole network tonight",
++ "kind": "rail",
++ "items": [],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 30
++}
ddiff --git a/fixtures/frame.menu-card/invalid/ttl-too-short.json b/fixtures/frame.menu-card/invalid/ttl-too-short.json
nnew file mode 100644
iindex 00000000..664f0e77
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/ttl-too-short.json
@@@ -0,0 +1,9 @@
++{
++ "id": "live-now",
++ "site": "live",
++ "title": "Live now",
++ "kind": "rail",
++ "items": [],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 5
++}
ddiff --git a/fixtures/frame.menu-card/invalid/unknown-field.json b/fixtures/frame.menu-card/invalid/unknown-field.json
nnew file mode 100644
iindex 00000000..fbed8138
---- /dev/null
++++ b/fixtures/frame.menu-card/invalid/unknown-field.json
@@@ -0,0 +1,10 @@
++{
++ "id": "trending",
++ "site": "media-hub",
++ "title": "Trending",
++ "kind": "rows",
++ "items": [],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 300,
++ "html": "<script>alert(1)</script>"
++}
ddiff --git a/fixtures/frame.menu-card/valid/empty-rail.json b/fixtures/frame.menu-card/valid/empty-rail.json
nnew file mode 100644
iindex 00000000..c009bc7e
---- /dev/null
++++ b/fixtures/frame.menu-card/valid/empty-rail.json
@@@ -0,0 +1,9 @@
++{
++ "id": "live-now",
++ "site": "live",
++ "title": "Live now",
++ "kind": "rail",
++ "items": [],
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 30
++}
ddiff --git a/fixtures/frame.menu-card/valid/live-now.json b/fixtures/frame.menu-card/valid/live-now.json
nnew file mode 100644
iindex 00000000..9a06e819
---- /dev/null
++++ b/fixtures/frame.menu-card/valid/live-now.json
@@@ -0,0 +1,13 @@
++{
++ "id": "live-now",
++ "site": "live",
++ "title": "Live now",
++ "kind": "rail",
++ "items": [
++ { "title": "Nova", "meta": "12 watching", "url": "https://openvibe.live/@nova" },
++ { "title": "Kitchen radio", "meta": "3 watching", "url": "https://openvibe.live/@kitchen" }
++ ],
++ "more": { "label": "See all", "url": "https://openvibe.live/live" },
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 30
++}
ddiff --git a/fixtures/frame.menu-card/valid/new-worlds.json b/fixtures/frame.menu-card/valid/new-worlds.json
nnew file mode 100644
iindex 00000000..4510fb1d
---- /dev/null
++++ b/fixtures/frame.menu-card/valid/new-worlds.json
@@@ -0,0 +1,12 @@
++{
++ "id": "new-worlds",
++ "site": "games",
++ "title": "New worlds",
++ "kind": "rows",
++ "items": [
++ { "title": "Harbour Town", "meta": "Built by 4 people", "url": "https://openvibe.games/w/harbour-town" },
++ { "title": "Night Market", "meta": "18 visitors this week", "url": "https://openvibe.games/w/night-market" }
++ ],
++ "updated_at": "2026-11-07T07:58:00Z",
++ "ttl_s": 300
++}
ddiff --git a/fixtures/frame.menu-cards/invalid/bad-card.json b/fixtures/frame.menu-cards/invalid/bad-card.json
nnew file mode 100644
iindex 00000000..8a99508b
---- /dev/null
++++ b/fixtures/frame.menu-cards/invalid/bad-card.json
@@@ -0,0 +1,3 @@
++[
++ { "id": "live-now", "site": "live", "title": "Live now", "kind": "rail", "items": [], "updated_at": "yesterday", "ttl_s": 30 }
++]
ddiff --git a/fixtures/frame.menu-cards/invalid/four-cards.json b/fixtures/frame.menu-cards/invalid/four-cards.json
nnew file mode 100644
iindex 00000000..03186270
---- /dev/null
++++ b/fixtures/frame.menu-cards/invalid/four-cards.json
@@@ -0,0 +1,6 @@
++[
++ { "id": "one", "site": "live", "title": "One", "kind": "rail", "items": [], "updated_at": "2026-11-07T08:00:00Z", "ttl_s": 30 },
++ { "id": "two", "site": "live", "title": "Two", "kind": "rows", "items": [], "updated_at": "2026-11-07T08:00:00Z", "ttl_s": 30 },
++ { "id": "three", "site": "live", "title": "Three", "kind": "chips", "items": [], "updated_at": "2026-11-07T08:00:00Z", "ttl_s": 30 },
++ { "id": "four", "site": "live", "title": "Four", "kind": "rows", "items": [], "updated_at": "2026-11-07T08:00:00Z", "ttl_s": 30 }
++]
ddiff --git a/fixtures/frame.menu-cards/valid/empty.json b/fixtures/frame.menu-cards/valid/empty.json
nnew file mode 100644
iindex 00000000..fe51488c
---- /dev/null
++++ b/fixtures/frame.menu-cards/valid/empty.json
@@@ -0,0 +1 @@
++[]
ddiff --git a/fixtures/frame.menu-cards/valid/three.json b/fixtures/frame.menu-cards/valid/three.json
nnew file mode 100644
iindex 00000000..0ae7b724
---- /dev/null
++++ b/fixtures/frame.menu-cards/valid/three.json
@@@ -0,0 +1,36 @@
++[
++ {
++ "id": "live-now",
++ "site": "live",
++ "title": "Live now",
++ "kind": "rail",
++ "items": [
++ { "title": "Nova", "meta": "12 watching", "url": "https://openvibe.live/@nova" }
++ ],
++ "more": { "label": "See all", "url": "https://openvibe.live/live" },
++ "updated_at": "2026-11-07T08:00:00Z",
++ "ttl_s": 30
++ },
++ {
++ "id": "new-worlds",
++ "site": "games",
++ "title": "New worlds",
++ "kind": "rows",
++ "items": [
++ { "title": "Harbour Town", "meta": "Built by 4 people", "url": "https://openvibe.games/w/harbour-town" }
++ ],
++ "updated_at": "2026-11-07T07:58:00Z",
++ "ttl_s": 300
++ },
++ {
++ "id": "trending",
++ "site": "media-hub",
++ "title": "Trending",
++ "kind": "rows",
++ "items": [
++ { "title": "Sunday market", "meta": "2,100 views this week", "url": "https://openvibe.video/watch/abc" }
++ ],
++ "updated_at": "2026-11-07T07:55:00Z",
++ "ttl_s": 300
++ }
++]
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 3864a04a..cb1f0d83 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -107683,6 +107683,137 @@
}
}
}
++ },
++ "frame.menu-card": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/menu-card.v1.json",
++ "title": "FrameMenuCard",
++ "description": "frame.menu-card@1: one card a site publishes for the network's Frame menu. Each open site serves an array of at most three cards at /.well-known/openvibe-menu.json (frame.menu-cards@1); Network fetches that public file every five minutes, validates every card here, strips markup from the text and ranks the cards in GET /api/frame. A card is one kind of menu block: a rail (the live rail), rows (a ranked list) or chips (a short row of words). Every item links to https on the site's own origin or an openvibe.* host; Network refuses another origin. The text is plain words: markup is stripped, unknown fields are dropped and a file that fails this schema leaves the site's last good card in place for 30 minutes.",
++ "type": "object",
++ "required": [
++ "id",
++ "site",
++ "title",
++ "kind",
++ "items",
++ "updated_at",
++ "ttl_s"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,39}$",
++ "description": "The card's stable id in its site (live-now, new-worlds, trending). Two cards of one site never share it."
++ },
++ "site": {
++ "type": "string",
++ "pattern": "^[a-z][a-z0-9-]{1,39}$",
++ "description": "The Frame site id that publishes the card (live, games, media-hub). Network checks it against the host the file came from."
++ },
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 60,
++ "description": "The card's heading, in the owner's words."
++ },
++ "kind": {
++ "enum": [
++ "rail",
++ "rows",
++ "chips"
++ ],
++ "description": "The block the Frame draws: a rail of live channels, a ranked list of rows, or a short row of chips."
++ },
++ "items": {
++ "type": "array",
++ "maxItems": 6,
++ "description": "The card's entries, in the site's own order. Empty means the site has a card but nothing to show (nobody is live); Network then skips it.",
++ "items": {
++ "type": "object",
++ "required": [
++ "title",
++ "url"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "title": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 80,
++ "description": "The entry's name, plain words."
++ },
++ "meta": {
++ "type": "string",
++ "maxLength": 120,
++ "description": "One short line under the name: \"12 watching\", \"7,412 views this week\", \"3 players\"."
++ },
++ "url": {
++ "type": "string",
++ "format": "uri",
++ "maxLength": 400,
++ "pattern": "^https://",
++ "description": "Where the entry opens: https on the publishing site's own origin or an openvibe.* host."
++ }
++ }
++ }
++ },
++ "more": {
++ "type": "object",
++ "required": [
++ "label",
++ "url"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "label": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 24,
++ "description": "The link's words (\"See all\", \"More worlds\")."
++ },
++ "url": {
++ "type": "string",
++ "format": "uri",
++ "maxLength": 400,
++ "pattern": "^https://",
++ "description": "https on the publishing site's own origin or an openvibe.* host."
++ }
++ }
++ },
++ "updated_at": {
++ "type": "string",
++ "format": "date-time",
++ "description": "When the site last built the card."
++ },
++ "ttl_s": {
++ "type": "integer",
++ "minimum": 30,
++ "maximum": 86400,
++ "description": "How long the site considers the card fresh, in seconds. Live uses 30; Network itself refetches every five minutes."
++ }
++ }
++ }
++ },
++ "frame.menu-cards": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/menu-cards.v1.json",
++ "title": "FrameMenuCards",
++ "description": "frame.menu-cards@1: the public file a site serves at /.well-known/openvibe-menu.json — an array of at most three frame.menu-card@1 cards from one site. Network fetches it every five minutes with a five-second timeout and a 64 KB cap, drops unknown fields and markup, and keeps the site's last good card for 30 minutes if the file fails. An empty array is valid and means the site publishes no card right now.",
++ "type": "array",
++ "maxItems": 3,
++ "items": {
++ "$ref": "menu-card.v1.json"
++ }
++ }
}
}
}
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 84584f9f..72c079ca 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.316.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 151b92dd..84b63f77 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.316.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 cf60e71b..4101cd7a 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.316.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 c4a514df..e83dc363 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.316.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 9c3f1d15..e65ad445 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.316.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 cab03e13..71b8006c 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.316.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 5dfd639e..3849e9c0 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.316.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 1f2eb1be..06e6f0c5 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.316.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 38b5c4aa..f4aaefa7 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.316.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 89b4dd16..9163b186 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.316.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 326a106c..e0b72c1a 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.316.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 58d0d2a8..93a04730 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.316.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 d32d7d18..cf61f0d7 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.316.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 2727ec1d..d4cfc3b3 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.316.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 2e1a164b..c2b94e0d 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.316.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 c8a0addc..608fd4e7 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.316.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 a15f405f..6825e323 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.316.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 7242730b..ee547fcc 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.316.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 5df57f23..de6c175c 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.316.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 bc68ce0a..58843472 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.316.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 1a95dd83..a5707a5e 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.316.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 bcf8b048..7082a88f 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.316.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 4f42a579..53381685 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.316.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 b37c9450..24360587 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.316.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 52a7e515..70008281 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.316.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 b515ee97..7a96c770 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.316.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 312b7bcf..e2549c89 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.316.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 dd0301be..80e6b53d 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.316.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 376295ef..bd10e7e5 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.316.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 d50ee8cc..79a0dc0d 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.316.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 0302ed9e..51f6b60a 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.316.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 cffc4f94..ea0f795f 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.316.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 94114f0c..e3fb240e 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.316.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 5501efbe..e93df5d3 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.316.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 2bae1f02..8a8b2ceb 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.316.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 49226982..65cb0d4f 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.316.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 766affa1..1d4379a6 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.316.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 b6600941..8cc382ae 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.316.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 6c9a9eb2..3df632dd 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.316.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 6eeab524..c90f2cc2 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.316.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 84ef66d1..d1e51c45 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.316.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 5548c19a..4d52e869 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.316.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 a2c298a9..fc5aac27 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.316.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 60213355..817b9df8 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.316.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.316.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.317.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.317.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 baaaf461..e5ad088d 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -298330,3 +298330,366 @@ export interface AgentTimelineListResult {
[k: string]: number | undefined;
};
}
++
++/** [email protected] (owner: network) */
++/**
++ * frame.menu-card@1: one card a site publishes for the network's Frame menu. Each open site serves an array of at most three cards at /.well-known/openvibe-menu.json (frame.menu-cards@1); Network fetches that public file every five minutes, validates every card here, strips markup from the text and ranks the cards in GET /api/frame. A card is one kind of menu block: a rail (the live rail), rows (a ranked list) or chips (a short row of words). Every item links to https on the site's own origin or an openvibe.* host; Network refuses another origin. The text is plain words: markup is stripped, unknown fields are dropped and a file that fails this schema leaves the site's last good card in place for 30 minutes.
++ */
++export interface FrameMenuCard {
++ /**
++ * The card's stable id in its site (live-now, new-worlds, trending). Two cards of one site never share it.
++ */
++ id: string;
++ /**
++ * The Frame site id that publishes the card (live, games, media-hub). Network checks it against the host the file came from.
++ */
++ site: string;
++ /**
++ * The card's heading, in the owner's words.
++ */
++ title: string;
++ /**
++ * The block the Frame draws: a rail of live channels, a ranked list of rows, or a short row of chips.
++ */
++ kind: "rail" | "rows" | "chips";
++ /**
++ * The card's entries, in the site's own order. Empty means the site has a card but nothing to show (nobody is live); Network then skips it.
++ *
++ * @maxItems 6
++ */
++ items:
++ | []
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ]
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ]
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ]
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ]
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ]
++ | [
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ },
++ {
++ /**
++ * The entry's name, plain words.
++ */
++ title: string;
++ /**
++ * One short line under the name: "12 watching", "7,412 views this week", "3 players".
++ */
++ meta?: string;
++ /**
++ * Where the entry opens: https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ }
++ ];
++ more?: {
++ /**
++ * The link's words ("See all", "More worlds").
++ */
++ label: string;
++ /**
++ * https on the publishing site's own origin or an openvibe.* host.
++ */
++ url: string;
++ };
++ /**
++ * When the site last built the card.
++ */
++ updated_at: string;
++ /**
++ * How long the site considers the card fresh, in seconds. Live uses 30; Network itself refetches every five minutes.
++ */
++ ttl_s: number;
++}
++
++/** [email protected] (owner: network) */
++/**
++ * frame.menu-cards@1: the public file a site serves at /.well-known/openvibe-menu.json — an array of at most three frame.menu-card@1 cards from one site. Network fetches it every five minutes with a five-second timeout and a 64 KB cap, drops unknown fields and markup, and keeps the site's last good card for 30 minutes if the file fails. An empty array is valid and means the site publishes no card right now.
++ *
++ * @maxItems 3
++ */
++export type FrameMenuCards =
++ [] | [FrameMenuCard] | [FrameMenuCard, FrameMenuCard] | [FrameMenuCard, FrameMenuCard, FrameMenuCard];
ddiff --git a/package.json b/package.json
iindex 5189f3cc..7728f167 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.316.0",
++ "version": "0.317.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",