openvibers/openvibe.contracts Commits
openvibe-contracts 0.413.0: frame.commands@1 and frame.mentions@1 (R3) (#461)
Changes
@@@ -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-12One agent system, stage 2: one run shape for Actor, Codes and Run, and the step event that follows it.@@@ -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",nnew file mode 100644@@@ -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."++ }++ }++ }++ }++}nnew file mode 100644@@@ -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."++ }++ }++ }++ }++}nnew file mode 100644@@@ -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 }++ ]++}nnew file mode 100644@@@ -0,0 +1,6 @@++{++ "site": null,++ "commands": [++ { "name": "ask", "hint": "Ask Vibe", "insert": "/ask ", "needs_sign_in": true }++ ]++}nnew file mode 100644@@@ -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 }++ ]++}nnew file mode 100644@@@ -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 }++ ]++}nnew file mode 100644@@@ -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" }++ ]++}nnew file mode 100644@@@ -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/" }++ ]++}nnew file mode 100644@@@ -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" }++ ]++}nnew file mode 100644@@@ -0,0 +1,6 @@++{++ "mentions": [++ { "kind": "person", "id": "usr_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Ana Followed", "handle": "ana",++ "url": "https://openvibe.network/@ana" }++ ]++}@@@ -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",@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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"@@@ -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.@@@ -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",@@@ -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",
@@ -1,5 +1,19 @@
@@ -1,5 +1,19 @@
# Changelog
# 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
## 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.
One agent system, stage 2: one run shape for Actor, Codes and Run, and the step event that follows it.
@@ -11711,6 +11711,24 @@
@@ -11711,6 +11711,24 @@
"compatibility": "backward",
"compatibility": "backward",
"status": "active"
"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",
"id": "agents.run",
"version": "1.0.0",
"version": "1.0.0",
new file mode 100644
new file mode 100644
@@ -0,0 +1,96 @@
@@ -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."
+ }
+ }
+ }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,78 @@
@@ -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."
+ }
+ }
+ }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,6 @@
@@ -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 }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
+{
+ "site": null,
+ "commands": [
+ { "name": "ask", "hint": "Ask Vibe", "insert": "/ask ", "needs_sign_in": true }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,11 @@
@@ -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 }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,7 @@
@@ -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 }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,6 @@
@@ -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" }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,13 @@
@@ -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/" }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,9 @@
@@ -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" }
+ ]
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
+{
+ "mentions": [
+ { "kind": "person", "id": "usr_01J8Z3Q4R5S6T7V8W9X0Y1Z2A3", "label": "Ana Followed", "handle": "ana",
+ "url": "https://openvibe.network/@ana" }
+ ]
+}
@@ -134770,6 +134770,192 @@
@@ -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": {
"agents.run": {
"version": "1.0.0",
"version": "1.0.0",
"owner": "actor",
"owner": "actor",
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Actor API",
"title": "OpenVibe.Actor API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.AI API",
"title": "OpenVibe.AI API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bench API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Billing API",
"title": "OpenVibe.Billing API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Blog API",
"title": "OpenVibe.Blog API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Bot API",
"title": "OpenVibe.Bot API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Chat API",
"title": "OpenVibe.Chat API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Codes API",
"title": "OpenVibe.Codes API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Community API",
"title": "OpenVibe.Community API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe Connect API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Coupons API",
"title": "OpenVibe.Coupons API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Deals API",
"title": "OpenVibe.Deals API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Design API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Domains API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Events API",
"title": "OpenVibe.Events API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Exchange API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Food API",
"title": "OpenVibe.Food API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Games API",
"title": "OpenVibe.Games API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Git API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Host API",
"title": "OpenVibe.Host API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Inventory API",
"title": "OpenVibe.Inventory API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Live API",
"title": "OpenVibe.Live API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Mail API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.MediaHub API",
"title": "OpenVibe.MediaHub API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Media API",
"title": "OpenVibe.Media API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Network API",
"title": "OpenVibe.Network API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.News API",
"title": "OpenVibe.News API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenRestream API",
"title": "OpenRestream API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Play API",
"title": "OpenVibe.Play API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Quest API",
"title": "OpenVibe.Quest API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Report API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Reviews API",
"title": "OpenVibe.Reviews API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Run API",
"title": "OpenVibe.Run API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Search API",
"title": "OpenVibe.Search API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Services API",
"title": "OpenVibe.Services API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Sources API",
"title": "OpenVibe.Sources API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Space API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tips API",
"title": "OpenVibe.Tips API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Today API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Tools API",
"title": "OpenVibe.Tools API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Trade API",
"title": "OpenVibe.Trade API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.VIP API",
"title": "OpenVibe.VIP API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Vision API",
"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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Watch API",
"title": "OpenVibe.Watch API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Wiki API",
"title": "OpenVibe.Wiki API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Work API",
"title": "OpenVibe.Work API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -3,8 +3,8 @@
@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"info": {
"title": "OpenVibe.Zone API",
"title": "OpenVibe.Zone API",
- "version": "0.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": {
"license": {
"name": "MIT",
"name": "MIT",
"identifier": "MIT"
"identifier": "MIT"
@@ -341445,6 +341445,1049 @@ export interface FrameAskRequest {
@@ -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) */
/** [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.
* 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.
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.412.0",
+ "version": "0.413.0",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.412.0",
+ "version": "0.413.0",
"license": "AGPL-3.0-only",
"license": "AGPL-3.0-only",
"dependencies": {
"dependencies": {
"ajv": "^8.17.1",
"ajv": "^8.17.1",
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.412.0",
+ "version": "0.413.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",