Skip to content

Schema

Event schema for one analysis: the event types it carries, their metadata properties, the available filters, frame_state availability, and the measured quality of each event type.

Request

GET /analyses/{id}/schema
Parameter Type Required Description
id integer Yes Analysis ID

Response

{
  "data_version": 6,
  "engine_version": "0.5.64",
  "event_types": {
    "pass": {
      "summary": "A deliberate attempt to deliver the ball to a teammate....",
      "status": "stable",
      "quality": { "metric": "...", "per_source": { "...": { "recall": 0.81, "precision": 0.73, "f1": 0.77, "n": 3806 } } },
      "properties": [
        { "name": "body_part", "type": "str", "available": true, "enum": ["head", "both_hands", "unknown"] },
        { "name": "confidence_detection", "type": "float32", "available": true },
        { "name": "confidence_event", "type": "float32", "available": true }
      ]
    },
    "shot": {
      "summary": "An attempt to score: a kick or other body contact...",
      "status": "stable",
      "quality": { "metric": "...", "per_source": { "...": { "recall": 0.81, "precision": 0.73, "f1": 0.77, "n": 3806 } } },
      "properties": [
        { "name": "body_part", "type": "str", "available": true, "enum": ["head", "both_hands", "unknown"] },
        { "name": "confidence_detection", "type": "float32", "available": true },
        { "name": "confidence_event", "type": "float32", "available": true }
      ]
    }
  },
  "filters": [
    { "type": "team_possession", "description": "..." },
    { "type": "event_property", "description": "..." },
    { "type": "frame_state", "description": "..." }
  ],
  "frame_state": {
    "available": true,
    "columns": [
      { "name": "timestamp", "type": "int32", "description": "Milliseconds from video start; join key. Same..." },
      { "name": "player_id", "type": "str", "description": "Identity-resolved 'team-jersey' id; join key." },
      { "name": "speed_mps", "type": "float32", "description": "Smoothed speed in m/s, positions de-jittered..." }
    ]
  },
  "eval_sources": {
    "pcbas": { "label": "PCBAS broadcast benchmark", "description": "Top-flight matches captured from professional broadcast..." },
    "sb": { "label": "World Cup Broadcast", "description": "World Cup 2022 knockout broadcasts scored against..." }
  }
}

Analyses on data version 1 or 2 return a minimal schema with no event type details.

{
  "data_version": 2,
  "engine_version": "0.5.10",
  "event_types": {},
  "filters": [
    { "type": "team_possession", "description": "..." },
    { "type": "ball_action", "description": "..." }
  ],
  "frame_state": {
    "available": false,
    "columns": []
  },
  "eval_sources": {}
}

Response Fields

Field Type Description
data_version integer Event data version, currently 6. Versions 1-2 are legacy
engine_version string Engine version that produced the data
event_types object Map of event type name to definition. {} on data version 1 and 2
event_types[].summary string Description of the event type
event_types[].status string experimental when this event type's quality record for the analysis's engine version is flagged unreliable, else stable. Experimental types are served as usual, with lower confidence in their counts
event_types[].properties array Metadata properties available for this event type
event_types[].properties[].available boolean false when this analysis never fills the property: null, or the placeholder unknown, on every event of that type. true when the type has no events in the analysis
event_types[].quality object | null How well this event type is detected, measured on held-out matches for the analysis's engine version. Null where a type has no measured number. metric names what was measured, measured_at when, and per_source gives the numbers per evaluation slice, keyed as in eval_sources. A slice flagged unreliable is indicative only
filters array Filter types available for this analysis
frame_state.available boolean Whether frame_state data exists
frame_state.columns array Available frame_state columns. [] when unavailable
eval_sources object The evaluation slices the quality numbers are measured on, keyed as in per_source. {} on data version 1 and 2