openvibers/openvibe.contracts Commits

Git contracts: git.repo@1, git.commit@1, git.tree@1, git.insights@1 (0.357.0) (#384)

OP OpenVibers committed 4 days ago · 26fd15aff6 · 66 files, +1578 −95

* Git contracts: repo, commit, tree and insights (0.357.0)

* 0.369.0: on top of main (OpenVibe Git: git.repo@1, git.commit@1, git.tree@1 and git.i)

Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex 2decb437..6c4699a4 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -1,5 +1,9 @@
# Changelog
++## 0.369.0 — 2026-11-09
++
++- OpenVibe Git: git.repo@1, git.commit@1, git.tree@1 and git.insights@1
++
## 0.368.0 — 2026-11-09
- The wallet and the reviewed store: billing.wallet@1, inventory.store@1, inventory.store-listing@1, inventory.purchase@1
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex 2aa1a214..23ca2797 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -10722,6 +10722,42 @@
"visibility": "public",
"compatibility": "backward",
"status": "active"
++ },
++ {
++ "id": "git.repo",
++ "version": "1.0.0",
++ "owner": "git",
++ "schema": "git/repo.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "git.commit",
++ "version": "1.0.0",
++ "owner": "git",
++ "schema": "git/commit.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "git.tree",
++ "version": "1.0.0",
++ "owner": "git",
++ "schema": "git/tree.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
++ },
++ {
++ "id": "git.insights",
++ "version": "1.0.0",
++ "owner": "git",
++ "schema": "git/insights.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active"
}
]
}
ddiff --git a/contracts/git/commit.v1.json b/contracts/git/commit.v1.json
nnew file mode 100644
iindex 00000000..360985d6
---- /dev/null
++++ b/contracts/git/commit.v1.json
@@@ -0,0 +1,75 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/commit.v1.json",
++ "title": "GitCommit",
++ "description": "One commit on OpenVibe.Git: its sha, message, author and committer, parents, tree, and — for the commit page or a contents write — its diff and per-file counts. api/view/commit.",
++ "type": "object",
++ "required": ["sha", "repo", "message", "author", "committer", "parents", "tree_sha", "date"],
++ "additionalProperties": false,
++ "properties": {
++ "sha": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$",
++ "description": "The commit id: 40 hex characters (SHA-1) or 64 (SHA-256)."
++ },
++ "repo": { "type": "string", "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$" },
++ "message": { "type": "string", "maxLength": 100000 },
++ "subject": { "type": "string", "maxLength": 500, "description": "The first line of the message." },
++ "author": {
++ "type": "object",
++ "required": ["name", "email", "date"],
++ "additionalProperties": false,
++ "properties": {
++ "name": { "type": "string" },
++ "email": { "type": "string" },
++ "username": { "type": ["string", "null"], "description": "The OpenVibe username when the email is a verified one." },
++ "date": { "type": "string", "format": "date-time" }
++ }
++ },
++ "committer": {
++ "type": "object",
++ "required": ["name", "email", "date"],
++ "additionalProperties": false,
++ "properties": {
++ "name": { "type": "string" },
++ "email": { "type": "string" },
++ "date": { "type": "string", "format": "date-time" }
++ }
++ },
++ "parents": {
++ "type": "array",
++ "maxItems": 2,
++ "items": { "type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$" }
++ },
++ "tree_sha": { "type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$" },
++ "date": { "type": "string", "format": "date-time" },
++ "stats": {
++ "type": ["object", "null"],
++ "required": ["files", "additions", "deletions"],
++ "additionalProperties": false,
++ "properties": {
++ "files": { "type": "integer", "minimum": 0 },
++ "additions": { "type": "integer", "minimum": 0 },
++ "deletions": { "type": "integer", "minimum": 0 }
++ }
++ },
++ "files": {
++ "type": "array",
++ "description": "The changed files, when the caller asked for the diff.",
++ "items": {
++ "type": "object",
++ "required": ["path", "status", "additions", "deletions"],
++ "additionalProperties": false,
++ "properties": {
++ "path": { "type": "string" },
++ "previous_path": { "type": ["string", "null"] },
++ "status": { "enum": ["added", "modified", "deleted", "renamed", "copied"] },
++ "additions": { "type": "integer", "minimum": 0 },
++ "deletions": { "type": "integer", "minimum": 0 },
++ "patch": { "type": ["string", "null"] }
++ }
++ }
++ },
++ "diff": { "type": ["string", "null"], "description": "The unified diff, when the caller asked for it." }
++ }
++}
ddiff --git a/contracts/git/insights.v1.json b/contracts/git/insights.v1.json
nnew file mode 100644
iindex 00000000..ce97ea4c
---- /dev/null
++++ b/contracts/git/insights.v1.json
@@@ -0,0 +1,54 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/insights.v1.json",
++ "title": "GitInsights",
++ "description": "A repository's insights over a window: views, unique visitors, clones and stars per day, and commits per week. Public for a public repository, like GitHub's traffic but open. api/view/insights.",
++ "type": "object",
++ "required": ["repo", "window_days", "views", "unique_visitors", "clones", "stars", "commits_per_week", "daily"],
++ "additionalProperties": false,
++ "properties": {
++ "repo": { "type": "string", "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$" },
++ "window_days": { "type": "integer", "minimum": 1, "maximum": 90 },
++ "views": { "type": "integer", "minimum": 0, "description": "Page views of the repository in the window." },
++ "unique_visitors": { "type": "integer", "minimum": 0, "description": "Distinct visitors per day, summed over the window." },
++ "clones": { "type": "integer", "minimum": 0, "description": "Successful git clones and fetches served in the window." },
++ "stars": {
++ "type": "object",
++ "required": ["total", "in_window"],
++ "additionalProperties": false,
++ "properties": {
++ "total": { "type": "integer", "minimum": 0 },
++ "in_window": { "type": "integer", "minimum": 0 }
++ }
++ },
++ "commits_per_week": {
++ "type": "array",
++ "description": "The default branch's commits for each ISO week, oldest first.",
++ "items": {
++ "type": "object",
++ "required": ["week", "commits"],
++ "additionalProperties": false,
++ "properties": {
++ "week": { "type": "string", "format": "date", "description": "The week's Monday, YYYY-MM-DD." },
++ "commits": { "type": "integer", "minimum": 0 }
++ }
++ }
++ },
++ "daily": {
++ "type": "array",
++ "description": "One row per day of the window, oldest first.",
++ "items": {
++ "type": "object",
++ "required": ["day", "views", "unique_visitors", "clones", "stars"],
++ "additionalProperties": false,
++ "properties": {
++ "day": { "type": "string", "format": "date" },
++ "views": { "type": "integer", "minimum": 0 },
++ "unique_visitors": { "type": "integer", "minimum": 0 },
++ "clones": { "type": "integer", "minimum": 0 },
++ "stars": { "type": "integer", "minimum": 0 }
++ }
++ }
++ }
++ }
++}
ddiff --git a/contracts/git/repo.v1.json b/contracts/git/repo.v1.json
nnew file mode 100644
iindex 00000000..552ecf19
---- /dev/null
++++ b/contracts/git/repo.v1.json
@@@ -0,0 +1,111 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/repo.v1.json",
++ "title": "GitRepository",
++ "description": "One repository on OpenVibe.Git (git.openvibe.codes): its owner, visibility, default branch, counts, and — when it has one — its GitHub mirror and the cached GitHub card. api/view/repo.",
++ "type": "object",
++ "required": [
++ "id",
++ "owner",
++ "name",
++ "full_name",
++ "description",
++ "visibility",
++ "default_branch",
++ "topics",
++ "stars",
++ "watchers",
++ "forks",
++ "language",
++ "html_url",
++ "clone_url",
++ "created_at",
++ "updated_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^repo_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The repository's own id (repo_<ULID>), stable across a rename."
++ },
++ "owner": {
++ "type": "object",
++ "required": ["username"],
++ "additionalProperties": false,
++ "properties": {
++ "username": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$",
++ "description": "The OpenVibe username that owns it, lower-case."
++ },
++ "subject": {
++ "type": ["string", "null"],
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The owner's Network subject; absent when the owner is the organisation account."
++ },
++ "display_name": { "type": ["string", "null"] },
++ "avatar_url": { "type": ["string", "null"], "format": "uri" }
++ }
++ },
++ "name": {
++ "type": "string",
++ "pattern": "^(?!.*\\.git$)[a-z0-9][a-z0-9._-]{0,99}$",
++ "description": "The repository name; lower-case, and never ending in .git."
++ },
++ "full_name": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}/(?!.*\\.git$)[a-z0-9][a-z0-9._-]{0,99}$",
++ "description": "<owner>/<name>, the name every API path and clone URL uses."
++ },
++ "description": { "type": "string", "maxLength": 500 },
++ "visibility": { "enum": ["public", "private"] },
++ "default_branch": { "type": "string", "minLength": 1, "maxLength": 255 },
++ "topics": {
++ "type": "array",
++ "maxItems": 20,
++ "items": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,34}$" }
++ },
++ "stars": { "type": "integer", "minimum": 0 },
++ "watchers": { "type": "integer", "minimum": 0 },
++ "forks": { "type": "integer", "minimum": 0 },
++ "language": { "type": ["string", "null"] },
++ "languages": {
++ "type": "object",
++ "description": "Language name → share of bytes, 0–100, the largest first.",
++ "additionalProperties": { "type": "number", "minimum": 0, "maximum": 100 }
++ },
++ "html_url": { "type": "string", "format": "uri" },
++ "clone_url": { "type": "string", "format": "uri" },
++ "mirror": {
++ "type": ["object", "null"],
++ "description": "A git repository mirrored from somewhere (today: a public GitHub URL).",
++ "required": ["url", "state", "last_synced_at", "error"],
++ "additionalProperties": false,
++ "properties": {
++ "url": { "type": "string", "format": "uri" },
++ "state": { "enum": ["ready", "syncing", "error"] },
++ "last_synced_at": { "type": ["string", "null"], "format": "date-time" },
++ "error": { "type": ["string", "null"], "maxLength": 500 }
++ }
++ },
++ "github": {
++ "type": ["object", "null"],
++ "description": "The GitHub card: cached GitHub API readings for the repository's twin.",
++ "required": ["full_name", "html_url", "stars", "open_issues", "open_pull_requests", "ci_state", "fetched_at"],
++ "additionalProperties": false,
++ "properties": {
++ "full_name": { "type": "string" },
++ "html_url": { "type": "string", "format": "uri" },
++ "stars": { "type": "integer", "minimum": 0 },
++ "open_issues": { "type": "integer", "minimum": 0 },
++ "open_pull_requests": { "type": "integer", "minimum": 0 },
++ "ci_state": { "enum": ["success", "failure", "pending", "unknown"] },
++ "fetched_at": { "type": "string", "format": "date-time" }
++ }
++ },
++ "created_at": { "type": "string", "format": "date-time" },
++ "updated_at": { "type": "string", "format": "date-time" },
++ "pushed_at": { "type": ["string", "null"], "format": "date-time" }
++ }
++}
ddiff --git a/contracts/git/tree.v1.json b/contracts/git/tree.v1.json
nnew file mode 100644
iindex 00000000..2308affe
---- /dev/null
++++ b/contracts/git/tree.v1.json
@@@ -0,0 +1,41 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/tree.v1.json",
++ "title": "GitTree",
++ "description": "One directory of a repository at a ref: its entries with mode, size and the last commit that touched each. api/view/tree.",
++ "type": "object",
++ "required": ["repo", "ref", "path", "entries"],
++ "additionalProperties": false,
++ "properties": {
++ "repo": { "type": "string", "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$" },
++ "ref": { "type": "string", "minLength": 1, "maxLength": 255, "description": "The branch, tag or commit the tree was read at." },
++ "path": { "type": "string", "maxLength": 4096, "description": "The directory, empty at the repository root." },
++ "entries": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "required": ["name", "path", "type", "mode", "sha"],
++ "additionalProperties": false,
++ "properties": {
++ "name": { "type": "string" },
++ "path": { "type": "string" },
++ "type": { "enum": ["blob", "tree", "commit"] },
++ "mode": { "type": "string", "pattern": "^[0-7]{6}$" },
++ "sha": { "type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$" },
++ "size": { "type": ["integer", "null"], "minimum": 0 },
++ "last_commit": {
++ "type": ["object", "null"],
++ "required": ["sha", "message", "date", "author_name"],
++ "additionalProperties": false,
++ "properties": {
++ "sha": { "type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$" },
++ "message": { "type": "string", "maxLength": 500 },
++ "date": { "type": "string", "format": "date-time" },
++ "author_name": { "type": "string" }
++ }
++ }
++ }
++ }
++ }
++ }
++}
ddiff --git a/fixtures/git.commit/invalid/bad-sha-and-repo.json b/fixtures/git.commit/invalid/bad-sha-and-repo.json
nnew file mode 100644
iindex 00000000..1606cfdd
---- /dev/null
++++ b/fixtures/git.commit/invalid/bad-sha-and-repo.json
@@@ -0,0 +1,10 @@
++{
++ "sha": "4f0c2d9a1e8b7c6d5a4f3e2d1c0b9a8f7e6d5c4b",
++ "repo": "openviber",
++ "message": "not a repo name",
++ "author": { "name": "", "email": "[email protected]", "date": "yesterday" },
++ "committer": { "name": "Sam", "email": "[email protected]", "date": "2026-11-09T08:40:00Z" },
++ "parents": [],
++ "tree_sha": "xyz",
++ "date": "2026-11-09T08:40:00Z"
++}
ddiff --git a/fixtures/git.commit/valid/with-diff.json b/fixtures/git.commit/valid/with-diff.json
nnew file mode 100644
iindex 00000000..48411f1b
---- /dev/null
++++ b/fixtures/git.commit/valid/with-diff.json
@@@ -0,0 +1,17 @@
++{
++ "sha": "4f0c2d9a1e8b7c6d5a4f3e2d1c0b9a8f7e6d5c4b",
++ "repo": "openvibers/openvibe.codes",
++ "message": "Open the desk from a phone\n\nA narrow layout and a bigger tap target.",
++ "subject": "Open the desk from a phone",
++ "author": { "name": "Sam", "email": "[email protected]", "username": "sam", "date": "2026-11-09T08:40:00Z" },
++ "committer": { "name": "Sam", "email": "[email protected]", "date": "2026-11-09T08:40:00Z" },
++ "parents": ["a1b2c3d4e5f60718293a4b5c6d7e8f9012345678"],
++ "tree_sha": "b2c3d4e5f60718293a4b5c6d7e8f901234567890",
++ "date": "2026-11-09T08:40:00Z",
++ "stats": { "files": 2, "additions": 34, "deletions": 6 },
++ "files": [
++ { "path": "public/css/codes.css", "previous_path": null, "status": "modified", "additions": 30, "deletions": 6, "patch": "@@ -12,3 +12,27 @@\n .desk { display: grid; }\n" },
++ { "path": "test/phone.test.js", "previous_path": null, "status": "added", "additions": 4, "deletions": 0, "patch": null }
++ ],
++ "diff": "diff --git a/public/css/codes.css b/public/css/codes.css\n"
++}
ddiff --git a/fixtures/git.insights/invalid/window-and-negative.json b/fixtures/git.insights/invalid/window-and-negative.json
nnew file mode 100644
iindex 00000000..842ba96a
---- /dev/null
++++ b/fixtures/git.insights/invalid/window-and-negative.json
@@@ -0,0 +1,10 @@
++{
++ "repo": "openvibers/openvibe.codes",
++ "window_days": 400,
++ "views": -1,
++ "unique_visitors": 0,
++ "clones": 0,
++ "stars": { "total": 0, "in_window": 0 },
++ "commits_per_week": [],
++ "daily": [{ "day": "2026-11-09", "views": 0, "unique_visitors": 0, "clones": 0, "stars": 0, "bots": 1 }]
++}
ddiff --git a/fixtures/git.insights/valid/full.json b/fixtures/git.insights/valid/full.json
nnew file mode 100644
iindex 00000000..94ae9f76
---- /dev/null
++++ b/fixtures/git.insights/valid/full.json
@@@ -0,0 +1,17 @@
++{
++ "repo": "openvibers/openvibe.codes",
++ "window_days": 30,
++ "views": 2841,
++ "unique_visitors": 412,
++ "clones": 190,
++ "stars": { "total": 12, "in_window": 3 },
++ "commits_per_week": [
++ { "week": "2026-10-19", "commits": 18 },
++ { "week": "2026-10-26", "commits": 27 },
++ { "week": "2026-11-02", "commits": 31 }
++ ],
++ "daily": [
++ { "day": "2026-11-08", "views": 121, "unique_visitors": 18, "clones": 9, "stars": 1 },
++ { "day": "2026-11-09", "views": 96, "unique_visitors": 14, "clones": 7, "stars": 0 }
++ ]
++}
ddiff --git a/fixtures/git.repo/invalid/name-ends-with-git.json b/fixtures/git.repo/invalid/name-ends-with-git.json
nnew file mode 100644
iindex 00000000..1ddd792f
---- /dev/null
++++ b/fixtures/git.repo/invalid/name-ends-with-git.json
@@@ -0,0 +1,18 @@
++{
++ "id": "repo_01JQZ8M4T7Y2N5K3B6V9C1X0DA",
++ "owner": { "username": "openvibers" },
++ "name": "openvibe.codes.git",
++ "full_name": "openvibers/openvibe.codes.git",
++ "description": "A name ending in .git is refused.",
++ "visibility": "public",
++ "default_branch": "main",
++ "topics": [],
++ "stars": 0,
++ "watchers": 1,
++ "forks": 0,
++ "language": null,
++ "html_url": "https://git.openvibe.codes/openvibers/openvibe.codes.git",
++ "clone_url": "https://git.openvibe.codes/openvibers/openvibe.codes.git.git",
++ "created_at": "2026-11-09T09:00:00Z",
++ "updated_at": "2026-11-09T09:00:00Z"
++}
ddiff --git a/fixtures/git.repo/invalid/visibility-and-stars.json b/fixtures/git.repo/invalid/visibility-and-stars.json
nnew file mode 100644
iindex 00000000..d20e1c6d
---- /dev/null
++++ b/fixtures/git.repo/invalid/visibility-and-stars.json
@@@ -0,0 +1,18 @@
++{
++ "id": "repo_01JQZ8M4T7Y2N5K3B6V9C1X0DA",
++ "owner": { "username": "openvibers" },
++ "name": "openvibe.codes",
++ "full_name": "openvibers/openvibe.codes",
++ "description": "",
++ "visibility": "secret",
++ "default_branch": "main",
++ "topics": [],
++ "stars": -1,
++ "watchers": 0,
++ "forks": 0,
++ "language": null,
++ "html_url": "https://git.openvibe.codes/openvibers/openvibe.codes",
++ "clone_url": "https://git.openvibe.codes/openvibers/openvibe.codes.git",
++ "created_at": "2026-11-09T09:00:00Z",
++ "updated_at": "2026-11-09T09:00:00Z"
++}
ddiff --git a/fixtures/git.repo/valid/full.json b/fixtures/git.repo/valid/full.json
nnew file mode 100644
iindex 00000000..598e2827
---- /dev/null
++++ b/fixtures/git.repo/valid/full.json
@@@ -0,0 +1,22 @@
++{
++ "id": "repo_01JQZ8M4T7Y2N5K3B6V9C1X0DA",
++ "owner": { "username": "openvibers", "subject": "usr_01JQZ8M4T7Y2N5K3B6V9C1X0DB", "display_name": "OpenVibers", "avatar_url": "https://openvibe.media/o/med_01JQZ8M4T7Y2N5K3B6V9C1X0DC" },
++ "name": "openvibe.codes",
++ "full_name": "openvibers/openvibe.codes",
++ "description": "Chat with coding agents on your own computers or a cloud desk.",
++ "visibility": "public",
++ "default_branch": "main",
++ "topics": ["agents", "codes"],
++ "stars": 12,
++ "watchers": 4,
++ "forks": 1,
++ "language": "JavaScript",
++ "languages": { "JavaScript": 72.4, "CSS": 19.1, "Shell": 8.5 },
++ "html_url": "https://git.openvibe.codes/openvibers/openvibe.codes",
++ "clone_url": "https://git.openvibe.codes/openvibers/openvibe.codes.git",
++ "mirror": { "url": "https://github.com/OpenVibers/OpenVibe.Codes.git", "state": "ready", "last_synced_at": "2026-11-09T08:47:55Z", "error": null },
++ "github": { "full_name": "OpenVibers/OpenVibe.Codes", "html_url": "https://github.com/OpenVibers/OpenVibe.Codes", "stars": 42, "open_issues": 3, "open_pull_requests": 2, "ci_state": "success", "fetched_at": "2026-11-09T09:00:00Z" },
++ "created_at": "2026-10-15T19:43:04Z",
++ "updated_at": "2026-11-09T08:47:55Z",
++ "pushed_at": "2026-11-09T08:40:00Z"
++}
ddiff --git a/fixtures/git.repo/valid/private.json b/fixtures/git.repo/valid/private.json
nnew file mode 100644
iindex 00000000..e3e5249f
---- /dev/null
++++ b/fixtures/git.repo/valid/private.json
@@@ -0,0 +1,22 @@
++{
++ "id": "repo_01JQZ8M4T7Y2N5K3B6V9C1X0DA",
++ "owner": { "username": "openvibers", "subject": null, "display_name": null, "avatar_url": null },
++ "name": "private-notes",
++ "full_name": "openvibers/private-notes",
++ "description": "",
++ "visibility": "private",
++ "default_branch": "main",
++ "topics": [],
++ "stars": 0,
++ "watchers": 1,
++ "forks": 0,
++ "language": null,
++ "languages": {},
++ "html_url": "https://git.openvibe.codes/openvibers/private-notes",
++ "clone_url": "https://git.openvibe.codes/openvibers/private-notes.git",
++ "mirror": null,
++ "github": null,
++ "created_at": "2026-11-09T09:00:00Z",
++ "updated_at": "2026-11-09T09:00:00Z",
++ "pushed_at": null
++}
ddiff --git a/fixtures/git.tree/invalid/bad-type-and-size.json b/fixtures/git.tree/invalid/bad-type-and-size.json
nnew file mode 100644
iindex 00000000..f142576d
---- /dev/null
++++ b/fixtures/git.tree/invalid/bad-type-and-size.json
@@@ -0,0 +1,8 @@
++{
++ "repo": "openvibers/openvibe.codes",
++ "ref": "main",
++ "path": "",
++ "entries": [
++ { "name": "server", "path": "server", "type": "directory", "mode": "040000", "sha": "c3d4e5f60718293a4b5c6d7e8f90123456789012", "size": -2, "last_commit": null }
++ ]
++}
ddiff --git a/fixtures/git.tree/valid/root.json b/fixtures/git.tree/valid/root.json
nnew file mode 100644
iindex 00000000..4c8fcaad
---- /dev/null
++++ b/fixtures/git.tree/valid/root.json
@@@ -0,0 +1,9 @@
++{
++ "repo": "openvibers/openvibe.codes",
++ "ref": "main",
++ "path": "",
++ "entries": [
++ { "name": "server", "path": "server", "type": "tree", "mode": "040000", "sha": "c3d4e5f60718293a4b5c6d7e8f90123456789012", "size": null, "last_commit": { "sha": "4f0c2d9a1e8b7c6d5a4f3e2d1c0b9a8f7e6d5c4b", "message": "Open the desk from a phone", "date": "2026-11-09T08:40:00Z", "author_name": "Sam" } },
++ { "name": "README.md", "path": "README.md", "type": "blob", "mode": "100644", "sha": "d4e5f60718293a4b5c6d7e8f9012345678901234", "size": 1421, "last_commit": null }
++ ]
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 0052552b..0631a30c 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -117766,6 +117766,679 @@
"status"
]
}
++ },
++ "git.repo": {
++ "version": "1.0.0",
++ "owner": "git",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/repo.v1.json",
++ "title": "GitRepository",
++ "description": "One repository on OpenVibe.Git (git.openvibe.codes): its owner, visibility, default branch, counts, and — when it has one — its GitHub mirror and the cached GitHub card. api/view/repo.",
++ "type": "object",
++ "required": [
++ "id",
++ "owner",
++ "name",
++ "full_name",
++ "description",
++ "visibility",
++ "default_branch",
++ "topics",
++ "stars",
++ "watchers",
++ "forks",
++ "language",
++ "html_url",
++ "clone_url",
++ "created_at",
++ "updated_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "id": {
++ "type": "string",
++ "pattern": "^repo_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The repository's own id (repo_<ULID>), stable across a rename."
++ },
++ "owner": {
++ "type": "object",
++ "required": [
++ "username"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "username": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$",
++ "description": "The OpenVibe username that owns it, lower-case."
++ },
++ "subject": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "pattern": "^usr_[0-9A-HJKMNP-TV-Z]{26}$",
++ "description": "The owner's Network subject; absent when the owner is the organisation account."
++ },
++ "display_name": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "avatar_url": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "uri"
++ }
++ }
++ },
++ "name": {
++ "type": "string",
++ "pattern": "^(?!.*\\.git$)[a-z0-9][a-z0-9._-]{0,99}$",
++ "description": "The repository name; lower-case, and never ending in .git."
++ },
++ "full_name": {
++ "type": "string",
++ "pattern": "^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}/(?!.*\\.git$)[a-z0-9][a-z0-9._-]{0,99}$",
++ "description": "<owner>/<name>, the name every API path and clone URL uses."
++ },
++ "description": {
++ "type": "string",
++ "maxLength": 500
++ },
++ "visibility": {
++ "enum": [
++ "public",
++ "private"
++ ]
++ },
++ "default_branch": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 255
++ },
++ "topics": {
++ "type": "array",
++ "maxItems": 20,
++ "items": {
++ "type": "string",
++ "pattern": "^[a-z0-9][a-z0-9-]{0,34}$"
++ }
++ },
++ "stars": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "watchers": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "forks": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "language": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "languages": {
++ "type": "object",
++ "description": "Language name → share of bytes, 0–100, the largest first.",
++ "additionalProperties": {
++ "type": "number",
++ "minimum": 0,
++ "maximum": 100
++ }
++ },
++ "html_url": {
++ "type": "string",
++ "format": "uri"
++ },
++ "clone_url": {
++ "type": "string",
++ "format": "uri"
++ },
++ "mirror": {
++ "type": [
++ "object",
++ "null"
++ ],
++ "description": "A git repository mirrored from somewhere (today: a public GitHub URL).",
++ "required": [
++ "url",
++ "state",
++ "last_synced_at",
++ "error"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "url": {
++ "type": "string",
++ "format": "uri"
++ },
++ "state": {
++ "enum": [
++ "ready",
++ "syncing",
++ "error"
++ ]
++ },
++ "last_synced_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ },
++ "error": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "maxLength": 500
++ }
++ }
++ },
++ "github": {
++ "type": [
++ "object",
++ "null"
++ ],
++ "description": "The GitHub card: cached GitHub API readings for the repository's twin.",
++ "required": [
++ "full_name",
++ "html_url",
++ "stars",
++ "open_issues",
++ "open_pull_requests",
++ "ci_state",
++ "fetched_at"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "full_name": {
++ "type": "string"
++ },
++ "html_url": {
++ "type": "string",
++ "format": "uri"
++ },
++ "stars": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "open_issues": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "open_pull_requests": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "ci_state": {
++ "enum": [
++ "success",
++ "failure",
++ "pending",
++ "unknown"
++ ]
++ },
++ "fetched_at": {
++ "type": "string",
++ "format": "date-time"
++ }
++ }
++ },
++ "created_at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "updated_at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "pushed_at": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "format": "date-time"
++ }
++ }
++ }
++ },
++ "git.commit": {
++ "version": "1.0.0",
++ "owner": "git",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/commit.v1.json",
++ "title": "GitCommit",
++ "description": "One commit on OpenVibe.Git: its sha, message, author and committer, parents, tree, and — for the commit page or a contents write — its diff and per-file counts. api/view/commit.",
++ "type": "object",
++ "required": [
++ "sha",
++ "repo",
++ "message",
++ "author",
++ "committer",
++ "parents",
++ "tree_sha",
++ "date"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "sha": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$",
++ "description": "The commit id: 40 hex characters (SHA-1) or 64 (SHA-256)."
++ },
++ "repo": {
++ "type": "string",
++ "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$"
++ },
++ "message": {
++ "type": "string",
++ "maxLength": 100000
++ },
++ "subject": {
++ "type": "string",
++ "maxLength": 500,
++ "description": "The first line of the message."
++ },
++ "author": {
++ "type": "object",
++ "required": [
++ "name",
++ "email",
++ "date"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "name": {
++ "type": "string"
++ },
++ "email": {
++ "type": "string"
++ },
++ "username": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "The OpenVibe username when the email is a verified one."
++ },
++ "date": {
++ "type": "string",
++ "format": "date-time"
++ }
++ }
++ },
++ "committer": {
++ "type": "object",
++ "required": [
++ "name",
++ "email",
++ "date"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "name": {
++ "type": "string"
++ },
++ "email": {
++ "type": "string"
++ },
++ "date": {
++ "type": "string",
++ "format": "date-time"
++ }
++ }
++ },
++ "parents": {
++ "type": "array",
++ "maxItems": 2,
++ "items": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"
++ }
++ },
++ "tree_sha": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"
++ },
++ "date": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "stats": {
++ "type": [
++ "object",
++ "null"
++ ],
++ "required": [
++ "files",
++ "additions",
++ "deletions"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "files": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "additions": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "deletions": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ },
++ "files": {
++ "type": "array",
++ "description": "The changed files, when the caller asked for the diff.",
++ "items": {
++ "type": "object",
++ "required": [
++ "path",
++ "status",
++ "additions",
++ "deletions"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "path": {
++ "type": "string"
++ },
++ "previous_path": {
++ "type": [
++ "string",
++ "null"
++ ]
++ },
++ "status": {
++ "enum": [
++ "added",
++ "modified",
++ "deleted",
++ "renamed",
++ "copied"
++ ]
++ },
++ "additions": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "deletions": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "patch": {
++ "type": [
++ "string",
++ "null"
++ ]
++ }
++ }
++ }
++ },
++ "diff": {
++ "type": [
++ "string",
++ "null"
++ ],
++ "description": "The unified diff, when the caller asked for it."
++ }
++ }
++ }
++ },
++ "git.tree": {
++ "version": "1.0.0",
++ "owner": "git",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/tree.v1.json",
++ "title": "GitTree",
++ "description": "One directory of a repository at a ref: its entries with mode, size and the last commit that touched each. api/view/tree.",
++ "type": "object",
++ "required": [
++ "repo",
++ "ref",
++ "path",
++ "entries"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "repo": {
++ "type": "string",
++ "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$"
++ },
++ "ref": {
++ "type": "string",
++ "minLength": 1,
++ "maxLength": 255,
++ "description": "The branch, tag or commit the tree was read at."
++ },
++ "path": {
++ "type": "string",
++ "maxLength": 4096,
++ "description": "The directory, empty at the repository root."
++ },
++ "entries": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "required": [
++ "name",
++ "path",
++ "type",
++ "mode",
++ "sha"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "name": {
++ "type": "string"
++ },
++ "path": {
++ "type": "string"
++ },
++ "type": {
++ "enum": [
++ "blob",
++ "tree",
++ "commit"
++ ]
++ },
++ "mode": {
++ "type": "string",
++ "pattern": "^[0-7]{6}$"
++ },
++ "sha": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"
++ },
++ "size": {
++ "type": [
++ "integer",
++ "null"
++ ],
++ "minimum": 0
++ },
++ "last_commit": {
++ "type": [
++ "object",
++ "null"
++ ],
++ "required": [
++ "sha",
++ "message",
++ "date",
++ "author_name"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "sha": {
++ "type": "string",
++ "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"
++ },
++ "message": {
++ "type": "string",
++ "maxLength": 500
++ },
++ "date": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "author_name": {
++ "type": "string"
++ }
++ }
++ }
++ }
++ }
++ }
++ }
++ }
++ },
++ "git.insights": {
++ "version": "1.0.0",
++ "owner": "git",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/git/insights.v1.json",
++ "title": "GitInsights",
++ "description": "A repository's insights over a window: views, unique visitors, clones and stars per day, and commits per week. Public for a public repository, like GitHub's traffic but open. api/view/insights.",
++ "type": "object",
++ "required": [
++ "repo",
++ "window_days",
++ "views",
++ "unique_visitors",
++ "clones",
++ "stars",
++ "commits_per_week",
++ "daily"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "repo": {
++ "type": "string",
++ "pattern": "^[a-z0-9-]+/[a-z0-9][a-z0-9._-]{0,99}$"
++ },
++ "window_days": {
++ "type": "integer",
++ "minimum": 1,
++ "maximum": 90
++ },
++ "views": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "Page views of the repository in the window."
++ },
++ "unique_visitors": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "Distinct visitors per day, summed over the window."
++ },
++ "clones": {
++ "type": "integer",
++ "minimum": 0,
++ "description": "Successful git clones and fetches served in the window."
++ },
++ "stars": {
++ "type": "object",
++ "required": [
++ "total",
++ "in_window"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "total": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "in_window": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ },
++ "commits_per_week": {
++ "type": "array",
++ "description": "The default branch's commits for each ISO week, oldest first.",
++ "items": {
++ "type": "object",
++ "required": [
++ "week",
++ "commits"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "week": {
++ "type": "string",
++ "format": "date",
++ "description": "The week's Monday, YYYY-MM-DD."
++ },
++ "commits": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ }
++ },
++ "daily": {
++ "type": "array",
++ "description": "One row per day of the window, oldest first.",
++ "items": {
++ "type": "object",
++ "required": [
++ "day",
++ "views",
++ "unique_visitors",
++ "clones",
++ "stars"
++ ],
++ "additionalProperties": false,
++ "properties": {
++ "day": {
++ "type": "string",
++ "format": "date"
++ },
++ "views": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "unique_visitors": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "clones": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "stars": {
++ "type": "integer",
++ "minimum": 0
++ }
++ }
++ }
++ }
++ }
++ }
}
}
}
ddiff --git a/generated/openapi/actor.json b/generated/openapi/actor.json
iindex 09e52a69..ed2a21c2 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.368.0",
-- "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Actor as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 60cb5e93..b20be791 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.368.0",
-- "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.AI as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 1cfba8d9..db5b1777 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.368.0",
-- "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Bench as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 813333ee..f7f7b2fe 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.368.0",
-- "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Billing as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 a3a1cebc..986d6f65 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.368.0",
-- "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Blog as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 a084b0c2..dd096ebe 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.368.0",
-- "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Bot as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 96365dce..4c2cf30d 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.368.0",
-- "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Chat as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 906e0aed..809a9680 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.368.0",
-- "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Codes as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 4ce80605..c6f56223 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.368.0",
-- "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Community as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 9ea13101..4335023a 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.368.0",
-- "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe Connect as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 3171e69f..7eb243a8 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.368.0",
-- "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Coupons as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 d6218569..6be1cdbe 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.368.0",
-- "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Deals as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 1436f6fd..f2cbc9e2 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.368.0",
-- "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Design as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 d79e4424..d4bbcf8b 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.368.0",
-- "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Domains as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 8ea3163d..d4829b1e 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.368.0",
-- "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Events as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 fce98c25..7fd24366 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.368.0",
-- "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Exchange as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 13fc7e73..84ebfcce 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.368.0",
-- "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Food as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 edc5ee84..0544dddb 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.368.0",
-- "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Games as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 9c3ce705..41155bf0 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.368.0",
-- "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Host as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 ac9b817d..56166025 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.368.0",
-- "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Inventory as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 00ea4c82..3a2fd5cd 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.368.0",
-- "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Live as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 defdf8f5..b587f4e0 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.368.0",
-- "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Mail as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 5e14eef0..945444fb 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.368.0",
-- "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.MediaHub as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 9904f8e6..acfcf475 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.368.0",
-- "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Media as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 7ec2b02a..8fb41102 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.368.0",
-- "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Network as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 6de5fef8..f9cbc48b 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.368.0",
-- "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.News as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 c2509d42..f78d9340 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.368.0",
-- "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenRestream as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 4a84b361..9fda9458 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.368.0",
-- "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Play as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 8cf51793..76ea2d83 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.368.0",
-- "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Quest as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 1544d521..312c1042 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.368.0",
-- "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Report as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 92e3c0b1..a21fda90 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.368.0",
-- "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Reviews as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 42db9042..dd48326a 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.368.0",
-- "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Run as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 1cd0d469..91c1919f 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.368.0",
-- "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Search as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 6c9a215b..6b86badf 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.368.0",
-- "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Services as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 d455d6ab..8295a677 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.368.0",
-- "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Sources as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 48460cee..99a8560c 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.368.0",
-- "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Space as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 a83ac22c..d2098e1e 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.368.0",
-- "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Tips as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 e3fa2ce6..9923d718 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.368.0",
-- "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Today as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 f41f0625..973ddae7 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.368.0",
-- "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Tools as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 25b20bc3..263b487d 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.368.0",
-- "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Trade as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 ffae7a0d..23b1b05d 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.368.0",
-- "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.VIP as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 569dc77b..28694f30 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.368.0",
-- "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Vision as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 44eac41a..5cd70386 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.368.0",
-- "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Watch as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 a7a8403c..8556f73f 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.368.0",
-- "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Wiki as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 f80cea77..30b69c5b 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.368.0",
-- "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Work as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 7ca180b5..59461383 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.368.0",
-- "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.368.0): each operation lists the capabilities it performs; a token for the service's audience must carry one of them unless the route is open. Generated by openvibe-contracts lib/openapi.js; do not edit.",
++ "version": "0.369.0",
++ "description": "Routes of OpenVibe.Zone as the OpenVibe contracts describe them (openvibe-contracts 0.369.0): each operation lists the capabilities it performs; a token for the 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 626bf50f..b2d1213f 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -322037,3 +322037,341 @@ export interface InventoryStoreListing {
};
status: "in_review" | "published" | "rejected";
}
++
++/** [email protected] (owner: git) */
++/**
++ * One repository on OpenVibe.Git (git.openvibe.codes): its owner, visibility, default branch, counts, and — when it has one — its GitHub mirror and the cached GitHub card. api/view/repo.
++ */
++export interface GitRepository {
++ /**
++ * The repository's own id (repo_<ULID>), stable across a rename.
++ */
++ id: string;
++ owner: {
++ /**
++ * The OpenVibe username that owns it, lower-case.
++ */
++ username: string;
++ /**
++ * The owner's Network subject; absent when the owner is the organisation account.
++ */
++ subject?: string | null;
++ display_name?: string | null;
++ avatar_url?: string | null;
++ };
++ /**
++ * The repository name; lower-case, and never ending in .git.
++ */
++ name: string;
++ /**
++ * <owner>/<name>, the name every API path and clone URL uses.
++ */
++ full_name: string;
++ description: string;
++ visibility: "public" | "private";
++ default_branch: string;
++ /**
++ * @maxItems 20
++ */
++ topics:
++ | []
++ | [string]
++ | [string, string]
++ | [string, string, string]
++ | [string, string, string, string]
++ | [string, string, string, string, string]
++ | [string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [string, string, string, string, string, string, string, string, string, string, string, string, string, string]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ]
++ | [
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string,
++ string
++ ];
++ stars: number;
++ watchers: number;
++ forks: number;
++ language: string | null;
++ /**
++ * Language name → share of bytes, 0–100, the largest first.
++ */
++ languages?: {
++ [k: string]: number | undefined;
++ };
++ html_url: string;
++ clone_url: string;
++ /**
++ * A git repository mirrored from somewhere (today: a public GitHub URL).
++ */
++ mirror?: {
++ url: string;
++ state: "ready" | "syncing" | "error";
++ last_synced_at: string | null;
++ error: string | null;
++ } | null;
++ /**
++ * The GitHub card: cached GitHub API readings for the repository's twin.
++ */
++ github?: {
++ full_name: string;
++ html_url: string;
++ stars: number;
++ open_issues: number;
++ open_pull_requests: number;
++ ci_state: "success" | "failure" | "pending" | "unknown";
++ fetched_at: string;
++ } | null;
++ created_at: string;
++ updated_at: string;
++ pushed_at?: string | null;
++}
++
++/** [email protected] (owner: git) */
++/**
++ * One commit on OpenVibe.Git: its sha, message, author and committer, parents, tree, and — for the commit page or a contents write — its diff and per-file counts. api/view/commit.
++ */
++export interface GitCommit {
++ /**
++ * The commit id: 40 hex characters (SHA-1) or 64 (SHA-256).
++ */
++ sha: string;
++ repo: string;
++ message: string;
++ /**
++ * The first line of the message.
++ */
++ subject?: string;
++ author: {
++ name: string;
++ email: string;
++ /**
++ * The OpenVibe username when the email is a verified one.
++ */
++ username?: string | null;
++ date: string;
++ };
++ committer: {
++ name: string;
++ email: string;
++ date: string;
++ };
++ /**
++ * @maxItems 2
++ */
++ parents: [] | [string] | [string, string];
++ tree_sha: string;
++ date: string;
++ stats?: {
++ files: number;
++ additions: number;
++ deletions: number;
++ } | null;
++ /**
++ * The changed files, when the caller asked for the diff.
++ */
++ files?: {
++ path: string;
++ previous_path?: string | null;
++ status: "added" | "modified" | "deleted" | "renamed" | "copied";
++ additions: number;
++ deletions: number;
++ patch?: string | null;
++ }[];
++ /**
++ * The unified diff, when the caller asked for it.
++ */
++ diff?: string | null;
++}
++
++/** [email protected] (owner: git) */
++/**
++ * One directory of a repository at a ref: its entries with mode, size and the last commit that touched each. api/view/tree.
++ */
++export interface GitTree {
++ repo: string;
++ /**
++ * The branch, tag or commit the tree was read at.
++ */
++ ref: string;
++ /**
++ * The directory, empty at the repository root.
++ */
++ path: string;
++ entries: {
++ name: string;
++ path: string;
++ type: "blob" | "tree" | "commit";
++ mode: string;
++ sha: string;
++ size?: number | null;
++ last_commit?: {
++ sha: string;
++ message: string;
++ date: string;
++ author_name: string;
++ } | null;
++ }[];
++}
++
++/** [email protected] (owner: git) */
++/**
++ * A repository's insights over a window: views, unique visitors, clones and stars per day, and commits per week. Public for a public repository, like GitHub's traffic but open. api/view/insights.
++ */
++export interface GitInsights {
++ repo: string;
++ window_days: number;
++ /**
++ * Page views of the repository in the window.
++ */
++ views: number;
++ /**
++ * Distinct visitors per day, summed over the window.
++ */
++ unique_visitors: number;
++ /**
++ * Successful git clones and fetches served in the window.
++ */
++ clones: number;
++ stars: {
++ total: number;
++ in_window: number;
++ };
++ /**
++ * The default branch's commits for each ISO week, oldest first.
++ */
++ commits_per_week: {
++ /**
++ * The week's Monday, YYYY-MM-DD.
++ */
++ week: string;
++ commits: number;
++ }[];
++ /**
++ * One row per day of the window, oldest first.
++ */
++ daily: {
++ day: string;
++ views: number;
++ unique_visitors: number;
++ clones: number;
++ stars: number;
++ }[];
++}
ddiff --git a/package-lock.json b/package-lock.json
iindex 368d639c..c806bc45 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -1,12 +1,12 @@
{
"name": "openvibe-contracts",
-- "version": "0.368.0",
++ "version": "0.369.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "openvibe-contracts",
-- "version": "0.368.0",
++ "version": "0.369.0",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 0b56e4f6..064c6024 100644
---- a/package.json
++++ b/package.json
@@@ -1,6 +1,6 @@
{
"name": "openvibe-contracts",
-- "version": "0.368.0",
++ "version": "0.369.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",