Version 1.0

Open Meet Exchange

An open JSON format for moving a track meet, cross country meet, or road race from the entry site, to the timing software, to the results site.

Without a shared format, every entry site, timing program, and results site needs its own import and export for each of the others, and whatever does not carry over is typed again. With OMX, the entry site serves the whole meet at one link, the timing software builds the meet from it, and results go back out in the same format to every site the meet names.

How it works

  1. The entry site serves the meet at a secret link. One JSON document of kind registration: the meet, its events, divisions, teams, athletes, and entries with seeds and bibs. It can also list the sites that want results back.
  2. The timer pastes the link into their timing software. The software builds the meet from the document with no setup, and can fetch the link again for late entries. A downloaded .omx.json file works the same way.
  3. The timing software hands results on. It sends a document of kind results, the same records now with heats, marks, places, and splits, to every site the meet lists: once the meet is official, as each round finishes, or every few seconds while a race runs.

There are no accounts, API keys, or adapters for each product: the document carries everything, including where results go and the token to send them with. A results site can also receive a meet that never came from an entry site. OMX moves whole meets; to drive a scoreboard or video board, use Open Meet Display.

What a document looks like

{
  "omx": {
    "version": "1.0",
    "kind": "registration",
    "generator": { "id": "examplereg", "name": "ExampleRegistration" }
  },
  "meet": { "id": "8812", "name": "Riverbend XC Invitational", "sport": "xc", … },
  "events": [
    { "id": "e-1", "name": "Varsity Girls 5K", "code": "5000", "gender": "F", … }
  ],
  "athletes": [
    { "id": "a-1001", "first_name": "Maya", "last_name": "Chen", "team_id": "t-lhs", "bib": "101", … }
  ],
  "entries": [
    { "id": "n-1", "event_id": "e-1", "athlete_id": "a-1001",
      "seed": { "value": 1183400, "unit": "ms", "display": "19:43.4" } }
  ],
  "publish": [
    { "id": "examplereg", "url": "https://registration.example.com/omx/inbox/8812",
      "token": "reg_pub_…", "deliver": "live", … }
  ]
}

Trimmed: see the whole document. A results document has the same records, with Meet Operations' ids and what happened.

Which stage you build

One product can run more than one stage: an entry site that also shows results is Registration and Publisher.

Read, build, and test

Read

Build

Test

To test end to end, use 2Timer, which runs Meet Operations and is free with no account: start a new meet from your registration link, or add your endpoint to a meet's connections and watch results arrive.

Versions and license

This is version 1.0. A minor version only adds, so what you build reads every 1.x document; only a 2.0 may break. The specification is licensed CC BY 4.0; the schemas, examples, tests, and prompts are public domain (CC0).

Started by 2Timer, the first implementer. Changes are decided in the open with the products that implement it. Send feedback to [email protected].