{"service":"Atlas — London Bus Network API","version":"v1","description":"Open, read-only API for the London bus network: routes, stops, garages, fleet, tenders, reliability, collisions and low bridges. CORS-open, no key required.","attribution":"Derived from open sources — TfL Unified API, DfT/STATS19, London Datastore (EPOWR), DVLA VES, londonbusroutes.net. Respect the upstream licences when reusing.","livePositions":{"path":"/api/live/vehicles?line=<route>","note":"Real-time bus GPS (BODS SIRI-VM) — a separate, volatile endpoint (10s edge cache)."},"groups":{"current":{"path":"/api/v1","note":"Current snapshot of the warehouse (the datasets below)."},"history":{"path":"/api/v1/history","url":"https://atlas-83s.pages.dev/api/v1/history","note":"Time-series from the Supabase warehouse — daily reliability, performance history, schedule, tender programme, vehicle sightings."},"live":{"path":"/api/v1/live","url":"https://atlas-83s.pages.dev/api/v1/live","note":"Live bus + road feeds proxied from TfL — status, arrivals, disruptions, road incidents."}},"endpoints":[{"name":"routes","path":"/api/v1/routes","url":"https://atlas-83s.pages.dev/api/v1/routes","description":"All London bus routes — [{ id, name }]."},{"name":"route-meta","path":"/api/v1/route-meta","url":"https://atlas-83s.pages.dev/api/v1/route-meta","description":"Per-route metadata keyed by route name (operator, propulsion, garage, type, PVR)."},{"name":"route-classifications","path":"/api/v1/route-classifications","url":"https://atlas-83s.pages.dev/api/v1/route-classifications","description":"Route type classification keyed by route name (day, night, 24-hour, school, prefix/lettered)."},{"name":"route-stops","path":"/api/v1/route-stops","url":"https://atlas-83s.pages.dev/api/v1/route-stops","description":"Ordered stop sequences per route and direction."},{"name":"line-status","path":"/api/v1/line-status","url":"https://atlas-83s.pages.dev/api/v1/line-status","description":"Most recent line-status snapshot — per-route service status + a network summary (capturedAt)."},{"name":"routes-overview","path":"/api/v1/routes-overview","url":"https://atlas-83s.pages.dev/api/v1/routes-overview","description":"Route line geometry as a GeoJSON FeatureCollection."},{"name":"garages","path":"/api/v1/garages","url":"https://atlas-83s.pages.dev/api/v1/garages","description":"Bus garages — code, name, operator, lat/lng, PVR, routes served."},{"name":"fleet","path":"/api/v1/fleet","url":"https://atlas-83s.pages.dev/api/v1/fleet","description":"Fleet profile per route — vehicle count, average age, propulsion mix, makes."},{"name":"vehicles","path":"/api/v1/vehicles","url":"https://atlas-83s.pages.dev/api/v1/vehicles","description":"Vehicle register keyed by registration — routes, operator, make, year, fuel."},{"name":"tenders","path":"/api/v1/tenders","url":"https://atlas-83s.pages.dev/api/v1/tenders","description":"Tender / contract award history per route — bids (low/won/high), operator, dates, contracted miles, plus derived joint-bid (partner routes + total), awarded vehicle (deck/propulsion/basis) and tranche."},{"name":"route-performance","path":"/api/v1/route-performance","url":"https://atlas-83s.pages.dev/api/v1/route-performance","description":"Reliability per route — EWT/OTP vs the MPS benchmark, % mileage operated."},{"name":"accidents","path":"/api/v1/accidents","url":"https://atlas-83s.pages.dev/api/v1/accidents","description":"STATS19 bus collisions — lat/lng, severity, date, borough, vehicles, casualties, plus decoded context: roadType, speedLimit, junction, light, weather, roadSurface, day, timeBand."},{"name":"bridges","path":"/api/v1/bridges","url":"https://atlas-83s.pages.dev/api/v1/bridges","description":"Low bridges / height restrictions — lat/lng, clearance (m + imperial), name, road."},{"name":"crowding","path":"/api/v1/crowding","url":"https://atlas-83s.pages.dev/api/v1/crowding","description":"Bus crowding per route (TfL BUSTO) — peak V/C (load÷capacity at the max-demand hour), band (comfortable→crowded), busiest stop/time/day, and the per-day-type peak."},{"name":"crowding-profile","path":"/api/v1/crowding-profile","url":"https://atlas-83s.pages.dev/api/v1/crowding-profile","description":"Per-route crowding detail (TfL BUSTO) — load-along-route (V/C by stop in sequence) and the time-of-day curve (V/C per timeband, per day type). Powers the corridor gradient + dossier charts."},{"name":"localities","path":"/api/v1/localities","url":"https://atlas-83s.pages.dev/api/v1/localities","description":"London locality labels for the map — towns & suburbs (name, lat/lng, kind). Source: OpenStreetMap (ODbL)."},{"name":"route-diversions","path":"/api/v1/route-diversions","url":"https://atlas-83s.pages.dev/api/v1/route-diversions","description":"Active route diversions keyed by route — status/reason/validity from TfL live status, plus the diff of TfL's current Route/Sequence against our canonical baseline: missed stops, temporary added stops, and (when TfL has redrawn the line) the diverted geometry segments + bypassed baseline segments. Refreshed daily."},{"name":"manifest","path":"/api/v1/manifest","url":"https://atlas-83s.pages.dev/api/v1/manifest","description":"Pipeline run manifest — per-dataset fetchedAt timestamps and row counts."}]}