openvibers/openvibe.contracts Commits

report.ai-usage-me-result@2: the person's AI usage as Report answers it (L41 R1) (#271)

OP OpenVibers committed 13 days ago · 440d5d56f4 · 53 files, +799 −94

The route answers group, rows, totals, by_paid_by, insights and source, so v1's usage shape is replaced by a new major and deprecated until 1.0.0. The v2 type is ReportAiUsageMeResultV2; fixtures cover a populated answer, the empty window and the closed payer set.

0.263.0.

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 45e32c1a..c35fedb0 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,18 @@
# Changelog
++## 0.263.0 — 2026-10-31
++
++- **`report.ai-usage-me-result@2`** (plan L41 R1, OpenVibe.Report): GET `/api/v1/me/ai/usage` as the route now
++ answers it. The body is `{ group, rows, totals, by_paid_by, insights, source }`: `rows` are one bucket each
++ (`day`, `week`, `month`, `provider`, `model`, `surface` or `paid_by`) with `key`, `calls`, `input_tokens`,
++ `output_tokens`, `cached_tokens`, `cache_write_tokens`, `cost_usd`, `fee_usd`, `charged_usd` and `saved_usd`;
++ `totals` repeats those measures for the window; `by_paid_by` holds the same measures for each payer
++ (`own_key`, `openvibe_key`, `plan`, `own_machine`, `free_tier`, `network_allowance`, `org_key`); `insights` are
++ two or three plain lines worked out from the numbers; and `source` is `raw`, `rollups` or `raw+rollups`.
++- **Breaking shape:** v1's `usage` array and its `input`/`output`/`reasoning`/`cache_read`/`cache_write`/
++ `list_cost_usd`/`cache_saved_usd` field names are gone, so v1 is deprecated in favour of `@2` and stays
++ loadable until 1.0.0. The v2 TypeScript type is `ReportAiUsageMeResultV2`.
++
## 0.262.0 — 2026-10-31
- **The task-aware router's explain** (L33 P3 "the router picks for the task", L36 Y7 "a smarter router";
ddiff --git a/compatibility/deprecations.json b/compatibility/deprecations.json
iindex d697cc42..b50dc037 100644
---- a/compatibility/deprecations.json
++++ b/compatibility/deprecations.json
@@@ -224,6 +224,13 @@
"since": "0.249.0",
"removeAfter": "1.0.0",
"reason": "Actor's files and charts ride on the tool result that made them; v2 adds artifacts to that event while keeping every v1 field (Actor v2 stage V2-4, 2026-10-30)"
++ },
++ {
++ "id": "report.ai-usage-me-result@1",
++ "replacement": "report.ai-usage-me-result@2",
++ "since": "0.263.0",
++ "removeAfter": "1.0.0",
++ "reason": "Report's personal AI usage answers rows, totals, by_paid_by, insights and source (plan L41 R1); v1's usage array and its field names never matched the route, so the shape moved to a new major (2026-10-31)"
}
]
}
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex f06707b7..b5015f63 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -8473,6 +8473,15 @@
"compatibility": "backward",
"status": "active"
},
++ {
++ "id": "report.ai-usage-me-result",
++ "version": "2.0.0",
++ "owner": "report",
++ "schema": "report/ai-usage-me-result.v2.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
{
"id": "bench.benchmark",
"version": "1.0.0",
ddiff --git a/contracts/report/ai-usage-me-result.v2.json b/contracts/report/ai-usage-me-result.v2.json
nnew file mode 100644
iindex 00000000..e53a7778
---- /dev/null
++++ b/contracts/report/ai-usage-me-result.v2.json
@@@ -0,0 +1,80 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/report/ai-usage-me-result.v2.json",
++ "title": "ReportAiUsageMeResultV2",
++ "description": "report.ai-usage-me-result@2: the AI usage of one person (plan L41 R1). GET /api/v1/me/ai/usage answers for the person their session names and nobody else: the rows of one group (day, week, month, provider, model, surface or paid_by), the totals, what each way of paying cost, two or three plain lines worked out from the numbers, and the source that answered (raw records, the roll-ups, or both). v2 replaces v1's `usage` array and its `input`/`output`/`reasoning`/`cache_read`/`cache_write`/`list_cost_usd`/`cache_saved_usd` names with `rows` and the names the route answers: `input_tokens`, `output_tokens`, `cached_tokens`, `cache_write_tokens`, `cost_usd` and `saved_usd`. The route answers 401 signed out; the subject is the session's, never the query.",
++ "type": "object",
++ "required": ["group", "rows", "totals", "by_paid_by", "insights", "source"],
++ "additionalProperties": false,
++ "properties": {
++ "group": {
++ "type": "string",
++ "enum": ["day", "week", "month", "provider", "model", "surface", "paid_by"],
++ "description": "The bucket the rows are grouped by; a person may ask for any of the seven."
++ },
++ "rows": {
++ "type": "array",
++ "description": "One row per bucket, sorted by key. Empty when the window has no calls.",
++ "items": {
++ "type": "object",
++ "required": ["key", "calls", "input_tokens", "output_tokens", "cached_tokens", "cache_write_tokens", "cost_usd", "fee_usd", "charged_usd", "saved_usd"],
++ "additionalProperties": false,
++ "properties": {
++ "key": { "type": "string", "maxLength": 200, "description": "The bucket's key: a day (YYYY-MM-DD), a week (its Monday), a month (YYYY-MM), a provider, a model, a surface or a payer; 'unknown' when the record has no such value." },
++ "calls": { "type": "integer", "minimum": 0 },
++ "input_tokens": { "type": "integer", "minimum": 0, "description": "The uncached input tokens." },
++ "output_tokens": { "type": "integer", "minimum": 0 },
++ "cached_tokens": { "type": "integer", "minimum": 0, "description": "The input tokens read from a provider cache." },
++ "cache_write_tokens": { "type": "integer", "minimum": 0, "description": "The input tokens written to a provider cache." },
++ "cost_usd": { "type": "number", "minimum": 0, "description": "What the tokens cost at list prices." },
++ "fee_usd": { "type": "number", "minimum": 0 },
++ "charged_usd": { "type": "number", "minimum": 0 },
++ "saved_usd": { "type": "number", "minimum": 0, "description": "What the cache saved against the plain input price." }
++ }
++ }
++ },
++ "totals": { "$ref": "#/$defs/measure" },
++ "by_paid_by": {
++ "type": "object",
++ "description": "What each way of paying cost over the same window; a payer with no calls is absent.",
++ "additionalProperties": false,
++ "properties": {
++ "own_key": { "$ref": "#/$defs/measure" },
++ "openvibe_key": { "$ref": "#/$defs/measure" },
++ "plan": { "$ref": "#/$defs/measure" },
++ "own_machine": { "$ref": "#/$defs/measure" },
++ "free_tier": { "$ref": "#/$defs/measure" },
++ "network_allowance": { "$ref": "#/$defs/measure" },
++ "org_key": { "$ref": "#/$defs/measure" }
++ }
++ },
++ "insights": {
++ "type": "array",
++ "description": "Two or three plain lines worked out from the numbers, one when the window has no calls; never an AI call.",
++ "items": { "type": "string" }
++ },
++ "source": {
++ "type": "string",
++ "enum": ["raw", "rollups", "raw+rollups"],
++ "description": "Which tables answered: raw records inside the 90-day retention, the roll-ups beyond it, or both."
++ }
++ },
++ "$defs": {
++ "measure": {
++ "type": "object",
++ "required": ["calls", "input_tokens", "output_tokens", "cached_tokens", "cache_write_tokens", "cost_usd", "fee_usd", "charged_usd", "saved_usd"],
++ "additionalProperties": false,
++ "properties": {
++ "calls": { "type": "integer", "minimum": 0 },
++ "input_tokens": { "type": "integer", "minimum": 0, "description": "The uncached input tokens." },
++ "output_tokens": { "type": "integer", "minimum": 0 },
++ "cached_tokens": { "type": "integer", "minimum": 0, "description": "The input tokens read from a provider cache." },
++ "cache_write_tokens": { "type": "integer", "minimum": 0, "description": "The input tokens written to a provider cache." },
++ "cost_usd": { "type": "number", "minimum": 0, "description": "What the tokens cost at list prices." },
++ "fee_usd": { "type": "number", "minimum": 0 },
++ "charged_usd": { "type": "number", "minimum": 0 },
++ "saved_usd": { "type": "number", "minimum": 0, "description": "What the cache saved against the plain input price." }
++ }
++ }
++ }
++}
ddiff --git a/fixtures/report.ai-usage-me-result/invalid/carries-a-person.json b/fixtures/report.ai-usage-me-result/invalid/carries-a-person.json
iindex a36db2e0..baf73e93 100644
---- a/fixtures/report.ai-usage-me-result/invalid/carries-a-person.json
++++ b/fixtures/report.ai-usage-me-result/invalid/carries-a-person.json
@@@ -1,6 +1,19 @@
{
"group": "day",
-- "usage": [],
-- "totals": { "calls": 0 },
++ "rows": [],
++ "totals": {
++ "calls": 0,
++ "input_tokens": 0,
++ "output_tokens": 0,
++ "cached_tokens": 0,
++ "cache_write_tokens": 0,
++ "cost_usd": 0,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0
++ },
++ "by_paid_by": {},
++ "insights": ["No AI calls in this window."],
++ "source": "raw",
"subject": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
}
ddiff --git a/fixtures/report.ai-usage-me-result/invalid/unknown-payer.json b/fixtures/report.ai-usage-me-result/invalid/unknown-payer.json
nnew file mode 100644
iindex 00000000..428320f2
---- /dev/null
++++ b/fixtures/report.ai-usage-me-result/invalid/unknown-payer.json
@@@ -0,0 +1,30 @@
++{
++ "group": "day",
++ "rows": [],
++ "totals": {
++ "calls": 0,
++ "input_tokens": 0,
++ "output_tokens": 0,
++ "cached_tokens": 0,
++ "cache_write_tokens": 0,
++ "cost_usd": 0,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0
++ },
++ "by_paid_by": {
++ "someone_else": {
++ "calls": 0,
++ "input_tokens": 0,
++ "output_tokens": 0,
++ "cached_tokens": 0,
++ "cache_write_tokens": 0,
++ "cost_usd": 0,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0
++ }
++ },
++ "insights": ["No AI calls in this window."],
++ "source": "raw"
++}
ddiff --git a/fixtures/report.ai-usage-me-result/valid/empty.json b/fixtures/report.ai-usage-me-result/valid/empty.json
nnew file mode 100644
iindex 00000000..db2a6adf
---- /dev/null
++++ b/fixtures/report.ai-usage-me-result/valid/empty.json
@@@ -0,0 +1,18 @@
++{
++ "group": "day",
++ "rows": [],
++ "totals": {
++ "calls": 0,
++ "input_tokens": 0,
++ "output_tokens": 0,
++ "cached_tokens": 0,
++ "cache_write_tokens": 0,
++ "cost_usd": 0,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0
++ },
++ "by_paid_by": {},
++ "insights": ["No AI calls in this window."],
++ "source": "rollups"
++}
ddiff --git a/fixtures/report.ai-usage-me-result/valid/mine.json b/fixtures/report.ai-usage-me-result/valid/mine.json
iindex fd92f20c..fc959c59 100644
---- a/fixtures/report.ai-usage-me-result/valid/mine.json
++++ b/fixtures/report.ai-usage-me-result/valid/mine.json
@@@ -1,11 +1,70 @@
{
-- "group": "day",
-- "usage": [
++ "group": "paid_by",
++ "rows": [
{
-- "group": "day", "key": "2026-10-31", "calls": 2,
-- "input": 200, "output": 80, "reasoning": 0, "cache_read": 800, "cache_write": 0,
-- "list_cost_usd": 0.0021, "charged_usd": 0, "fee_usd": 0, "cache_saved_usd": 0
++ "key": "openvibe_key",
++ "calls": 1,
++ "input_tokens": 1000,
++ "output_tokens": 500,
++ "cached_tokens": 0,
++ "cache_write_tokens": 100,
++ "cost_usd": 0.05,
++ "fee_usd": 0.01,
++ "charged_usd": 0.06,
++ "saved_usd": 0
++ },
++ {
++ "key": "own_key",
++ "calls": 2,
++ "input_tokens": 250,
++ "output_tokens": 90,
++ "cached_tokens": 800,
++ "cache_write_tokens": 0,
++ "cost_usd": 0.0031,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0.0017
++ }
++ ],
++ "totals": {
++ "calls": 3,
++ "input_tokens": 1250,
++ "output_tokens": 590,
++ "cached_tokens": 800,
++ "cache_write_tokens": 100,
++ "cost_usd": 0.0531,
++ "fee_usd": 0.01,
++ "charged_usd": 0.06,
++ "saved_usd": 0.0017
++ },
++ "by_paid_by": {
++ "openvibe_key": {
++ "calls": 1,
++ "input_tokens": 1000,
++ "output_tokens": 500,
++ "cached_tokens": 0,
++ "cache_write_tokens": 100,
++ "cost_usd": 0.05,
++ "fee_usd": 0.01,
++ "charged_usd": 0.06,
++ "saved_usd": 0
++ },
++ "own_key": {
++ "calls": 2,
++ "input_tokens": 250,
++ "output_tokens": 90,
++ "cached_tokens": 800,
++ "cache_write_tokens": 0,
++ "cost_usd": 0.0031,
++ "fee_usd": 0,
++ "charged_usd": 0,
++ "saved_usd": 0.0017
}
++ },
++ "insights": [
++ "67% of your calls ran on your own keys, so no fee on those.",
++ "The cache saved you less than $0.01 this month.",
++ "Your calls cost $0.06, including $0.01 in fees."
],
-- "totals": { "calls": 2, "input": 200, "output": 80 }
++ "source": "raw"
}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex dc34b43b..59d74fb6 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -94349,7 +94349,7 @@
}
}
},
-- "report.ai-usage-me-result": {
++ "report.ai-usage-me-result@1": {
"version": "1.0.0",
"owner": "report",
"status": "active",
@@@ -94459,6 +94459,217 @@
}
}
},
++ "report.ai-usage-me-result@2": {
++ "version": "2.0.0",
++ "owner": "report",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/report/ai-usage-me-result.v2.json",
++ "title": "ReportAiUsageMeResultV2",
++ "description": "report.ai-usage-me-result@2: the AI usage of one person (plan L41 R1). GET /api/v1/me/ai/usage answers for the person their session names and nobody else: the rows of one group (day, week, month, provider, model, surface or paid_by), the totals, what each way of paying cost, two or three plain lines worked out from the numbers, and the source that answered (raw records, the roll-ups, or both). v2 replaces v1's `usage` array and its `input`/`output`/`reasoning`/`cache_read`/`cache_write`/`list_cost_usd`/`cache_saved_usd` names with `rows` and the names the route answers: `input_tokens`, `output_tokens`, `cached_tokens`, `cache_write_tokens`, `cost_usd` and `saved_usd`. The route answers 401 signed out; the subject is the session's, never the query.",
++ "type": "object",
++ "required": [
++ "group",
++ "rows",
++ "totals",
++ "by_paid_by",
++ "insights",
++ "source"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "group": {
++ "type": "string",
++ "enum": [
++ "day",
++ "week",
++ "month",
++ "provider",
++ "model",
++ "surface",
++ "paid_by"
++ ],
++ "description": "The bucket the rows are grouped by; a person may ask for any of the seven."
++ },
++ "rows": {
++ "type": "array",
++ "description": "One row per bucket, sorted by key. Empty when the window has no calls.",
++ "items": {
++ "type": "object",
++ "required": [
++ "key",
++ "calls",
++ "input_tokens",
++ "output_tokens",
++ "cached_tokens",
++ "cache_write_tokens",
++ "cost_usd",
++ "fee_usd",
++ "charged_usd",
++ "saved_usd"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "key": {
++ "type": "string",
++ "maxLength": 200,
++ "description": "The bucket's key: a day (YYYY-MM-DD), a week (its Monday), a month (YYYY-MM), a provider, a model, a surface or a payer; 'unknown' when the record has no such value."
++ },
++ "calls": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "input_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The uncached input tokens."
++ },
++ "output_tokens": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "cached_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The input tokens read from a provider cache."
++ },
++ "cache_write_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The input tokens written to a provider cache."
++ },
++ "cost_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "What the tokens cost at list prices."
++ },
++ "fee_usd": {
++ "type": "number",
++ "minimum": 0
++ },
++ "charged_usd": {
++ "type": "number",
++ "minimum": 0
++ },
++ "saved_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "What the cache saved against the plain input price."
++ }
++ }
++ }
++ },
++ "totals": {
++ "$ref": "#/$defs/measure"
++ },
++ "by_paid_by": {
++ "type": "object",
++ "description": "What each way of paying cost over the same window; a payer with no calls is absent.",
++ "additionalProperties": false,
++ "properties": {
++ "own_key": {
++ "$ref": "#/$defs/measure"
++ },
++ "openvibe_key": {
++ "$ref": "#/$defs/measure"
++ },
++ "plan": {
++ "$ref": "#/$defs/measure"
++ },
++ "own_machine": {
++ "$ref": "#/$defs/measure"
++ },
++ "free_tier": {
++ "$ref": "#/$defs/measure"
++ },
++ "network_allowance": {
++ "$ref": "#/$defs/measure"
++ },
++ "org_key": {
++ "$ref": "#/$defs/measure"
++ }
++ }
++ },
++ "insights": {
++ "type": "array",
++ "description": "Two or three plain lines worked out from the numbers, one when the window has no calls; never an AI call.",
++ "items": {
++ "type": "string"
++ }
++ },
++ "source": {
++ "type": "string",
++ "enum": [
++ "raw",
++ "rollups",
++ "raw+rollups"
++ ],
++ "description": "Which tables answered: raw records inside the 90-day retention, the roll-ups beyond it, or both."
++ }
++ },
++ "$defs": {
++ "measure": {
++ "type": "object",
++ "required": [
++ "calls",
++ "input_tokens",
++ "output_tokens",
++ "cached_tokens",
++ "cache_write_tokens",
++ "cost_usd",
++ "fee_usd",
++ "charged_usd",
++ "saved_usd"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "calls": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "input_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The uncached input tokens."
++ },
++ "output_tokens": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "cached_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The input tokens read from a provider cache."
++ },
++ "cache_write_tokens": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "The input tokens written to a provider cache."
++ },
++ "cost_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "What the tokens cost at list prices."
++ },
++ "fee_usd": {
++ "type": "number",
++ "minimum": 0
++ },
++ "charged_usd": {
++ "type": "number",
++ "minimum": 0
++ },
++ "saved_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "What the cache saved against the plain input price."
++ }
++ }
++ }
++ }
++ }
++ },
"bench.benchmark": {
"version": "1.0.0",
"owner": "bench",
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 4c935e75..6b631561 100644
---- a/generated/openapi/actor.json
++++ b/generated/openapi/actor.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Actor API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/ai.json b/generated/openapi/ai.json
iindex 29019169..3c19e1ec 100644
---- a/generated/openapi/ai.json
++++ b/generated/openapi/ai.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.AI API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex 25c2eb5e..2bf8abcb 100644
---- a/generated/openapi/bench.json
++++ b/generated/openapi/bench.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bench API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/billing.json b/generated/openapi/billing.json
iindex a0de5946..3355d644 100644
---- a/generated/openapi/billing.json
++++ b/generated/openapi/billing.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Billing API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/blog.json b/generated/openapi/blog.json
iindex e83635a9..00751518 100644
---- a/generated/openapi/blog.json
++++ b/generated/openapi/blog.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Blog API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/bot.json b/generated/openapi/bot.json
iindex 5415c6a9..ac4976a4 100644
---- a/generated/openapi/bot.json
++++ b/generated/openapi/bot.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Bot API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/chat.json b/generated/openapi/chat.json
iindex 768db176..1aa30d31 100644
---- a/generated/openapi/chat.json
++++ b/generated/openapi/chat.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Chat API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/codes.json b/generated/openapi/codes.json
iindex c2b4ced5..d20147fc 100644
---- a/generated/openapi/codes.json
++++ b/generated/openapi/codes.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Codes API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/community.json b/generated/openapi/community.json
iindex e9d3ff5c..fe591178 100644
---- a/generated/openapi/community.json
++++ b/generated/openapi/community.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Community API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/coupons.json b/generated/openapi/coupons.json
iindex d68eafb1..77420010 100644
---- a/generated/openapi/coupons.json
++++ b/generated/openapi/coupons.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Coupons API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/deals.json b/generated/openapi/deals.json
iindex 2e0e82c8..9af45782 100644
---- a/generated/openapi/deals.json
++++ b/generated/openapi/deals.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Deals API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/domains.json b/generated/openapi/domains.json
iindex 34809407..3c1984cc 100644
---- a/generated/openapi/domains.json
++++ b/generated/openapi/domains.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Domains API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/events.json b/generated/openapi/events.json
iindex f9915ab4..b258c3a9 100644
---- a/generated/openapi/events.json
++++ b/generated/openapi/events.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Events API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/food.json b/generated/openapi/food.json
iindex 272c9772..19cee80c 100644
---- a/generated/openapi/food.json
++++ b/generated/openapi/food.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Food API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/games.json b/generated/openapi/games.json
iindex a1a8fa86..f0397c21 100644
---- a/generated/openapi/games.json
++++ b/generated/openapi/games.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Games API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/host.json b/generated/openapi/host.json
iindex 966e8ff6..73716edf 100644
---- a/generated/openapi/host.json
++++ b/generated/openapi/host.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Host API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/inventory.json b/generated/openapi/inventory.json
iindex b89c2915..7e75ff26 100644
---- a/generated/openapi/inventory.json
++++ b/generated/openapi/inventory.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Inventory API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/live.json b/generated/openapi/live.json
iindex 1d287be8..84acb0dd 100644
---- a/generated/openapi/live.json
++++ b/generated/openapi/live.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Live API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media-hub.json b/generated/openapi/media-hub.json
iindex 42a84528..413badc0 100644
---- a/generated/openapi/media-hub.json
++++ b/generated/openapi/media-hub.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.MediaHub API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/media.json b/generated/openapi/media.json
iindex c6ae9517..adb20b4c 100644
---- a/generated/openapi/media.json
++++ b/generated/openapi/media.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Media API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/network.json b/generated/openapi/network.json
iindex 4f723e5c..926713d3 100644
---- a/generated/openapi/network.json
++++ b/generated/openapi/network.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Network API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/news.json b/generated/openapi/news.json
iindex 98121492..ebf64fbc 100644
---- a/generated/openapi/news.json
++++ b/generated/openapi/news.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.News API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/openre.json b/generated/openapi/openre.json
iindex fbc4c000..95097fca 100644
---- a/generated/openapi/openre.json
++++ b/generated/openapi/openre.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenRestream API",
-- "version": "0.262.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/play.json b/generated/openapi/play.json
iindex 0cdeeca5..e11c3a26 100644
---- a/generated/openapi/play.json
++++ b/generated/openapi/play.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Play API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/quest.json b/generated/openapi/quest.json
iindex ed00b16c..018473b7 100644
---- a/generated/openapi/quest.json
++++ b/generated/openapi/quest.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Quest API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/report.json b/generated/openapi/report.json
iindex 2fe61105..173bebd3 100644
---- a/generated/openapi/report.json
++++ b/generated/openapi/report.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Report API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/reviews.json b/generated/openapi/reviews.json
iindex 55a5c8cd..1252a071 100644
---- a/generated/openapi/reviews.json
++++ b/generated/openapi/reviews.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Reviews API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/run.json b/generated/openapi/run.json
iindex 4555dc67..c89f3d30 100644
---- a/generated/openapi/run.json
++++ b/generated/openapi/run.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Run API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/search.json b/generated/openapi/search.json
iindex 0a29d362..c27ca2d8 100644
---- a/generated/openapi/search.json
++++ b/generated/openapi/search.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Search API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/services.json b/generated/openapi/services.json
iindex 00e12a7c..5b96745d 100644
---- a/generated/openapi/services.json
++++ b/generated/openapi/services.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Services API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/sources.json b/generated/openapi/sources.json
iindex 6faa6c07..adf7036b 100644
---- a/generated/openapi/sources.json
++++ b/generated/openapi/sources.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Sources API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/space.json b/generated/openapi/space.json
iindex 1bfbb270..56982b3d 100644
---- a/generated/openapi/space.json
++++ b/generated/openapi/space.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Space API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tips.json b/generated/openapi/tips.json
iindex 31297e37..8e64aabf 100644
---- a/generated/openapi/tips.json
++++ b/generated/openapi/tips.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tips API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/tools.json b/generated/openapi/tools.json
iindex 93cb68db..e9fcaec7 100644
---- a/generated/openapi/tools.json
++++ b/generated/openapi/tools.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Tools API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/trade.json b/generated/openapi/trade.json
iindex 18a02c1a..9f6d8abe 100644
---- a/generated/openapi/trade.json
++++ b/generated/openapi/trade.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Trade API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vip.json b/generated/openapi/vip.json
iindex f25342b3..f90ad6ce 100644
---- a/generated/openapi/vip.json
++++ b/generated/openapi/vip.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.VIP API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/vision.json b/generated/openapi/vision.json
iindex 532edad5..ead62a61 100644
---- a/generated/openapi/vision.json
++++ b/generated/openapi/vision.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Vision API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/watch.json b/generated/openapi/watch.json
iindex 949ae9a7..3ba2a322 100644
---- a/generated/openapi/watch.json
++++ b/generated/openapi/watch.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Watch API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/wiki.json b/generated/openapi/wiki.json
iindex c7bb530d..c8c200e2 100644
---- a/generated/openapi/wiki.json
++++ b/generated/openapi/wiki.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Wiki API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/work.json b/generated/openapi/work.json
iindex 5395ab80..a332f929 100644
---- a/generated/openapi/work.json
++++ b/generated/openapi/work.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Work API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/zone.json b/generated/openapi/zone.json
iindex 653a1af0..88f1c7c7 100644
---- a/generated/openapi/zone.json
++++ b/generated/openapi/zone.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Zone API",
-- "version": "0.262.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.262.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.263.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.263.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex b7d10a75..563bfb8c 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -277599,6 +277599,271 @@ export interface ReportAiUsageMeResult {
totals: {};
}
++/** [email protected] (owner: report) */
++/**
++ * report.ai-usage-me-result@2: the AI usage of one person (plan L41 R1). GET /api/v1/me/ai/usage answers for the person their session names and nobody else: the rows of one group (day, week, month, provider, model, surface or paid_by), the totals, what each way of paying cost, two or three plain lines worked out from the numbers, and the source that answered (raw records, the roll-ups, or both). v2 replaces v1's `usage` array and its `input`/`output`/`reasoning`/`cache_read`/`cache_write`/`list_cost_usd`/`cache_saved_usd` names with `rows` and the names the route answers: `input_tokens`, `output_tokens`, `cached_tokens`, `cache_write_tokens`, `cost_usd` and `saved_usd`. The route answers 401 signed out; the subject is the session's, never the query.
++ */
++export interface ReportAiUsageMeResultV2 {
++ /**
++ * The bucket the rows are grouped by; a person may ask for any of the seven.
++ */
++ group: "day" | "week" | "month" | "provider" | "model" | "surface" | "paid_by";
++ /**
++ * One row per bucket, sorted by key. Empty when the window has no calls.
++ */
++ rows: {
++ /**
++ * The bucket's key: a day (YYYY-MM-DD), a week (its Monday), a month (YYYY-MM), a provider, a model, a surface or a payer; 'unknown' when the record has no such value.
++ */
++ key: string;
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ }[];
++ totals: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ /**
++ * What each way of paying cost over the same window; a payer with no calls is absent.
++ */
++ by_paid_by: {
++ own_key?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ openvibe_key?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ plan?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ own_machine?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ free_tier?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ network_allowance?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ org_key?: {
++ calls: number;
++ /**
++ * The uncached input tokens.
++ */
++ input_tokens: number;
++ output_tokens: number;
++ /**
++ * The input tokens read from a provider cache.
++ */
++ cached_tokens: number;
++ /**
++ * The input tokens written to a provider cache.
++ */
++ cache_write_tokens: number;
++ /**
++ * What the tokens cost at list prices.
++ */
++ cost_usd: number;
++ fee_usd: number;
++ charged_usd: number;
++ /**
++ * What the cache saved against the plain input price.
++ */
++ saved_usd: number;
++ };
++ };
++ /**
++ * Two or three plain lines worked out from the numbers, one when the window has no calls; never an AI call.
++ */
++ insights: string[];
++ /**
++ * Which tables answered: raw records inside the 90-day retention, the roll-ups beyond it, or both.
++ */
++ source: "raw" | "rollups" | "raw+rollups";
++}
++
/** [email protected] (owner: bench) */
/**
* bench.benchmark@1: a versioned, forkable benchmark on OpenVibe.Bench (spec 2026-10-30, stage B1). It holds the tasks, the judges, how they combine into one score, the limits a run may not pass, the default model and harness matrix, and the visibility of the set. A version is immutable once a run names it; a fork records its parent. Holdout tasks are hidden from everyone but the executor.
ddiff --git a/package-lock.json b/package-lock.json
iindex 46599d17..b4b828c5 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.262.0",
++ "version": "0.263.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.262.0",
++ "version": "0.263.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 7476270f..e7f9d0e6 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.262.0",
++ "version": "0.263.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",