Veydrin Open Data Standard
The base envelope standard for all Veydrin domain data exports. Domain-specific standards — OHDS, OCEADS, and future specs — inherit this envelope and define their own payload on top.
VODS defines the common contract that all Veydrin-family data exports share. It does not specify what data a particular domain exports — that is the responsibility of domain specs like OHDS (Open Hive Data Standard) or OCEADS. VODS specifies the envelope: the identity, mode, privacy model, and extension system that every conforming export carries regardless of domain.
Any VODS-conforming document can be processed by a generic VODS parser without knowing anything about the domain payload. Domain-specific parsers receive a VODS-valid document and additionally interpret the payload according to their own spec.
A VODS-conforming document is a JSON object. The following root-level fields constitute the VODS envelope. All required fields must be present. Domain specs add their own required and optional fields alongside these.
| Field | Type | Req? | Description |
|---|---|---|---|
vods_version |
string | req | VODS specification version this document conforms to. Currently "1.0". Consumers must accept any version with a matching major number. |
export_id |
string (UUID) | req | Randomly generated UUID v4, created fresh for each export. Never reused. Never derived from any internal identifier. |
export_date |
string (ISO 8601) | req | Timestamp of when this export was generated. Full datetime with timezone offset or Z suffix required. Example: "2026-03-09T14:22:00Z". |
export_mode |
enum | req | Anonymization mode governing how identifiers in this export are handled. Must be "anonymous" or "tracked". See §3. |
extensions |
object | opt | Namespace-keyed object for organization-specific fields. See §4. Consumers must ignore unrecognized extension namespaces. |
ohds_version) and payload arrays or objects alongside these envelope fields. The VODS envelope fields must always be present; domain fields follow the domain spec's own requirements.
{
"vods_version": "1.0",
"export_id": "a3f8c2e1-04b7-4d9e-b221-7f3a09cc1d82",
"export_date": "2026-03-09T14:22:00Z",
"export_mode": "anonymous"
// domain payload fields follow here
}
VODS defines two privacy modes for data exports. Every domain spec must honour these modes in how it generates and handles any identifiers in the payload. The export_mode field declares which mode applies to the entire document — mixed-mode documents are not permitted.
| Mode | Identifier behavior | Typical use |
|---|---|---|
"anonymous" |
All payload identifiers (entity refs, location refs, etc.) are randomized fresh for each export. There is no stable relationship between identifiers across exports. The same physical entity will have a different ref in every anonymous export. | One-time survey submissions, public data sharing, any context where re-identification across exports must be impossible by design. |
"tracked" |
Payload identifiers are stable pseudonyms derived per program via a salted hash of the internal entity ID. The same entity produces the same ref for the same destination program, but a different ref for a different program. Internal database IDs are never exposed. | Longitudinal programs requiring repeated measurement of the same entities over time (e.g., sentinel monitoring, cohort studies). |
Applications implementing tracked mode must derive stable pseudonyms using a cryptographic approach that satisfies the following properties:
The recommended approach is HMAC-SHA256 keyed with a per-program salt stored in the application's private data, never included in the export. The specific algorithm is left to the implementing application as long as the three properties above are satisfied.
The extensions object provides a standardized namespace for organization-specific fields that fall outside the VODS envelope and outside the applicable domain spec. Extensions allow organizations to attach custom data to exports without polluting the core field space and without breaking conforming parsers that don't understand them.
Each key in the extensions object is a namespace identifier chosen by the organization. The value is a JSON object containing that organization's custom fields. There is no central registry — organizations choose their own namespace keys. Short, lowercase, collision-resistant names are recommended.
{
"vods_version": "1.0",
"export_id": "...",
"export_date": "2026-03-09T14:22:00Z",
"export_mode": "tracked",
// domain payload here...
"extensions": {
"hfh": { // Hives for Heroes namespace
"program_cohort": "Spring 2026",
"mentor_id": "M-42"
},
"acme_research": { // Another org's namespace
"study_arm": "control"
}
}
}
VODS uses semantic versioning (MAJOR.MINOR) for the vods_version field. The contract governing what each version increment means is part of the standard itself.
MINORMINORMAJORMAJORA consumer that implements VODS vN.x must:
vods_version. A VODS minor bump does not imply an OHDS minor bump, and vice versa.
A document or application claims VODS v1.0 conformance by meeting all of the following rules. Partial conformance is not recognized.
vods_version, export_id, export_date, export_mode.export_id is a valid UUID v4, generated fresh for each export, and is never reused across exports from the same application.export_date is a valid ISO 8601 datetime string including timezone information. Date-only strings are not acceptable.export_mode. No raw internal identifiers appear in any exported document regardless of mode.extensions object, not at the document root.This section is informational. It describes the expected pattern for domain specifications that build on VODS. It does not impose additional conformance requirements on VODS itself.
ohds_version, oceads_version).export_mode.extensions namespace.{
// VODS envelope (required by VODS)
"vods_version": "1.0",
"export_id": "a3f8c2e1-04b7-4d9e-b221-7f3a09cc1d82",
"export_date": "2026-03-09T14:22:00Z",
"export_mode": "anonymous",
// OHDS domain fields (required by OHDS)
"ohds_version": "1.0",
"inspections": [
{
"inspection_date": "2026-03-01",
"apiary_ref": "A-9f4c",
"hive_ref": "H-2a71",
"colony_status": "alive"
}
],
// Optional extension data
"extensions": {
"hfh": { "program_cohort": "Spring 2026" }
}
}
vods_version tells any generic VODS processor what envelope rules apply. ohds_version tells an OHDS-specific processor what domain schema applies. A VODS processor doesn't need to know the OHDS version to validate the envelope. An OHDS processor needs to know both. The two fields serve different consumers and evolve independently.