{"service":"F1 E-Ink Calendar API","version":"0.1.0","description":"Generate 800x480 BMP images for E-Ink displays showing F1 race schedules","endpoints":{"/":{"method":"GET","description":"Interactive preview page with live image generation"},"/calendar.bmp":{"method":"GET","description":"Generate F1 calendar as BMP image (800x480)","parameters":{"lang":{"type":"string","description":"Language code for calendar text","values":["cs","de","en","es","fr","it","ja","nl","pl","pt-BR","sk","tr","zh-CN"],"default":"en","example":"?lang=cs"},"year":{"type":"integer","description":"Season year for specific race","example":"?year=2025","optional":true},"round":{"type":"integer","description":"Round number (1-24) for specific race","example":"?round=5","optional":true},"tz":{"type":"string","description":"Timezone for schedule times (IANA format)","example":"?tz=America/New_York","default":"Europe/Prague","optional":true},"display":{"type":"string","description":"Display output mode","values":["1bit","spectra6","bwr","bwry"],"default":"1bit","example":"?display=bwry","optional":true},"weather":{"type":"boolean","description":"Enable or disable weather overlay","values":[true,false],"default":true,"example":"?weather=false","optional":true},"weather_type":{"type":"string","description":"Weather source to render ('race' normalizes to 'race_day'; 'off' disables weather)","values":["race_day","race","current","off"],"default":"race_day","example":"?weather_type=current","optional":true}},"response":{"content_type":"image/bmp","dimensions":"800x480","color_depth":"1-bit monochrome, 4-bit indexed B/W/R, 4-bit indexed B/W/R/Y, or indexed Spectra 6"},"examples":["/calendar.bmp","/calendar.bmp?lang=cs","/calendar.bmp?year=2025&round=1","/calendar.bmp?lang=en&tz=America/Los_Angeles","/calendar.bmp?display=bwr","/calendar.bmp?display=bwry","/calendar.bmp?display=spectra6&weather_type=current"]},"/teams.bmp":{"method":"GET","description":"Generate F1 teams and drivers BMP image (800x480)","parameters":{"lang":{"type":"string","description":"Language code for teams text","values":["cs","de","en","es","fr","it","ja","nl","pl","pt-BR","sk","tr","zh-CN"],"default":"en","example":"?lang=cs"},"year":{"type":"integer","description":"Season year for team data","example":"?year=2026","optional":true},"display":{"type":"string","description":"Display output mode","values":["1bit","spectra6","bwr","bwry"],"default":"1bit","example":"?display=bwr","optional":true}},"response":{"content_type":"image/bmp","dimensions":"800x480","color_depth":"1-bit monochrome, 4-bit indexed B/W/R, 4-bit indexed B/W/R/Y, or indexed Spectra 6"},"examples":["/teams.bmp","/teams.bmp?lang=cs","/teams.bmp?year=2026","/teams.bmp?display=bwr","/teams.bmp?display=spectra6"]},"/api":{"method":"GET","description":"API documentation (this endpoint)"},"/api/docs":{"method":"GET","description":"API documentation (alias for /api)"},"/api/stats":{"method":"GET","description":"Request statistics (last hour and 24h counts)"},"/api/stats/history":{"method":"GET","description":"Historical hourly request statistics"},"/api/races/{year}":{"method":"GET","description":"Get list of races for a season","parameters":{"year":{"type":"integer","description":"Season year","in":"path"}}},"/api/race/{year}/{round_num}":{"method":"GET","description":"Get detailed race information","parameters":{"year":{"type":"integer","description":"Season year","in":"path"},"round_num":{"type":"integer","description":"Round number","in":"path"}}},"/health":{"method":"GET","description":"Health check endpoint"}},"e_ink_usage":{"description":"For E-Ink displays, fetch /calendar.bmp and display directly","recommended_refresh":"Every 1-6 hours (data updates hourly)","display_compatibility":"Any 800x480 E-Ink display (e.g., Waveshare 7.5\")"}}