Contributing to OpenBook
This is an early working draft. The most valuable contributions right now are to the vocabularies — especially vocabularies/market_types.md, the market taxonomy no one else has published.
Proposing a change
- Open an issue describing the change and the real-world feed(s) that motivate it. Vocabulary additions should cite at least one provider that carries the sport / market / segment.
- For a schema change, update the JSON Schema in
schema/and the prose inspec/openbook.mdin the same change; the schema is machine-normative and must not drift from the prose. - Add or update an example in
examples/that validates against the changed schema, and list it inconformance/manifest.json. If the change makes a previously legal document illegal, add an invalid case underconformance/invalid/. - Note the change in
CHANGELOG.mdunder "Unreleased". Names you put inspec/openbook.md(and the scanned docs pages) MUST exist on a schema;python3 tools/validate.pychecks that (Q50).
Rules that don't bend
- Ids, list-values and field names are stable once shipped in a frozen version (Q35). Never re-point or reuse a published name; deprecate instead. Retired names go in
vocabularies/deprecated.md. - No abbreviations in canonical names (
reference_sport, notref_sport). - No provider ids as canonical ids. A provider mapping goes on the
sourcerecord. - Country is ISO 3166, time is RFC 3339 / ISO 8601, currency is ISO 4217 (
baseCurrencyonce per feed), odds and lines are decimal strings, money is{amount}in that currency. Don't reinvent a primitive that already has a standard. - Segments are separate objects, never encoded into a market id.
Style
- Markdown prose over tables where a list will do.
- Every normative statement uses MUST / SHOULD / MAY per RFC 2119.