openvibers/openvibe.contracts Commits

0.379.0: measured provider circuit health and request error classes (#398)

OP OpenVibers committed 3 days ago · 5b11ec8964 · 55 files, +728 −103

* 0.379.0: measured provider circuit health and request error classes

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* 0.379.0: Exchange routing, request presets and generation contracts (#394)

* 0.379.0: Add Exchange routing, preset and generation contracts

* Reconcile Contracts 0.378 with Exchange schemas

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* Merge routing contracts and release version 0.380.0

* 0.380.0: blog.changelog-entry@2 for the tagged updates feed (#395)

* 0.380.0: blog.changelog-entry@2 for the tagged updates feed

One shipped change as the API shows it: plain words without the PR number
or stage tag, kind (new, better, fixed or internal), one to three areas
from Blog's fixed list, and the commit and pull request for the row's
fold. Valid and invalid fixtures cover the kind, the area list and the
plain-words rule; the generated bundle, types and OpenAPI name 0.380.0.

* Name the 0.378.0 and 0.379.0 entries the open PRs bring

The history test counts every minor to the current release; #393 and
#394 are the pending 0.378.0 and 0.379.0 contracts and their entries
reconcile at merge.

* Merge origin/main into rc-contracts-changelog-entry-v2

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* 0.379.0: Exchange routing, request presets and generation contracts (#394)

* 0.379.0: Add Exchange routing, preset and generation contracts

* Reconcile Contracts 0.378 with Exchange schemas

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* Merge routing contracts and release version 0.380.0

* Merge blog changelog contract for 0.381.0

* 0.379.0: Add the public exchange.market contract (#397)

* 0.381.0: Add public exchange market contract

* Keep market manifest aligned with existing CORS policy

* Merge main and use the next untagged Contracts version

* Cover empty market snapshots with stale metadata

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* 0.379.0: Exchange routing, request presets and generation contracts (#394)

* 0.379.0: Add Exchange routing, preset and generation contracts

* Reconcile Contracts 0.378 with Exchange schemas

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* Merge routing contracts and release version 0.380.0

* 0.380.0: blog.changelog-entry@2 for the tagged updates feed (#395)

* 0.380.0: blog.changelog-entry@2 for the tagged updates feed

One shipped change as the API shows it: plain words without the PR number
or stage tag, kind (new, better, fixed or internal), one to three areas
from Blog's fixed list, and the commit and pull request for the row's
fold. Valid and invalid fixtures cover the kind, the area list and the
plain-words rule; the generated bundle, types and OpenAPI name 0.380.0.

* Name the 0.378.0 and 0.379.0 entries the open PRs bring

The history test counts every minor to the current release; #393 and
#394 are the pending 0.378.0 and 0.379.0 contracts and their entries
reconcile at merge.

* Merge origin/main into rc-contracts-changelog-entry-v2

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* 0.379.0: Exchange routing, request presets and generation contracts (#394)

* 0.379.0: Add Exchange routing, preset and generation contracts

* Reconcile Contracts 0.378 with Exchange schemas

* 0.379.0: Wiki rich articles — blocks, image suggestions and the writer (#393)

* 0.378.0: Wiki rich article contracts (blocks, image suggestions, the writer)

* Merge origin/main into w1/contracts-wiki-blocks and bump 0.378.0

* Merge origin/main and bump to 0.379.0 (0.378.0 is the Link rename)

* Merge wiki rich article contracts for 0.379.0

* Merge routing contracts and release version 0.380.0

* Merge blog changelog contract for 0.381.0

* Merge exchange market contract for 0.382.0

* Merge provider health contracts for 0.383.0

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 094229b0..77b6ed0a 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,9 @@
# Changelog
++## 0.383.0 — 2026-11-09
++
++- `ai.provider@1`: measured per provider+model circuit health (status, failure class, plain reason and since when, retry/backoff, notify time); `ai.run-read-result@1`: `requests[].error_class`.
++
## 0.382.0 — 2026-11-09
- Add `exchange.market@1`: paginated own-page market offers, routing flags and per-field model metadata provenance.
ddiff --git a/README.md b/README.md
iindex 08d88d56..1e489ea3 100644
---- a/README.md
++++ b/README.md
@@@ -2,7 +2,7 @@
> Machine-readable contracts for the whole OpenVibe network.
--**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.382.0: 1193 schemas in `contracts/catalog.json`, 65 service manifests, 511 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).
++**Status:** alpha (first released in Wave 1; the release is package.json's `version`, tagged). At v0.383.0: 1193 schemas in `contracts/catalog.json`, 65 service manifests, 511 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin). `node scripts/docs-currency.js <root>` checks every checkout's README and `STATUS.json` against its code: the pins and versions they name, a library's consumer list, the deployed flag against the manifest, README links, and the paths and migrations they name. `node scripts/estate.js` generates `docs/ESTATE.md` and `manifests/repositories/` from the estate checkouts, and `--check` fails on drift (plan T1 step 3).
**Plan:** OpenVibe Development Roadmap, Wave 1 (implementation plan rev 3, §3.1 and §18.11).
**License:** AGPL-3.0 (same as every OpenVibe service).
ddiff --git a/contracts/ai/provider.v1.json b/contracts/ai/provider.v1.json
iindex 10b98771..7c1291f7 100644
---- a/contracts/ai/provider.v1.json
++++ b/contracts/ai/provider.v1.json
@@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/ai/provider.v1.json",
"title": "AiProvider",
-- "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the circuit-breaker health.",
++ "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the measured circuit-breaker health. health.state is the provider roll-up; health.circuits is one entry per provider+model offer, with the failure class and the plain reason.",
"type": "object",
"required": [
"key",
@@@ -139,6 +139,179 @@
},
"consecutive_failures": {
"type": "integer"
++ },
++ "model_key": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "The offer this circuit belongs to; absent on the provider roll-up."
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "Why the offer's circuit opened, or its last failure: balance, auth, rate_limit, transient or request."
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ],
++ "description": "The measured status: down while the circuit is open, degraded when over 5% of at least 10 requests in the last hour failed, up otherwise."
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "Plain words for a degraded or down offer: 'the provider says the account is out of credit', 'the key was refused' or 'too many errors in the last hour'."
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "When the current status began (ISO 8601)."
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "Epoch ms a half-open probe may run; after a failed probe the pause starts again."
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "The current transient backoff: 30 s doubling to 10 min. 0 for balance/auth."
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "exhausted_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_success_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_failure_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "notified_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "When the one owner alert for this open balance/auth circuit was sent; absent when none was sent."
++ },
++ "circuits": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "properties": {
++ "provider_key": {
++ "type": "string"
++ },
++ "model_key": {
++ "type": "string"
++ },
++ "state": {
++ "enum": [
++ "closed",
++ "open",
++ "half_open"
++ ]
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "consecutive_failures": {
++ "type": "integer"
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ]
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "last_error": {
++ "type": [
++ "string",
++ "null"
++ ]
++ }
++ }
++ },
++ "description": "One entry per provider+model circuit (server/providers/index.js, migrations/0057). A model without a failure of its own stays served while another model's circuit is open."
}
}
}
ddiff --git a/contracts/ai/run-read-result.v1.json b/contracts/ai/run-read-result.v1.json
iindex 5f6fc705..6063847b 100644
---- a/contracts/ai/run-read-result.v1.json
++++ b/contracts/ai/run-read-result.v1.json
@@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/ai/run-read-result.v1.json",
"title": "AiRunReadResult",
-- "description": "ai.run-read-result@1: answers of ai.run.read on OpenVibe.AI (the caller's own runs; usage readers may ask for all). GET /api/v1/runs?status=&workflow=&target=&limit=&before= → { runs }; GET /api/v1/runs/:id → { run, citations, requests } (the request log is metadata only: hashes, tokens, cost, latency, never prompts); GET /api/v1/runs/:id/citations → { citations }. Someone else's run is 404 run.not_found.",
++ "description": "ai.run-read-result@1: answers of ai.run.read on OpenVibe.AI (the caller's own runs; usage readers may ask for all). GET /api/v1/runs?status=&workflow=&target=&limit=&before= \u2192 { runs }; GET /api/v1/runs/:id \u2192 { run, citations, requests } (the request log is metadata only: hashes, tokens, cost, latency, never prompts); GET /api/v1/runs/:id/citations \u2192 { citations }. Someone else's run is 404 run.not_found.",
"anyOf": [
{
"type": "object",
@@@ -96,6 +96,21 @@
"integer",
"null"
]
++ },
++ "error_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "The class of a failed attempt (balance, auth, rate_limit, transient, request); the provider's message is in error, never the body."
}
}
}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 45b5053a..b642a84e 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -20149,7 +20149,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://openvibe.network/contracts/ai/provider.v1.json",
"title": "AiProvider",
-- "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the circuit-breaker health.",
++ "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the measured circuit-breaker health. health.state is the provider roll-up; health.circuits is one entry per provider+model offer, with the failure class and the plain reason.",
"type": "object",
"required": [
"key",
@@@ -20286,6 +20286,179 @@
},
"consecutive_failures": {
"type": "integer"
++ },
++ "model_key": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "The offer this circuit belongs to; absent on the provider roll-up."
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "Why the offer's circuit opened, or its last failure: balance, auth, rate_limit, transient or request."
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ],
++ "description": "The measured status: down while the circuit is open, degraded when over 5% of at least 10 requests in the last hour failed, up otherwise."
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "Plain words for a degraded or down offer: 'the provider says the account is out of credit', 'the key was refused' or 'too many errors in the last hour'."
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "When the current status began (ISO 8601)."
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "Epoch ms a half-open probe may run; after a failed probe the pause starts again."
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "The current transient backoff: 30 s doubling to 10 min. 0 for balance/auth."
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "exhausted_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_success_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_failure_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "notified_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "When the one owner alert for this open balance/auth circuit was sent; absent when none was sent."
++ },
++ "circuits": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "properties": {
++ "provider_key": {
++ "type": "string"
++ },
++ "model_key": {
++ "type": "string"
++ },
++ "state": {
++ "enum": [
++ "closed",
++ "open",
++ "half_open"
++ ]
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "consecutive_failures": {
++ "type": "integer"
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ]
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "last_error": {
++ "type": [
++ "string",
++ "null"
++ ]
++ }
++ }
++ },
++ "description": "One entry per provider+model circuit (server/providers/index.js, migrations/0057). A model without a failure of its own stays served while another model's circuit is open."
}
}
}
@@@ -21212,6 +21385,21 @@
"integer",
"null"
]
++ },
++ "error_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "The class of a failed attempt (balance, auth, rate_limit, transient, request); the provider's message is in error, never the body."
}
}
}
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex bbf3bbf5..462352c3 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.382.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 8498373d..e764ffe1 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.382.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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"
@@@ -7041,7 +7041,7 @@
},
"ai.provider.v1": {
"title": "AiProvider",
-- "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the circuit-breaker health.",
++ "description": "ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the measured circuit-breaker health. health.state is the provider roll-up; health.circuits is one entry per provider+model offer, with the failure class and the plain reason.",
"type": "object",
"required": [
"key",
@@@ -7178,6 +7178,179 @@
},
"consecutive_failures": {
"type": "integer"
++ },
++ "model_key": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "The offer this circuit belongs to; absent on the provider roll-up."
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "Why the offer's circuit opened, or its last failure: balance, auth, rate_limit, transient or request."
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ],
++ "description": "The measured status: down while the circuit is open, degraded when over 5% of at least 10 requests in the last hour failed, up otherwise."
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "Plain words for a degraded or down offer: 'the provider says the account is out of credit', 'the key was refused' or 'too many errors in the last hour'."
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "When the current status began (ISO 8601)."
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "Epoch ms a half-open probe may run; after a failed probe the pause starts again."
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "The current transient backoff: 30 s doubling to 10 min. 0 for balance/auth."
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "exhausted_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_success_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "last_failure_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "notified_at": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "description": "When the one owner alert for this open balance/auth circuit was sent; absent when none was sent."
++ },
++ "circuits": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "properties": {
++ "provider_key": {
++ "type": "string"
++ },
++ "model_key": {
++ "type": "string"
++ },
++ "state": {
++ "enum": [
++ "closed",
++ "open",
++ "half_open"
++ ]
++ },
++ "failure_class": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "consecutive_failures": {
++ "type": "integer"
++ },
++ "opened_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "retry_at": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "backoff_ms": {
++ "type": [
++ "integer",
++ "null"
++ ]
++ },
++ "status": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "up",
++ "degraded",
++ "down",
++ null
++ ]
++ },
++ "status_reason": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "status_since": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "last_error": {
++ "type": [
++ "string",
++ "null"
++ ]
++ }
++ }
++ },
++ "description": "One entry per provider+model circuit (server/providers/index.js, migrations/0057). A model without a failure of its own stays served while another model's circuit is open."
}
}
}
@@@ -7520,6 +7693,21 @@
"integer",
"null"
]
++ },
++ "error_class": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "enum": [
++ "balance",
++ "auth",
++ "rate_limit",
++ "transient",
++ "request",
++ null
++ ],
++ "description": "The class of a failed attempt (balance, auth, rate_limit, transient, request); the provider's message is in error, never the body."
}
}
}
ddiff --git a/generated/openapi/bench.json b/generated/openapi/bench.json
iindex 29ea1b2d..1591b22c 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.382.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 4774e82a..f9b311ef 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.382.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 09f11b6c..a2aa5f3d 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.382.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 56230871..1ea9fbac 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.382.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 ce055278..19e9b014 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.382.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 e2cfea69..519e354d 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.382.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 06099697..ed81586c 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.382.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/connect.json b/generated/openapi/connect.json
iindex fc4e6e20..86582c2b 100644
---- a/generated/openapi/connect.json
++++ b/generated/openapi/connect.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe Connect API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 284aad87..4774bb76 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.382.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 e7f58d47..6c5ac5a4 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.382.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/design.json b/generated/openapi/design.json
iindex 5b111669..4e7451f5 100644
---- a/generated/openapi/design.json
++++ b/generated/openapi/design.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Design API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 eb373bac..ed78ad23 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.382.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 dcedc367..23aff446 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.382.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/exchange.json b/generated/openapi/exchange.json
iindex 19b9980e..a0d0226d 100644
---- a/generated/openapi/exchange.json
++++ b/generated/openapi/exchange.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Exchange API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 a16093bf..3455f970 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.382.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 5598b789..65df5b9a 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.382.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/git.json b/generated/openapi/git.json
iindex 5beafb56..26890425 100644
---- a/generated/openapi/git.json
++++ b/generated/openapi/git.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Git API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Git as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 c1489039..c1a359cc 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.382.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 6f3ca185..f5236069 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.382.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 eb54be9b..6cd5d927 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.382.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/mail.json b/generated/openapi/mail.json
iindex 2797b051..d651c8f0 100644
---- a/generated/openapi/mail.json
++++ b/generated/openapi/mail.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Mail API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 8071fbc0..a8cfc7dc 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.382.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 4d21dd65..f1f95909 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.382.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 9c75ac2d..7fa50839 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.382.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 06b41936..dcce0267 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.382.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 0dbfc460..37cfd257 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.382.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 df9a8900..05aefaa5 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.382.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 28bc9580..0b7da812 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.382.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 3f786499..bc4d81d3 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.382.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 37fb40f1..9e85c62c 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.382.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 bbf3585c..520cb7cf 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.382.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 8fac197c..abc58f0a 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.382.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 a08e9750..1609adbe 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.382.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 382cac1f..9dd2673b 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.382.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 5f76184f..cac438fc 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.382.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 f9941b25..8f4de417 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.382.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
"license": {
"name": "MIT",
"identifier": "MIT"
ddiff --git a/generated/openapi/today.json b/generated/openapi/today.json
iindex 40de9961..34da8b66 100644
---- a/generated/openapi/today.json
++++ b/generated/openapi/today.json
@@@ -3,8 +3,8 @@
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
"info": {
"title": "OpenVibe.Today API",
-- "version": "0.382.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 1c06abdd..8fe503ae 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.382.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 fbf1fb59..7a26cc7a 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.382.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 a8bcddba..234699c2 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.382.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 98acca8b..9bd32d45 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.382.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 4ff2596b..eb41e8ba 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.382.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 99ea9b18..4c4e5d27 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.382.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 48343bd4..c702b5b2 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.382.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 78ec91ce..4c2e9195 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.382.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.382.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.383.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.383.0): each operation lists the capabilities it performs; a token for the 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 4fcb98a8..cab42b6c 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -163973,7 +163973,7 @@ export type AiProviderManageResult =
/** [email protected] (owner: ai) */
/**
-- * ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the circuit-breaker health.
++ * ai.provider@1: one model provider as OpenVibe.AI's registry API shows it (server/registry.js publicProvider): never a secret value, only the secret reference name (env:NAME) and whether it resolves (credentials), plus the measured circuit-breaker health. health.state is the provider roll-up; health.circuits is one entry per provider+model offer, with the failure class and the plain reason.
*/
export interface AiProvider {
key: string;
@@@ -164001,6 +164001,59 @@ export interface AiProvider {
provider_key?: string;
state?: "closed" | "open" | "half_open";
consecutive_failures?: number;
++ /**
++ * The offer this circuit belongs to; absent on the provider roll-up.
++ */
++ model_key?: string | null;
++ /**
++ * Why the offer's circuit opened, or its last failure: balance, auth, rate_limit, transient or request.
++ */
++ failure_class?: "balance" | "auth" | "rate_limit" | "transient" | "request" | null;
++ /**
++ * The measured status: down while the circuit is open, degraded when over 5% of at least 10 requests in the last hour failed, up otherwise.
++ */
++ status?: "up" | "degraded" | "down" | null;
++ /**
++ * Plain words for a degraded or down offer: 'the provider says the account is out of credit', 'the key was refused' or 'too many errors in the last hour'.
++ */
++ status_reason?: string | null;
++ /**
++ * When the current status began (ISO 8601).
++ */
++ status_since?: string | null;
++ /**
++ * Epoch ms a half-open probe may run; after a failed probe the pause starts again.
++ */
++ retry_at?: number | null;
++ /**
++ * The current transient backoff: 30 s doubling to 10 min. 0 for balance/auth.
++ */
++ backoff_ms?: number | null;
++ opened_at?: number | null;
++ exhausted_at?: number | null;
++ last_success_at?: number | null;
++ last_failure_at?: number | null;
++ /**
++ * When the one owner alert for this open balance/auth circuit was sent; absent when none was sent.
++ */
++ notified_at?: number | null;
++ /**
++ * One entry per provider+model circuit (server/providers/index.js, migrations/0057). A model without a failure of its own stays served while another model's circuit is open.
++ */
++ circuits?: {
++ provider_key?: string;
++ model_key?: string;
++ state?: "closed" | "open" | "half_open";
++ failure_class?: string | null;
++ consecutive_failures?: number;
++ opened_at?: number | null;
++ retry_at?: number | null;
++ backoff_ms?: number | null;
++ status?: "up" | "degraded" | "down" | null;
++ status_reason?: string | null;
++ status_since?: string | null;
++ last_error?: string | null;
++ }[];
} | null;
}
@@@ -164334,6 +164387,10 @@ export type AiRunReadResult =
tokens_out?: number | null;
cost_usd?: number | null;
latency_ms?: number | null;
++ /**
++ * The class of a failed attempt (balance, auth, rate_limit, transient, request); the provider's message is in error, never the body.
++ */
++ error_class?: "balance" | "auth" | "rate_limit" | "transient" | "request" | null;
}[];
}
| {
ddiff --git a/package-lock.json b/package-lock.json
iindex bd8b5ba6..b447c3f7 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.382.0",
++ "version": "0.383.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.382.0",
++ "version": "0.383.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 989ce08b..9bbf5c04 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.382.0",
++ "version": "0.383.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",