{
  "$defs": {
    "Capabilities": {
      "additionalProperties": false,
      "properties": {
        "default_telemetry_hz": {
          "title": "Default Telemetry Hz",
          "type": "integer"
        },
        "events": {
          "items": {
            "type": "string"
          },
          "title": "Events",
          "type": "array"
        },
        "frames": {
          "items": {
            "type": "string"
          },
          "title": "Frames",
          "type": "array"
        },
        "max_telemetry_hz": {
          "title": "Max Telemetry Hz",
          "type": "integer"
        }
      },
      "required": [
        "max_telemetry_hz",
        "default_telemetry_hz",
        "frames",
        "events"
      ],
      "title": "Capabilities",
      "type": "object"
    },
    "ErrorMessage": {
      "additionalProperties": false,
      "description": "A client message the server could not accept; nothing was changed.",
      "properties": {
        "data": {
          "$ref": "#/$defs/ProtocolError"
        },
        "type": {
          "const": "error",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "ErrorMessage",
      "type": "object"
    },
    "FullTelemetryFrame": {
      "additionalProperties": false,
      "properties": {
        "aids": {
          "title": "Aids",
          "type": "integer"
        },
        "best_lap_ms": {
          "title": "Best Lap Ms",
          "type": "integer"
        },
        "boost": {
          "title": "Boost",
          "type": "number"
        },
        "brake": {
          "description": "0\u2013100 %",
          "title": "Brake",
          "type": "number"
        },
        "car_category": {
          "title": "Car Category",
          "type": "string"
        },
        "car_id": {
          "title": "Car Id",
          "type": "integer"
        },
        "car_name": {
          "title": "Car Name",
          "type": "string"
        },
        "current_lap": {
          "title": "Current Lap",
          "type": "integer"
        },
        "delta_ms": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "description": "Live delta to the session best, at the same place.",
          "title": "Delta Ms"
        },
        "fuel_capacity": {
          "title": "Fuel Capacity",
          "type": "number"
        },
        "fuel_level": {
          "title": "Fuel Level",
          "type": "number"
        },
        "gear": {
          "title": "Gear",
          "type": "integer"
        },
        "lap_elapsed_ms": {
          "title": "Lap Elapsed Ms",
          "type": "integer"
        },
        "last_lap_ms": {
          "title": "Last Lap Ms",
          "type": "integer"
        },
        "oil_pressure": {
          "title": "Oil Pressure",
          "type": "number"
        },
        "oil_temp": {
          "title": "Oil Temp",
          "type": "number"
        },
        "on_track": {
          "title": "On Track",
          "type": "boolean"
        },
        "packet": {
          "$ref": "#/$defs/Packet",
          "description": "Every TelemetryPacket field, unrounded; extended-format fields are null below the packet format that carries them."
        },
        "paused": {
          "title": "Paused",
          "type": "boolean"
        },
        "pos_x": {
          "title": "Pos X",
          "type": "number"
        },
        "pos_z": {
          "title": "Pos Z",
          "type": "number"
        },
        "position": {
          "title": "Position",
          "type": "integer"
        },
        "prev_best_ms": {
          "title": "Prev Best Ms",
          "type": "integer"
        },
        "rpm": {
          "title": "Rpm",
          "type": "integer"
        },
        "rpm_alert": {
          "title": "Rpm Alert",
          "type": "number"
        },
        "session_best_ms": {
          "title": "Session Best Ms",
          "type": "integer"
        },
        "speed_kmh": {
          "title": "Speed Kmh",
          "type": "number"
        },
        "steer_rad": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Steer Rad"
        },
        "suggested_gear": {
          "description": "15 = no suggestion",
          "title": "Suggested Gear",
          "type": "integer"
        },
        "surface": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Four wheels' surface codes packed; null below packet C.",
          "title": "Surface"
        },
        "throttle": {
          "description": "0\u2013100 %",
          "title": "Throttle",
          "type": "number"
        },
        "tire_slip": {
          "title": "Tire Slip",
          "type": "number"
        },
        "tire_temps": {
          "description": "FL, FR, RL, RR",
          "items": {
            "type": "number"
          },
          "title": "Tire Temps",
          "type": "array"
        },
        "tod_ms": {
          "title": "Tod Ms",
          "type": "integer"
        },
        "total_laps": {
          "title": "Total Laps",
          "type": "integer"
        },
        "total_positions": {
          "title": "Total Positions",
          "type": "integer"
        },
        "track_name": {
          "title": "Track Name",
          "type": "string"
        },
        "water_temp": {
          "title": "Water Temp",
          "type": "number"
        }
      },
      "required": [
        "on_track",
        "paused",
        "speed_kmh",
        "rpm",
        "rpm_alert",
        "gear",
        "suggested_gear",
        "throttle",
        "brake",
        "boost",
        "fuel_level",
        "fuel_capacity",
        "current_lap",
        "total_laps",
        "best_lap_ms",
        "last_lap_ms",
        "position",
        "total_positions",
        "tire_temps",
        "tire_slip",
        "water_temp",
        "oil_temp",
        "oil_pressure",
        "aids",
        "surface",
        "car_id",
        "car_name",
        "car_category",
        "session_best_ms",
        "prev_best_ms",
        "delta_ms",
        "lap_elapsed_ms",
        "pos_x",
        "pos_z",
        "tod_ms",
        "track_name",
        "steer_rad",
        "packet"
      ],
      "title": "FullTelemetryFrame",
      "type": "object"
    },
    "LapEvent": {
      "additionalProperties": true,
      "description": "A lap was saved. The summary fields of GET /api/sessions/{id}/laps, plus\nthe metrics computed as it closed.",
      "properties": {
        "car_id": {
          "title": "Car Id",
          "type": "integer"
        },
        "counts_for_best": {
          "title": "Counts For Best",
          "type": "boolean"
        },
        "full_lap": {
          "title": "Full Lap",
          "type": "boolean"
        },
        "id": {
          "title": "Id",
          "type": "integer"
        },
        "number": {
          "title": "Number",
          "type": "integer"
        },
        "salvaged": {
          "title": "Salvaged",
          "type": "boolean"
        },
        "session_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Session Id"
        },
        "time_ms": {
          "title": "Time Ms",
          "type": "integer"
        }
      },
      "required": [
        "id",
        "session_id",
        "number",
        "time_ms",
        "car_id",
        "counts_for_best",
        "full_lap",
        "salvaged"
      ],
      "title": "LapEvent",
      "type": "object"
    },
    "LapMessage": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "$ref": "#/$defs/LapEvent"
        },
        "type": {
          "const": "lap",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "LapMessage",
      "type": "object"
    },
    "OtherMessage": {
      "additionalProperties": false,
      "description": "survey, voice_callout, voice_output_status, race_engineer_status: open\npayloads documented in docs/reference/api.md.",
      "properties": {
        "data": {
          "additionalProperties": true,
          "title": "Data",
          "type": "object"
        },
        "type": {
          "enum": [
            "survey",
            "voice_callout",
            "voice_output_status",
            "race_engineer_status"
          ],
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "OtherMessage",
      "type": "object"
    },
    "Packet": {
      "additionalProperties": false,
      "description": "Every parsed field of the newest packet, unrounded (app.models.TelemetryPacket).",
      "properties": {
        "angular_velocity_x": {
          "title": "Angular Velocity X",
          "type": "number"
        },
        "angular_velocity_y": {
          "title": "Angular Velocity Y",
          "type": "number"
        },
        "angular_velocity_z": {
          "title": "Angular Velocity Z",
          "type": "number"
        },
        "best_lap_time_ms": {
          "title": "Best Lap Time Ms",
          "type": "integer"
        },
        "body_height": {
          "title": "Body Height",
          "type": "number"
        },
        "boost": {
          "title": "Boost",
          "type": "number"
        },
        "brake": {
          "title": "Brake",
          "type": "integer"
        },
        "brake_filtered": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Brake Filtered"
        },
        "calculated_max_speed": {
          "title": "Calculated Max Speed",
          "type": "integer"
        },
        "car_category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Car Category"
        },
        "car_id": {
          "title": "Car Id",
          "type": "integer"
        },
        "clutch": {
          "title": "Clutch",
          "type": "number"
        },
        "clutch_engagement": {
          "title": "Clutch Engagement",
          "type": "number"
        },
        "current_gear": {
          "title": "Current Gear",
          "type": "integer"
        },
        "current_lap": {
          "title": "Current Lap",
          "type": "integer"
        },
        "day_progression_ms": {
          "title": "Day Progression Ms",
          "type": "integer"
        },
        "energy_recovery": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Energy Recovery"
        },
        "energy_recovery_available": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Energy Recovery Available"
        },
        "engine_rpm": {
          "title": "Engine Rpm",
          "type": "number"
        },
        "engine_torque_norm": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Engine Torque Norm"
        },
        "flags": {
          "title": "Flags",
          "type": "integer"
        },
        "fuel_capacity": {
          "title": "Fuel Capacity",
          "type": "number"
        },
        "fuel_level": {
          "title": "Fuel Level",
          "type": "number"
        },
        "gear_ratios": {
          "items": {
            "type": "number"
          },
          "title": "Gear Ratios",
          "type": "array"
        },
        "heave": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Heave"
        },
        "lap_time_ms": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lap Time Ms"
        },
        "last_lap_time_ms": {
          "title": "Last Lap Time Ms",
          "type": "integer"
        },
        "oil_pressure": {
          "title": "Oil Pressure",
          "type": "number"
        },
        "oil_temp": {
          "title": "Oil Temp",
          "type": "number"
        },
        "packet_id": {
          "title": "Packet Id",
          "type": "integer"
        },
        "position_x": {
          "title": "Position X",
          "type": "number"
        },
        "position_y": {
          "title": "Position Y",
          "type": "number"
        },
        "position_z": {
          "title": "Position Z",
          "type": "number"
        },
        "powertrain_flags": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Powertrain Flags"
        },
        "race_position": {
          "title": "Race Position",
          "type": "integer"
        },
        "rel_orientation_to_north": {
          "title": "Rel Orientation To North",
          "type": "number"
        },
        "rotation_pitch": {
          "title": "Rotation Pitch",
          "type": "number"
        },
        "rotation_roll": {
          "title": "Rotation Roll",
          "type": "number"
        },
        "rotation_yaw": {
          "title": "Rotation Yaw",
          "type": "number"
        },
        "rpm_after_clutch": {
          "title": "Rpm After Clutch",
          "type": "number"
        },
        "rpm_alert_max": {
          "title": "Rpm Alert Max",
          "type": "number"
        },
        "rpm_alert_min": {
          "title": "Rpm Alert Min",
          "type": "number"
        },
        "speed_mps": {
          "title": "Speed Mps",
          "type": "number"
        },
        "suggested_gear": {
          "title": "Suggested Gear",
          "type": "integer"
        },
        "surface_types": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Surface Types"
        },
        "surge": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Surge"
        },
        "suspension_fl": {
          "title": "Suspension Fl",
          "type": "number"
        },
        "suspension_fr": {
          "title": "Suspension Fr",
          "type": "number"
        },
        "suspension_rl": {
          "title": "Suspension Rl",
          "type": "number"
        },
        "suspension_rr": {
          "title": "Suspension Rr",
          "type": "number"
        },
        "sway": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sway"
        },
        "throttle": {
          "title": "Throttle",
          "type": "integer"
        },
        "throttle_filtered": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Throttle Filtered"
        },
        "tire_radius_fl": {
          "title": "Tire Radius Fl",
          "type": "number"
        },
        "tire_radius_fr": {
          "title": "Tire Radius Fr",
          "type": "number"
        },
        "tire_radius_rl": {
          "title": "Tire Radius Rl",
          "type": "number"
        },
        "tire_radius_rr": {
          "title": "Tire Radius Rr",
          "type": "number"
        },
        "tire_temp_fl": {
          "title": "Tire Temp Fl",
          "type": "number"
        },
        "tire_temp_fr": {
          "title": "Tire Temp Fr",
          "type": "number"
        },
        "tire_temp_rl": {
          "title": "Tire Temp Rl",
          "type": "number"
        },
        "tire_temp_rr": {
          "title": "Tire Temp Rr",
          "type": "number"
        },
        "torque_vectors": {
          "anyOf": [
            {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Torque Vectors"
        },
        "total_laps": {
          "title": "Total Laps",
          "type": "integer"
        },
        "total_positions": {
          "title": "Total Positions",
          "type": "integer"
        },
        "transmission_top_speed": {
          "title": "Transmission Top Speed",
          "type": "number"
        },
        "velocity_x": {
          "title": "Velocity X",
          "type": "number"
        },
        "velocity_y": {
          "title": "Velocity Y",
          "type": "number"
        },
        "velocity_z": {
          "title": "Velocity Z",
          "type": "number"
        },
        "water_temp": {
          "title": "Water Temp",
          "type": "number"
        },
        "wheel_rotation": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Wheel Rotation"
        },
        "wheel_rps_fl": {
          "title": "Wheel Rps Fl",
          "type": "number"
        },
        "wheel_rps_fr": {
          "title": "Wheel Rps Fr",
          "type": "number"
        },
        "wheel_rps_rl": {
          "title": "Wheel Rps Rl",
          "type": "number"
        },
        "wheel_rps_rr": {
          "title": "Wheel Rps Rr",
          "type": "number"
        },
        "wheel_steering_rad": {
          "anyOf": [
            {
              "maxItems": 2,
              "minItems": 2,
              "prefixItems": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ],
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Wheel Steering Rad"
        },
        "wheelbase_m": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Wheelbase M"
        }
      },
      "required": [
        "packet_id",
        "position_x",
        "position_y",
        "position_z",
        "velocity_x",
        "velocity_y",
        "velocity_z",
        "rotation_pitch",
        "rotation_yaw",
        "rotation_roll",
        "rel_orientation_to_north",
        "angular_velocity_x",
        "angular_velocity_y",
        "angular_velocity_z",
        "body_height",
        "engine_rpm",
        "fuel_level",
        "fuel_capacity",
        "speed_mps",
        "boost",
        "oil_pressure",
        "water_temp",
        "oil_temp",
        "tire_temp_fl",
        "tire_temp_fr",
        "tire_temp_rl",
        "tire_temp_rr",
        "current_lap",
        "total_laps",
        "best_lap_time_ms",
        "last_lap_time_ms",
        "day_progression_ms",
        "race_position",
        "total_positions",
        "rpm_alert_min",
        "rpm_alert_max",
        "calculated_max_speed",
        "flags",
        "current_gear",
        "suggested_gear",
        "throttle",
        "brake",
        "wheel_rps_fl",
        "wheel_rps_fr",
        "wheel_rps_rl",
        "wheel_rps_rr",
        "tire_radius_fl",
        "tire_radius_fr",
        "tire_radius_rl",
        "tire_radius_rr",
        "suspension_fl",
        "suspension_fr",
        "suspension_rl",
        "suspension_rr",
        "clutch",
        "clutch_engagement",
        "rpm_after_clutch",
        "transmission_top_speed",
        "gear_ratios",
        "car_id"
      ],
      "title": "Packet",
      "type": "object"
    },
    "ProtocolError": {
      "additionalProperties": false,
      "properties": {
        "message": {
          "title": "Message",
          "type": "string"
        },
        "request": {
          "description": "The client message type it answers.",
          "title": "Request",
          "type": "string"
        }
      },
      "required": [
        "message",
        "request"
      ],
      "title": "ProtocolError",
      "type": "object"
    },
    "Status": {
      "additionalProperties": true,
      "description": "Sent on connect, and as `session` when the session changes.",
      "properties": {
        "connected": {
          "title": "Connected",
          "type": "boolean"
        },
        "console_ip": {
          "title": "Console Ip",
          "type": "string"
        },
        "decode_errors": {
          "title": "Decode Errors",
          "type": "integer"
        },
        "frames_dropped": {
          "title": "Frames Dropped",
          "type": "integer"
        },
        "packet_format": {
          "title": "Packet Format",
          "type": "string"
        },
        "packets_received": {
          "title": "Packets Received",
          "type": "integer"
        },
        "protocol": {
          "title": "Protocol",
          "type": "integer"
        },
        "recording": {
          "title": "Recording",
          "type": "boolean"
        },
        "session_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Session Id"
        },
        "source": {
          "title": "Source",
          "type": "string"
        },
        "track_name": {
          "title": "Track Name",
          "type": "string"
        }
      },
      "required": [
        "protocol",
        "source",
        "recording",
        "session_id",
        "track_name",
        "frames_dropped",
        "connected",
        "console_ip",
        "packets_received",
        "decode_errors",
        "packet_format"
      ],
      "title": "Status",
      "type": "object"
    },
    "StatusMessage": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "$ref": "#/$defs/Status"
        },
        "type": {
          "enum": [
            "status",
            "session"
          ],
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "StatusMessage",
      "type": "object"
    },
    "Subscribe": {
      "additionalProperties": true,
      "properties": {
        "events": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Event types to receive; omitted = all. `status` and `welcome` are always sent.",
          "title": "Events"
        },
        "frame": {
          "default": "compact",
          "description": "`full` adds `packet`: every parsed field of the latest packet.",
          "enum": [
            "compact",
            "full"
          ],
          "title": "Frame",
          "type": "string"
        },
        "telemetry_hz": {
          "anyOf": [
            {
              "maximum": 60,
              "minimum": 1,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Telemetry frames per second; omitted = the server's GT7_WS_RATE.",
          "title": "Telemetry Hz"
        }
      },
      "title": "Subscribe",
      "type": "object"
    },
    "TelemetryFrame": {
      "additionalProperties": false,
      "description": "The compact frame: what the live view and dash draw from.",
      "properties": {
        "aids": {
          "title": "Aids",
          "type": "integer"
        },
        "best_lap_ms": {
          "title": "Best Lap Ms",
          "type": "integer"
        },
        "boost": {
          "title": "Boost",
          "type": "number"
        },
        "brake": {
          "description": "0\u2013100 %",
          "title": "Brake",
          "type": "number"
        },
        "car_category": {
          "title": "Car Category",
          "type": "string"
        },
        "car_id": {
          "title": "Car Id",
          "type": "integer"
        },
        "car_name": {
          "title": "Car Name",
          "type": "string"
        },
        "current_lap": {
          "title": "Current Lap",
          "type": "integer"
        },
        "delta_ms": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "description": "Live delta to the session best, at the same place.",
          "title": "Delta Ms"
        },
        "fuel_capacity": {
          "title": "Fuel Capacity",
          "type": "number"
        },
        "fuel_level": {
          "title": "Fuel Level",
          "type": "number"
        },
        "gear": {
          "title": "Gear",
          "type": "integer"
        },
        "lap_elapsed_ms": {
          "title": "Lap Elapsed Ms",
          "type": "integer"
        },
        "last_lap_ms": {
          "title": "Last Lap Ms",
          "type": "integer"
        },
        "oil_pressure": {
          "title": "Oil Pressure",
          "type": "number"
        },
        "oil_temp": {
          "title": "Oil Temp",
          "type": "number"
        },
        "on_track": {
          "title": "On Track",
          "type": "boolean"
        },
        "paused": {
          "title": "Paused",
          "type": "boolean"
        },
        "pos_x": {
          "title": "Pos X",
          "type": "number"
        },
        "pos_z": {
          "title": "Pos Z",
          "type": "number"
        },
        "position": {
          "title": "Position",
          "type": "integer"
        },
        "prev_best_ms": {
          "title": "Prev Best Ms",
          "type": "integer"
        },
        "rpm": {
          "title": "Rpm",
          "type": "integer"
        },
        "rpm_alert": {
          "title": "Rpm Alert",
          "type": "number"
        },
        "session_best_ms": {
          "title": "Session Best Ms",
          "type": "integer"
        },
        "speed_kmh": {
          "title": "Speed Kmh",
          "type": "number"
        },
        "steer_rad": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Steer Rad"
        },
        "suggested_gear": {
          "description": "15 = no suggestion",
          "title": "Suggested Gear",
          "type": "integer"
        },
        "surface": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Four wheels' surface codes packed; null below packet C.",
          "title": "Surface"
        },
        "throttle": {
          "description": "0\u2013100 %",
          "title": "Throttle",
          "type": "number"
        },
        "tire_slip": {
          "title": "Tire Slip",
          "type": "number"
        },
        "tire_temps": {
          "description": "FL, FR, RL, RR",
          "items": {
            "type": "number"
          },
          "title": "Tire Temps",
          "type": "array"
        },
        "tod_ms": {
          "title": "Tod Ms",
          "type": "integer"
        },
        "total_laps": {
          "title": "Total Laps",
          "type": "integer"
        },
        "total_positions": {
          "title": "Total Positions",
          "type": "integer"
        },
        "track_name": {
          "title": "Track Name",
          "type": "string"
        },
        "water_temp": {
          "title": "Water Temp",
          "type": "number"
        }
      },
      "required": [
        "on_track",
        "paused",
        "speed_kmh",
        "rpm",
        "rpm_alert",
        "gear",
        "suggested_gear",
        "throttle",
        "brake",
        "boost",
        "fuel_level",
        "fuel_capacity",
        "current_lap",
        "total_laps",
        "best_lap_ms",
        "last_lap_ms",
        "position",
        "total_positions",
        "tire_temps",
        "tire_slip",
        "water_temp",
        "oil_temp",
        "oil_pressure",
        "aids",
        "surface",
        "car_id",
        "car_name",
        "car_category",
        "session_best_ms",
        "prev_best_ms",
        "delta_ms",
        "lap_elapsed_ms",
        "pos_x",
        "pos_z",
        "tod_ms",
        "track_name",
        "steer_rad"
      ],
      "title": "TelemetryFrame",
      "type": "object"
    },
    "TelemetryMessage": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "anyOf": [
            {
              "$ref": "#/$defs/TelemetryFrame"
            },
            {
              "$ref": "#/$defs/FullTelemetryFrame"
            }
          ],
          "title": "Data"
        },
        "type": {
          "const": "telemetry",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "TelemetryMessage",
      "type": "object"
    },
    "Welcome": {
      "additionalProperties": false,
      "properties": {
        "capabilities": {
          "$ref": "#/$defs/Capabilities"
        },
        "http_port": {
          "title": "Http Port",
          "type": "integer"
        },
        "lan_ip": {
          "title": "Lan Ip",
          "type": "string"
        },
        "protocol": {
          "title": "Protocol",
          "type": "integer"
        },
        "server": {
          "const": "gt7-datalogger",
          "default": "gt7-datalogger",
          "title": "Server",
          "type": "string"
        },
        "server_version": {
          "title": "Server Version",
          "type": "string"
        },
        "subscribe": {
          "$ref": "#/$defs/Subscribe",
          "description": "The subscription in effect, after clamping."
        }
      },
      "required": [
        "protocol",
        "server_version",
        "lan_ip",
        "http_port",
        "capabilities",
        "subscribe"
      ],
      "title": "Welcome",
      "type": "object"
    },
    "WelcomeMessage": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "$ref": "#/$defs/Welcome"
        },
        "type": {
          "const": "welcome",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "data"
      ],
      "title": "WelcomeMessage",
      "type": "object"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "$ref": "#/$defs/WelcomeMessage"
    },
    {
      "$ref": "#/$defs/ErrorMessage"
    },
    {
      "$ref": "#/$defs/TelemetryMessage"
    },
    {
      "$ref": "#/$defs/StatusMessage"
    },
    {
      "$ref": "#/$defs/LapMessage"
    },
    {
      "$ref": "#/$defs/OtherMessage"
    }
  ],
  "title": "GT7 Datalogger live server \u2192 client message",
  "x-protocol-version": 1
}
