Version 1.0 · sent by 2Timer today

Open Meet Display

An open JSON message format that lets any meet program drive any scoreboard, video board, broadcast graphic, or announcer screen.

Without a shared format, every display product needs its own connector for each meet program. An OMD message says what one board should show now, with every value already formatted. Receiving it takes a small HTTP server and a loop over the rows, and one receiver works with any meet program that sends it. For track and field, cross country, and road races.

How it works

Every message is the whole board

A message replaces what its board shows: a start list, results, team scores, an announcement, or a blank board. There are no patches to merge and nothing to fall out of step.

Every value is ready to print

Places, marks, names, and wind arrive as display text. A board needs no sport rules to show them.

Start with one kind

A board that only shows results is a complete receiver: it accepts the other kinds and changes nothing. New kinds and fields in a later 1.x never break it.

Before it sends, the meet program asks your receiver with a GET which versions it reads, then posts each message to it over HTTP, on the same computer or the local network. WebSocket and watched-folder transports are planned; the messages will be the same. The running race clock is not part of OMD: it comes from the timing system on its own channel.

What a message looks like

{
  "omd": { "version": "1.0", "kind": "results",
           "generator": { "id": "2t", "name": "2Timer" }, … },
  "meet": { "name": "District Schools Championship", "sport": "tf-outdoor", … },
  "display": { "target": "main", "mode": "replace" },
  "event": { "name": "Girls 100 Meter Dash", "round_label": "Prelims", "section_name": "Heat 2",
             "wind": "+1.4", … },
  "results": {
    "rows": [
      { "place": "1", "bib": "127", "participant_name": "Siti Hajar Binti Osman",
        "team": { "name": "Eastgate College", "short_name": "EGC" }, "result": "12.31", … },
      { "place": "2", "bib": "412", "participant_name": "Priya Devi Subramaniam",
        "team": { "name": "Lakeview Academy", "short_name": "LVA" }, "result": "12.44", … }
    ]
  }
}

Trimmed: see the complete messages. A receiver reads omd.kind, then draws the rows of the block with that name, top to bottom.

Where you fit

Read, build, and test

Read

Build

Test

To test end to end, send from 2Timer, which is free with no account: add your receiver to a meet's scoreboard connections (see Sending from 2Timer).

Versions and license

This is version 1.0, which 2Timer sends at meets today. A minor version only adds and only a major breaks, so a receiver built on 1.0 reads every 1.x message. Every message names its version in omd.version, and your receiver lists the versions it reads when asked. The specification is licensed CC BY 4.0; the schemas, examples, reference receiver, checker, and integration prompt are public domain (CC0).

Started by 2Timer, the first producer, and shaped by the display products that receive it. It uses the same names, versions, and replies as its sibling, Open Meet Exchange, which moves whole meets between entry, timing, and results sites. Building a receiver? Write to [email protected] and we will help you test it.