HostDomain host.domain@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/domain.v1.json
host.domain@1: one domain of a static site on OpenVibe.Host (server/http/serialize.js domain): the default <site>.openvibe.host, or a custom domain that is served only once its DNS TXT record is verified (re-checked daily; it lapses when the record is gone). A custom domain carries the records its owner must publish (the TXT verification value is public by design and shown only to members); TLS certificates are issued by an operator.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
site_id | string | yes |
| |
hostname | string | yes | ||
kind | enum | yes |
| |
status | enum | yes |
| |
served | boolean | yes | ||
verified_at | string | null | yes |
| |
last_checked_at | string | null | yes |
| |
last_error | string | null | yes | ||
instructions | object | |||
instructions.verification | object | yes | ||
instructions.verification.type | const | yes |
| |
instructions.verification.name | string | yes | _openvibe-host.<hostname> | |
instructions.verification.value | string | yes | openvibe-host-verification=<token> | |
instructions.verification.note | string | |||
instructions.routing | array of object | yes | A CNAME for a subdomain; A/AAAA for an apex domain when the operator configured them. | |
instructions.routing[].type | string | yes | ||
instructions.routing[].name | string | yes | ||
instructions.routing[].value | string | yes | ||
instructions.routing[].note | string | |||
instructions.tls | string | yes |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: custom
{
"id": "dom_01JAD6D6E7F8G9H0J1K2M3N4P5",
"site_id": "site_01JAD2S3T4V5W6X7Y8Z9A0B1C2",
"hostname": "www.harbourradio.example",
"kind": "custom",
"status": "pending",
"served": false,
"verified_at": null,
"last_checked_at": "2026-09-24T09:40:12.000Z",
"last_error": "no TXT record at _openvibe-host.www.harbourradio.example yet",
"instructions": {
"verification": {
"type": "TXT",
"name": "_openvibe-host.www.harbourradio.example",
"value": "openvibe-host-verification=5f0c2a9e1b7d4c3a8e6f0b2d4c6a8e0f1a3c5e7b",
"note": "keep this record: Host re-checks it daily"
},
"routing": [
{
"type": "CNAME",
"name": "www.harbourradio.example",
"value": "harbour-radio.openvibe.host",
"note": "for a subdomain such as www.example.org"
}
],
"tls": "after verification an operator issues the certificate (Let's Encrypt); HTTPS starts working once it is installed"
}
}Valid: default
{
"id": "dom_01JAD5D6E7F8G9H0J1K2M3N4P5",
"site_id": "site_01JAD2S3T4V5W6X7Y8Z9A0B1C2",
"hostname": "harbour-radio.openvibe.host",
"kind": "default",
"status": "verified",
"served": true,
"verified_at": "2026-09-24T08:15:00.000Z",
"last_checked_at": null,
"last_error": null
}Rejected: bad-status
{
"id": "dom_01JAD5D6E7F8G9H0J1K2M3N4P5",
"site_id": "site_01JAD2S3T4V5W6X7Y8Z9A0B1C2",
"hostname": "harbour-radio.openvibe.host",
"kind": "default",
"status": "active",
"served": true,
"verified_at": "2026-09-24T08:15:00.000Z",
"last_checked_at": null,
"last_error": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('host.domain@1', value); // { valid, errors: [{ path, message }] }