{
  "service": "HypeRate IRL Widget Configurator",
  "version": "1.0",
  "url": "https://irl.hyperate.io/",
  "description": "Generates customizable real-time overlay widget URLs for IRL streamers. Widgets connect to live telemetry via the HypeRate WebSocket API and display data as transparent browser-source overlays in OBS or any compatible streaming tool.",
  "capabilities": [
    {
      "id": "single-widget",
      "name": "Single Widget Generation",
      "description": "Generates a URL for a single data-source widget (time, calories, speed, distance, G-force, location, temperature, precipitation probability, wind speed, or elevation).",
      "url_pattern": "https://irl.hyperate.io/irl/raw/{endpoint}/{hyperate-id}?{params}"
    },
    {
      "id": "activity-summary",
      "name": "Activity Summary View",
      "description": "Generates a URL that displays all activity widgets (time, calories, speed, distance, G-force, location) simultaneously in a single overlay.",
      "url_pattern": "https://irl.hyperate.io/irl/activity/{hyperate-id}?{params}"
    },
    {
      "id": "weather-summary",
      "name": "Weather Summary View",
      "description": "Generates a URL that displays all weather widgets (temperature, precipitation probability, wind speed, elevation) simultaneously.",
      "url_pattern": "https://irl.hyperate.io/irl/weather/{hyperate-id}?{params}"
    },
    {
      "id": "rotating-widget",
      "name": "Auto-Switching Rotating Widget",
      "description": "Generates a single URL that automatically cycles through a group of widgets at a configurable interval (1–60 seconds).",
      "url_pattern": "https://irl.hyperate.io/irl/rotate/?summaryType={activities|weather}&username={hyperate-id}&autoSwitchSummaryInterval={seconds}&{params}"
    }
  ],
  "customization_parameters": {
    "font_family": "CSS font-family string",
    "font_url": "URL to a public CSS font stylesheet",
    "font_size": "integer, pixels",
    "font_color": "6-digit hex color",
    "background_color": "8-digit hex color with alpha (#RRGGBBAA)",
    "border_radius": "integer, pixels",
    "icon_style": "animated | static",
    "icon_sub_style": "filled | outlined",
    "unit_system": "metrical | imperial",
    "burned_calories_unit": "kilocalories | calories",
    "number_mode": "float | integer",
    "display_icon": "boolean",
    "reverse_layout": "boolean",
    "display_uv_index": "boolean",
    "location_display_mode": "city_and_country | country_only | flag_only",
    "gap": "float, rem",
    "outer_gap": "float, rem",
    "inner_gap": "float, rem",
    "orientation": "horizontal | vertical (summary views only)"
  },
  "data_endpoints": [
    {"id": "time", "label": "Elapsed Time", "format": "HH:MM:SS"},
    {"id": "burned-calories", "label": "Burned Calories", "units": ["kcal", "cal"]},
    {"id": "speed", "label": "Speed", "units": ["km/h", "mph"]},
    {"id": "distance", "label": "Distance", "units": ["km", "mi"]},
    {"id": "g-force", "label": "G-Force", "units": ["g"]},
    {"id": "location", "label": "GPS Location", "modes": ["city_and_country", "country_only", "flag_only"]},
    {"id": "temperature", "label": "Temperature", "units": ["°C", "°F"], "extras": ["UV index badge", "weather icon"]},
    {"id": "precipitation-probability", "label": "Precipitation Probability", "units": ["%"]},
    {"id": "wind-speed", "label": "Wind Speed", "units": ["km/h", "mph"]},
    {"id": "elevation", "label": "Elevation", "units": ["m", "ft"]}
  ],
  "data_sources": [
    {"name": "HypeRate WebSocket API", "url": "https://github.com/alexholzreiter/HypeRate-Websocket-API", "provides": ["heart_rate", "speed", "distance", "g_force", "time", "calories", "gps", "elevation"]},
    {"name": "Apple Weather", "url": "https://weather-data.apple.com/legal-attribution.html", "provides": ["temperature", "precipitation_probability", "wind_speed", "uv_index", "weather_symbol"]}
  ],
  "pricing": "free",
  "authentication": "none required for configurator; HypeRate Device ID required for live data",
  "publisher": {
    "name": "HypeRate",
    "url": "https://hyperate.io",
    "linkedin": "https://www.linkedin.com/company/hyperate-io/"
  }
}
