Section 1 · OES Spec
Envelope and standard metadata
Portability and version safety for the document itself.
Every OES document opens with a small envelope of metadata describing the document — not the experiment. These fields let importers reject incompatible versions, route to the right parser, and trace a document back to the system that produced it.
Fields
| Field | Type | Purpose |
|---|---|---|
| schemaVersionrequired | string | Version of the OES standard the document conforms to. |
| objectTyperequired | string | Usually 'experiment'. Reserved for future types like 'metric', 'scorecard', or 'experimentCollection'. |
| exportedAt | string (date-time) | Timestamp the document was produced. |
| sourceSystem | string | Originating system — e.g. GrowthBook, Optimizely, Statsig, internal platform. |
| sourceSystemVersion | string | Version of the originating system. Useful for debugging import/export differences. |
| canonicalUrl | string (uri) | Link back to the source experiment, if available. |
| externalIds | object | Stable IDs from external systems — Jira, Linear, GitHub, analytics platforms. |
| extensions | object | Namespaced vendor-specific fields, e.g. growthbook:*, optimizely:*. Importers MUST safely ignore unknown extensions. |
Notes
Importers must accept and round-trip unknown `extensions.*` keys without modification, even when they cannot interpret them.
Documents whose `schemaVersion` is unknown to an importer SHOULD be parsed best-effort with prominent warnings, not rejected outright.