openvibers/openvibe.contracts Commits

openvibe-contracts 0.413.0: frame.commands@1 and frame.mentions@1 (R3) (#461)

OP OpenVibers committed 1 days ago · ec1d87aa8b · 63 files, +1596 −97

* openvibe-contracts 0.412.0: frame.commands@1 and frame.mentions@1 (R3)

frame.commands@1 is what GET /api/frame/commands?site=&q= answers: the scan rows a composer's / menu offers on
one site, the site's own from its Frame manifest, the network's /ask, /do, /remind and /timer, and a signed-in
person's saved snippets, each with its hint, insert, kind and whether it needs a sign-in.

frame.mentions@1 is what GET /api/frame/mentions?q=&site= answers: at most eight rows for the @ menu, public
people first (handle, display name and an OpenVibe.Media avatar only), then the person's own agents, open
OpenVibe sites and Live's public channels. Signed out it is public people only; no email or private account
field is part of the shape.

Both have valid and invalid fixtures; the generated bundle, OpenAPI stamps and TypeScript are rebuilt. Not
released here: no tag, for the main session's Contracts release.

* openvibe-contracts 0.413.0: frame.commands@1 and frame.mentions@1 (main merged in; 0.412.0 went to the agents run schemas)

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 3e8be575..0641acd1 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,19 @@
# Changelog
++## 0.413.0 — 2026-11-12
++
++The composer's Reach (Post · Ask · Do, stage R3; Network R3): what its `/` and `@` menus offer.
++
++- Add `frame.commands@1`: `GET /api/frame/commands?site=<host>&q=` on OpenVibe.Network, the command rows a composer
++ offers on one site — the network's `/ask`, `/do`, `/remind` and `/timer`, the site's own from its Frame manifest,
++ and a signed-in person's saved composer snippets — each with its hint, the text a pick inserts, its kind and whether
++ it needs a signed-in person.
++- Add `frame.mentions@1`: `GET /api/frame/mentions?q=&site=` on OpenVibe.Network, at most eight rows for the `@` menu:
++ public people (with a handle, display name and an OpenVibe.Media avatar only), the person's own agents from the agent
++ directory, open OpenVibe sites and Live's public channels. People first; signed out, public people only; no email or
++ private account field.
++- Fixtures for both (valid and invalid) and the generated JSON Schema and TypeScript.
++
## 0.412.0 — 2026-11-12
One agent system, stage 2: one run shape for Actor, Codes and Run, and the step event that follows it.
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex ef022c35..6abdc3c0 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -11711,6 +11711,24 @@
"compatibility": "backward",
"status": "active"
},
++ {
++ "id": "frame.commands",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "frame/commands.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "frame.mentions",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "frame/mentions.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
{
"id": "agents.run",
"version": "1.0.0",
ddiff --git a/contracts/frame/commands.v1.json b/contracts/frame/commands.v1.json
nnew file mode 100644
iindex 00000000..7c04f95b
---- /dev/null
++++ b/contracts/frame/commands.v1.json
@@@ -0,0 +1,96 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/commands.v1.json",
++ "title": "FrameCommands",
++ "description": "frame.commands@1: what a composer's `/` menu offers on one site. GET /api/frame/commands?site=<host>&q= answers this. Every site offers the network's /ask (Vibe answers with sources), /do (Actor plans and runs it), /remind (Today remembers it) and /timer (the Dock's focus timer); a site adds its own from its Frame manifest's site.commands, and a signed-in person's saved composer snippets are theirs. The site's own rows come first because they fit that box, then the network's, then the person's own; a name appears once. q filters by name prefix or hint. `name` is the word after the slash (no slash), `insert` is the text a pick puts in the box, `kind` is where the row came from, and `needs_sign_in` says the command acts for a person, so a signed-out box may offer it and then sign in. A signed-out answer is public, max-age=60, held a minute; a signed-in one is private, no-store.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "site",
++ "commands"
++ ],
++ "properties": {
++ "site": {
++ "anyOf": [
++ { "type": "null" },
++ {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "name",
++ "host"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "maxLength": 40,
++ "pattern": "^[a-z0-9][a-z0-9-]*$",
++ "description": "The site's Frame id (the icon name), e.g. live."
++ },
++ "name": {
++ "type": "string",
++ "maxLength": 80
++ },
++ "host": {
++ "type": "string",
++ "maxLength": 255,
++ "pattern": "^[a-z0-9.-]+$"
++ }
++ }
++ }
++ ],
++ "description": "The site the composer asked about; null when the host is not an OpenVibe site (the network's four still answer)."
++ },
++ "commands": {
++ "type": "array",
++ "maxItems": 50,
++ "items": {
++ "$ref": "#/$defs/command"
++ }
++ }
++ },
++ "$defs": {
++ "command": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "name",
++ "hint",
++ "insert",
++ "kind",
++ "needs_sign_in"
++ ],
++ "properties": {
++ "name": {
++ "type": "string",
++ "maxLength": 32,
++ "pattern": "^[a-z0-9][a-z0-9_-]{0,31}$",
++ "description": "The word after the slash: ask, do, remind, timer, or a site's or person's own."
++ },
++ "hint": {
++ "type": "string",
++ "maxLength": 120,
++ "description": "One line the composer's popover shows beside the command."
++ },
++ "insert": {
++ "type": "string",
++ "maxLength": 4000,
++ "description": "The text a pick puts in the box: the command, a space, ready for its arguments."
++ },
++ "kind": {
++ "enum": [
++ "network",
++ "site",
++ "mine"
++ ],
++ "description": "The network's four, the site's own from its manifest, or the person's saved composer snippet."
++ },
++ "needs_sign_in": {
++ "type": "boolean",
++ "description": "The command acts for a person; a signed-out composer may offer it and then sign in."
++ }
++ }
++ }
++ }
++}
ddiff --git a/contracts/frame/mentions.v1.json b/contracts/frame/mentions.v1.json
nnew file mode 100644
iindex 00000000..6d88aa03
---- /dev/null
++++ b/contracts/frame/mentions.v1.json
@@@ -0,0 +1,78 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/mentions.v1.json",
++ "title": "FrameMentions",
++ "description": "frame.mentions@1: what a composer's `@` menu shows. GET /api/frame/mentions?q=&site= answers this. People are Network accounts (public username, display name, canonical subject id and, only when the picture is an OpenVibe.Media one, its avatar); agents are the person's own rows from Network's agent directory; sites are the open OpenVibe places from the Frame; channels are Live's public channels. At most eight rows, people first, then the person's agents, then places; the site the box is on is not suggested back. Signed out answers public people only. A person row never carries an email, a numeric account id, a role or any other account field. `q` matches usernames, display names, agent names and place names. The read is rate-limited per actor (120 a minute in memory; HTTP 429 with Retry-After past it): signed in that is the person, signed out a hash of the address. A signed-out answer is public, max-age=60; a signed-in one is private, no-store.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "mentions"
++ ],
++ "properties": {
++ "mentions": {
++ "type": "array",
++ "maxItems": 8,
++ "items": {
++ "$ref": "#/$defs/mention"
++ }
++ }
++ },
++ "$defs": {
++ "mention": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "kind",
++ "id",
++ "label"
++ ],
++ "properties": {
++ "kind": {
++ "enum": [
++ "person",
++ "agent",
++ "site",
++ "channel"
++ ]
++ },
++ "id": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 64,
++ "description": "A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username."
++ },
++ "label": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120,
++ "description": "What the menu shows: a display name, an agent's name, an OpenVibe site or a channel."
++ },
++ "handle": {
++ "type": "string",
++ "maxLength": 40,
++ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,39}$",
++ "description": "The public @handle or site id, when the row has one."
++ },
++ "sub": {
++ "type": "string",
++ "maxLength": 80,
++ "description": "A short second line for an agent, e.g. actor · online."
++ },
++ "avatar": {
++ "type": "string",
++ "maxLength": 500,
++ "format": "uri",
++ "pattern": "^https://openvibe\\.media/",
++ "description": "A public OpenVibe.Media picture; never a Network-served, private or third-party URL."
++ },
++ "url": {
++ "type": "string",
++ "maxLength": 500,
++ "format": "uri",
++ "pattern": "^https://",
++ "description": "The public page the row opens."
++ }
++ }
++ }
++ }
++}
ddiff --git a/fixtures/frame.commands/invalid/leading-slash.json b/fixtures/frame.commands/invalid/leading-slash.json
nnew file mode 100644
iindex 00000000..de237ffa
---- /dev/null
++++ b/fixtures/frame.commands/invalid/leading-slash.json
@@@ -0,0 +1,6 @@
++{
++ "site": { "id": "live", "name": "Live", "host": "openvibe.live" },
++ "commands": [
++ { "name": "/ask", "hint": "Ask Vibe", "insert": "/ask ", "kind": "network", "needs_sign_in": true }
++ ]
++}
ddiff --git a/fixtures/frame.commands/invalid/missing-kind.json b/fixtures/frame.commands/invalid/missing-kind.json
nnew file mode 100644
iindex 00000000..dda1b591
---- /dev/null
++++ b/fixtures/frame.commands/invalid/missing-kind.json
@@@ -0,0 +1,6 @@
++{
++ "site": null,
++ "commands": [
++ { "name": "ask", "hint": "Ask Vibe", "insert": "/ask ", "needs_sign_in": true }
++ ]
++}
ddiff --git a/fixtures/frame.commands/valid/live.json b/fixtures/frame.commands/valid/live.json
nnew file mode 100644
iindex 00000000..e35fbcd2
---- /dev/null
++++ b/fixtures/frame.commands/valid/live.json
@@@ -0,0 +1,11 @@
++{
++ "site": { "id": "live", "name": "Live", "host": "openvibe.live" },
++ "commands": [
++ { "name": "clip", "hint": "Make a clip of the stream", "insert": "/clip ", "kind": "site", "needs_sign_in": true },
++ { "name": "ask", "hint": "Ask Vibe: an answer with its sources", "insert": "/ask ", "kind": "network", "needs_sign_in": true },
++ { "name": "do", "hint": "Hand it to your agent: Actor plans and runs it", "insert": "/do ", "kind": "network", "needs_sign_in": true },
++ { "name": "remind", "hint": "Have Today remind you", "insert": "/remind ", "kind": "network", "needs_sign_in": true },
++ { "name": "timer", "hint": "Start a focus timer in the Dock", "insert": "/timer ", "kind": "network", "needs_sign_in": true },
++ { "name": "sig", "hint": "Signature", "insert": "— Sam", "kind": "mine", "needs_sign_in": false }
++ ]
++}
ddiff --git a/fixtures/frame.commands/valid/no-site.json b/fixtures/frame.commands/valid/no-site.json
nnew file mode 100644
iindex 00000000..20502f6e
---- /dev/null
++++ b/fixtures/frame.commands/valid/no-site.json
@@@ -0,0 +1,7 @@
++{
++ "site": null,
++ "commands": [
++ { "name": "ask", "hint": "Ask Vibe: an answer with its sources", "insert": "/ask ", "kind": "network", "needs_sign_in": true },
++ { "name": "timer", "hint": "Start a focus timer in the Dock", "insert": "/timer ", "kind": "network", "needs_sign_in": true }
++ ]
++}
ddiff --git a/fixtures/frame.mentions/invalid/network-avatar.json b/fixtures/frame.mentions/invalid/network-avatar.json
nnew file mode 100644
iindex 00000000..7317b1e1
---- /dev/null
++++ b/fixtures/frame.mentions/invalid/network-avatar.json
@@@ -0,0 +1,6 @@
++{
++ "mentions": [
++ { "kind": "person", "id": "usr_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Ana Followed", "handle": "ana",
++ "avatar": "https://openvibe.network/avatar/ana?s=64", "url": "https://openvibe.network/@ana" }
++ ]
++}
ddiff --git a/fixtures/frame.mentions/invalid/nine-rows.json b/fixtures/frame.mentions/invalid/nine-rows.json
nnew file mode 100644
iindex 00000000..b0ccd948
---- /dev/null
++++ b/fixtures/frame.mentions/invalid/nine-rows.json
@@@ -0,0 +1,13 @@
++{
++ "mentions": [
++ { "kind": "site", "id": "live", "label": "Live", "handle": "live", "url": "https://openvibe.live/" },
++ { "kind": "site", "id": "tools", "label": "Tools", "handle": "tools", "url": "https://openvibe.tools/" },
++ { "kind": "site", "id": "games", "label": "Games", "handle": "games", "url": "https://openvibe.games/" },
++ { "kind": "site", "id": "chat", "label": "Chat", "handle": "chat", "url": "https://openvibe.chat/" },
++ { "kind": "site", "id": "network", "label": "Network", "handle": "network", "url": "https://openvibe.network/" },
++ { "kind": "site", "id": "wiki", "label": "Wiki", "handle": "wiki", "url": "https://openvibe.wiki/" },
++ { "kind": "site", "id": "blog", "label": "Blog", "handle": "blog", "url": "https://openvibe.blog/" },
++ { "kind": "site", "id": "news", "label": "News", "handle": "news", "url": "https://openvibe.news/" },
++ { "kind": "site", "id": "community", "label": "Community", "handle": "community", "url": "https://openvibe.community/" }
++ ]
++}
ddiff --git a/fixtures/frame.mentions/valid/four-kinds.json b/fixtures/frame.mentions/valid/four-kinds.json
nnew file mode 100644
iindex 00000000..6cbd29ca
---- /dev/null
++++ b/fixtures/frame.mentions/valid/four-kinds.json
@@@ -0,0 +1,9 @@
++{
++ "mentions": [
++ { "kind": "person", "id": "usr_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Ana Followed", "handle": "ana",
++ "avatar": "https://openvibe.media/p/ana/screenshot", "url": "https://openvibe.network/@ana" },
++ { "kind": "agent", "id": "agt_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Actor", "sub": "actor · online" },
++ { "kind": "site", "id": "live", "label": "Live", "handle": "live", "url": "https://openvibe.live/" },
++ { "kind": "channel", "id": "streamer", "label": "Streamer One", "handle": "streamer", "url": "https://openvibe.live/@streamer" }
++ ]
++}
ddiff --git a/fixtures/frame.mentions/valid/people-only.json b/fixtures/frame.mentions/valid/people-only.json
nnew file mode 100644
iindex 00000000..95b21ac4
---- /dev/null
++++ b/fixtures/frame.mentions/valid/people-only.json
@@@ -0,0 +1,6 @@
++{
++ "mentions": [
++ { "kind": "person", "id": "usr_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Ana Followed", "handle": "ana",
++ "url": "https://openvibe.network/@ana" }
++ ]
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 624aa5f6..b199badc 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -134770,6 +134770,192 @@
}
}
},
++ "frame.commands": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/commands.v1.json",
++ "title": "FrameCommands",
++ "description": "frame.commands@1: what a composer's `/` menu offers on one site. GET /api/frame/commands?site=<host>&q= answers this. Every site offers the network's /ask (Vibe answers with sources), /do (Actor plans and runs it), /remind (Today remembers it) and /timer (the Dock's focus timer); a site adds its own from its Frame manifest's site.commands, and a signed-in person's saved composer snippets are theirs. The site's own rows come first because they fit that box, then the network's, then the person's own; a name appears once. q filters by name prefix or hint. `name` is the word after the slash (no slash), `insert` is the text a pick puts in the box, `kind` is where the row came from, and `needs_sign_in` says the command acts for a person, so a signed-out box may offer it and then sign in. A signed-out answer is public, max-age=60, held a minute; a signed-in one is private, no-store.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "site",
++ "commands"
++ ],
++ "properties": {
++ "site": {
++ "anyOf": [
++ {
++ "type": "null"
++ },
++ {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "name",
++ "host"
++ ],
++ "properties": {
++ "id": {
++ "type": "string",
++ "maxLength": 40,
++ "pattern": "^[a-z0-9][a-z0-9-]*$",
++ "description": "The site's Frame id (the icon name), e.g. live."
++ },
++ "name": {
++ "type": "string",
++ "maxLength": 80
++ },
++ "host": {
++ "type": "string",
++ "maxLength": 255,
++ "pattern": "^[a-z0-9.-]+$"
++ }
++ }
++ }
++ ],
++ "description": "The site the composer asked about; null when the host is not an OpenVibe site (the network's four still answer)."
++ },
++ "commands": {
++ "type": "array",
++ "maxItems": 50,
++ "items": {
++ "$ref": "#/$defs/command"
++ }
++ }
++ },
++ "$defs": {
++ "command": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "name",
++ "hint",
++ "insert",
++ "kind",
++ "needs_sign_in"
++ ],
++ "properties": {
++ "name": {
++ "type": "string",
++ "maxLength": 32,
++ "pattern": "^[a-z0-9][a-z0-9_-]{0,31}$",
++ "description": "The word after the slash: ask, do, remind, timer, or a site's or person's own."
++ },
++ "hint": {
++ "type": "string",
++ "maxLength": 120,
++ "description": "One line the composer's popover shows beside the command."
++ },
++ "insert": {
++ "type": "string",
++ "maxLength": 4000,
++ "description": "The text a pick puts in the box: the command, a space, ready for its arguments."
++ },
++ "kind": {
++ "enum": [
++ "network",
++ "site",
++ "mine"
++ ],
++ "description": "The network's four, the site's own from its manifest, or the person's saved composer snippet."
++ },
++ "needs_sign_in": {
++ "type": "boolean",
++ "description": "The command acts for a person; a signed-out composer may offer it and then sign in."
++ }
++ }
++ }
++ }
++ }
++ },
++ "frame.mentions": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/frame/mentions.v1.json",
++ "title": "FrameMentions",
++ "description": "frame.mentions@1: what a composer's `@` menu shows. GET /api/frame/mentions?q=&site= answers this. People are Network accounts (public username, display name, canonical subject id and, only when the picture is an OpenVibe.Media one, its avatar); agents are the person's own rows from Network's agent directory; sites are the open OpenVibe places from the Frame; channels are Live's public channels. At most eight rows, people first, then the person's agents, then places; the site the box is on is not suggested back. Signed out answers public people only. A person row never carries an email, a numeric account id, a role or any other account field. `q` matches usernames, display names, agent names and place names. The read is rate-limited per actor (120 a minute in memory; HTTP 429 with Retry-After past it): signed in that is the person, signed out a hash of the address. A signed-out answer is public, max-age=60; a signed-in one is private, no-store.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "mentions"
++ ],
++ "properties": {
++ "mentions": {
++ "type": "array",
++ "maxItems": 8,
++ "items": {
++ "$ref": "#/$defs/mention"
++ }
++ }
++ },
++ "$defs": {
++ "mention": {
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "kind",
++ "id",
++ "label"
++ ],
++ "properties": {
++ "kind": {
++ "enum": [
++ "person",
++ "agent",
++ "site",
++ "channel"
++ ]
++ },
++ "id": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 64,
++ "description": "A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username."
++ },
++ "label": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 120,
++ "description": "What the menu shows: a display name, an agent's name, an OpenVibe site or a channel."
++ },
++ "handle": {
++ "type": "string",
++ "maxLength": 40,
++ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,39}$",
++ "description": "The public @handle or site id, when the row has one."
++ },
++ "sub": {
++ "type": "string",
++ "maxLength": 80,
++ "description": "A short second line for an agent, e.g. actor · online."
++ },
++ "avatar": {
++ "type": "string",
++ "maxLength": 500,
++ "format": "uri",
++ "pattern": "^https://openvibe\\.media/",
++ "description": "A public OpenVibe.Media picture; never a Network-served, private or third-party URL."
++ },
++ "url": {
++ "type": "string",
++ "maxLength": 500,
++ "format": "uri",
++ "pattern": "^https://",
++ "description": "The public page the row opens."
++ }
++ }
++ }
++ }
++ }
++ },
"agents.run": {
"version": "1.0.0",
"owner": "actor",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 2683d2ad..ba756373 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.412.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 d6b5f5d6..1c3dbcfd 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.412.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 654921c7..270a9370 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.412.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 726be6ae..91530e8a 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.412.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 22e898da..371186d0 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.412.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 a4822a12..9e2f514e 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.412.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 6db8434d..4e5cf594 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.412.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 51d6f452..d8cbc380 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.412.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 ec54bc5e..bcb4c8a8 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.412.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 0e726b78..cd77c5ad 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.412.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 0dc0b908..52b67aed 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.412.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 f3438c23..c7dfedbe 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.412.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 703f38db..e11608da 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.412.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 7eb59242..2367ec48 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.412.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 2fa99164..3a7c654d 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.412.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 4c3e56db..de57437c 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.412.0",
-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 1141ede9..e23ac0fa 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.412.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 dd1fb731..72c5a7c2 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.412.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 dfbe57bc..084482d8 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.412.0",
-- "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 f6a6f4e4..69e3c318 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.412.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 5a37b70c..d60a3514 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.412.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 8d528078..628a7b19 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.412.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 5fe18461..a78978f9 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.412.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 09f78f7f..cb59170d 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.412.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 e3a40a63..ee2bc2cd 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.412.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 9699f107..1086f8ba 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.412.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 cc597c26..03846b0c 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.412.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 a6abd9ce..3949ab58 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.412.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 b2047350..123b7134 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.412.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 7c6673cb..e0c14442 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.412.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 2c8e1b5e..ae8fc420 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.412.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 1230c448..1723baa0 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.412.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 0290cfb8..441c50ac 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.412.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 7a849615..f7232424 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.412.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 27acad9b..93fd16df 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.412.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 0478db22..398cbee8 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.412.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 d0a3849b..92a06eba 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.412.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 34bdfdf1..2e5c289a 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.412.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 065ff630..43531132 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.412.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 4ac31f09..ff392083 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.412.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 bc7a07e2..84fa77e1 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.412.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 98cfe1e1..664b517a 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.412.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 d4efd4fe..3d185958 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.412.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 db214915..d7c8500f 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.412.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 afbb65da..696b760a 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.412.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 ab05fa3a..678d70d0 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.412.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 20a4fe23..350e88e1 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.412.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.412.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.413.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.413.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 1b38c600..179f52d3 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -341445,6 +341445,1049 @@ export interface FrameAskRequest {
};
}
++/** [email protected] (owner: network) */
++/**
++ * frame.commands@1: what a composer's `/` menu offers on one site. GET /api/frame/commands?site=<host>&q= answers this. Every site offers the network's /ask (Vibe answers with sources), /do (Actor plans and runs it), /remind (Today remembers it) and /timer (the Dock's focus timer); a site adds its own from its Frame manifest's site.commands, and a signed-in person's saved composer snippets are theirs. The site's own rows come first because they fit that box, then the network's, then the person's own; a name appears once. q filters by name prefix or hint. `name` is the word after the slash (no slash), `insert` is the text a pick puts in the box, `kind` is where the row came from, and `needs_sign_in` says the command acts for a person, so a signed-out box may offer it and then sign in. A signed-out answer is public, max-age=60, held a minute; a signed-in one is private, no-store.
++ */
++export interface FrameCommands {
++ /**
++ * The site the composer asked about; null when the host is not an OpenVibe site (the network's four still answer).
++ */
++ site: null | {
++ /**
++ * The site's Frame id (the icon name), e.g. live.
++ */
++ id: string;
++ name: string;
++ host: string;
++ };
++ /**
++ * @maxItems 50
++ */
++ commands: {
++ /**
++ * The word after the slash: ask, do, remind, timer, or a site's or person's own.
++ */
++ name: string;
++ /**
++ * One line the composer's popover shows beside the command.
++ */
++ hint: string;
++ /**
++ * The text a pick puts in the box: the command, a space, ready for its arguments.
++ */
++ insert: string;
++ /**
++ * The network's four, the site's own from its manifest, or the person's saved composer snippet.
++ */
++ kind: "network" | "site" | "mine";
++ /**
++ * The command acts for a person; a signed-out composer may offer it and then sign in.
++ */
++ needs_sign_in: boolean;
++ }[];
++}
++
++/** [email protected] (owner: network) */
++/**
++ * frame.mentions@1: what a composer's `@` menu shows. GET /api/frame/mentions?q=&site= answers this. People are Network accounts (public username, display name, canonical subject id and, only when the picture is an OpenVibe.Media one, its avatar); agents are the person's own rows from Network's agent directory; sites are the open OpenVibe places from the Frame; channels are Live's public channels. At most eight rows, people first, then the person's agents, then places; the site the box is on is not suggested back. Signed out answers public people only. A person row never carries an email, a numeric account id, a role or any other account field. `q` matches usernames, display names, agent names and place names. The read is rate-limited per actor (120 a minute in memory; HTTP 429 with Retry-After past it): signed in that is the person, signed out a hash of the address. A signed-out answer is public, max-age=60; a signed-in one is private, no-store.
++ */
++export interface FrameMentions {
++ /**
++ * @maxItems 8
++ */
++ mentions:
++ | []
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ]
++ | [
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ },
++ {
++ kind: "person" | "agent" | "site" | "channel";
++ /**
++ * A person's canonical usr_… subject, an agent's agt_… id, a site id, or a Live username.
++ */
++ id: string;
++ /**
++ * What the menu shows: a display name, an agent's name, an OpenVibe site or a channel.
++ */
++ label: string;
++ /**
++ * The public @handle or site id, when the row has one.
++ */
++ handle?: string;
++ /**
++ * A short second line for an agent, e.g. actor · online.
++ */
++ sub?: string;
++ /**
++ * A public OpenVibe.Media picture; never a Network-served, private or third-party URL.
++ */
++ avatar?: string;
++ /**
++ * The public page the row opens.
++ */
++ url?: string;
++ }
++ ];
++}
++
/** [email protected] (owner: actor) */
/**
* agents.run@1 (one agent system, 2026-11-12): one run of an agent, the same shape on every product (Actor, Codes, Run and anything else on openvibe-sdk/agents). The owner is the person or agent the work belongs to; AGENT names the agent or harness that runs it and the product it comes from; PARENT_RUN makes sub-agent runs a tree; BUDGET is the hard limit and COST what the run has spent; STATUS is where the run is now. The run is stored by its product, not here: this contract is the wire shape. GET /api/v1/runs, /api/v1/runs/{id} and /api/v1/runs/{id}/steps serve it (OpenVibe.Actor) and the SDK's runs client reads it. The product's own id is kept, never reused. A run that ends keeps its end status. This v1 contract may grow optional fields; a step is agents.step@1 and an approval is agents.approval@1.
ddiff --git a/package-lock.json b/package-lock.json
iindex f5205cbd..ec09dd6e 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.412.0",
++ "version": "0.413.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.412.0",
++ "version": "0.413.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 8df754fb..415e7093 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.412.0",
++ "version": "0.413.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",