GitRepository git.repo@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- git
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/git/repo.v1.json
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.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes | The repository's own id (repo_<ULID>), stable across a rename. |
|
owner | object | yes |
| |
owner.username | string | yes | The OpenVibe username that owns it, lower-case. |
|
owner.subject | string | null | The owner's Network subject; absent when the owner is the organisation account. |
| |
owner.display_name | string | null | |||
owner.avatar_url | string | null |
| ||
name | string | yes | The repository name; lower-case, and never ending in .git. |
|
full_name | string | yes | <owner>/<name>, the name every API path and clone URL uses. |
|
description | string | yes |
| |
visibility | enum | yes |
| |
default_branch | string | yes |
| |
topics | array of string | yes |
| |
stars | integer | yes |
| |
watchers | integer | yes |
| |
forks | integer | yes |
| |
language | string | null | yes | ||
languages | object | Language name → share of bytes, 0–100, the largest first. | ||
html_url | string | yes |
| |
clone_url | string | yes |
| |
mirror | object | null | A git repository mirrored from somewhere (today: a public GitHub URL). | ||
github | object | null | The GitHub card: cached GitHub API readings for the repository's twin. | ||
created_at | string | yes |
| |
updated_at | string | yes |
| |
pushed_at | string | null |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: full
{
"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"
}Valid: private
{
"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
}Rejected: name-ends-with-git
{
"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"
}Rejected: visibility-and-stars
{
"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"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('git.repo@1', value); // { valid, errors: [{ path, message }] }