HostProject host.project@1
Generated at from
openvibe-contracts v0.53.0 and
openvibe-sdk v0.11.0.
- Version
- 1.0.0
- Owner
- host
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/host/project.v1.json
host.project@1: one OpenVibe.Host tenant project (server/http/serialize.js project): owned by a person (usr_…), production or sandbox, with the caller's role in it and any staff takedown. POST /api/v1/projects and GET /api/v1/projects/:id add the effective quota and the usage.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
name | string | yes |
| |
environment | enum | yes |
| |
network_project_id | string | null | yes | The OpenVibe.Network project once Network has projects. | |
owner | string | yes |
| |
role | enum | yes | The caller's role (staff: a Network admin who is not a member). |
|
created_at | string | yes |
| |
takedown | object | null | yes | A staff takedown covering it: serving stops while the content is kept for review. | |
quota | object | The effective quota: the project's override where set, else its environment's default. | ||
quota.storage_bytes | integer | yes |
| |
quota.deploys_per_day | integer | yes |
| |
quota.max_files | integer | yes |
| |
quota.max_file_bytes | integer | yes |
| |
quota.sites | integer | yes |
| |
quota.custom_domains | integer | yes |
| |
usage | object | |||
usage.storage_bytes | integer | yes |
| |
usage.objects | integer | yes |
| |
usage.deploys_last_24h | integer | yes |
| |
usage.sites | integer | yes |
| |
usage.custom_domains | integer | yes |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: listed
{
"id": "prj_01JAD1P2R3J4K5M6N7P8Q9R0S1",
"name": "Harbour Radio",
"environment": "production",
"network_project_id": null,
"owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"role": "owner",
"created_at": "2026-09-24T08:15:00.000Z",
"takedown": null
}Valid: owner
{
"id": "prj_01JAD1P2R3J4K5M6N7P8Q9R0S1",
"name": "Harbour Radio",
"environment": "production",
"network_project_id": null,
"owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"role": "owner",
"created_at": "2026-09-24T08:15:00.000Z",
"takedown": null,
"quota": {
"storage_bytes": 1073741824,
"deploys_per_day": 50,
"max_files": 5000,
"max_file_bytes": 26214400,
"sites": 5,
"custom_domains": 5
},
"usage": {
"storage_bytes": 482113,
"objects": 37,
"deploys_last_24h": 3,
"sites": 1,
"custom_domains": 1
}
}Rejected: bad-environment
{
"id": "prj_01JAD1P2R3J4K5M6N7P8Q9R0S1",
"name": "Harbour Radio",
"environment": "staging",
"network_project_id": null,
"owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"role": "owner",
"created_at": "2026-09-24T08:15:00.000Z",
"takedown": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('host.project@1', value); // { valid, errors: [{ path, message }] }