// Normalise to our compact schema const response = request: new Date().toISOString().split('T')[0] , flight: airline: name: r.airline.name, iata: r.airline.iata, icao: r.airline.icao , flight_number: r.flight.iata.replace(r.airline.iata, ''), // strip carrier prefix aircraft: , schedule: departure: airport: name: r.departure.airport, iata: r.departure.iata, city: r.departure.city, country: r.departure.country , scheduled_time: r.departure.scheduled, terminal: r.departure.terminal, gate: r.departure.gate , arrival: airport: name: r.arrival.airport, iata: r.arrival.iata, city: r.arrival.city, country: r.arrival.country , scheduled_time: r.arrival.scheduled, terminal: r.arrival.terminal, gate: r.arrival.gate , status: code: r.flight_status.toUpperCase(), description: r.flight_status, delay_minutes: r.departure.delay, estimated_arrival: r.arrival.estimated , position: r.live ? latitude: r.live.latitude, longitude: r.live.longitude, altitude_feet: r.live.altitude, speed_kts: r.live.speed_horizontal, heading_deg: r.live.heading, last_update: r.live.updated : null, baggage_claim: null // Most public APIs don’t expose this; you could enrich via airport‑specific feeds ;
const app = express(); const PORT = process.env.PORT || 3000; const ASTRACK_API = 'http://api.aviationstack.com/v1/flights'; flight 7500 sub indo
app.get('/api/v1/flight-status', async (req, res) => const flight, origin, destination, date = req.query; if (!flight) return res.status(400).json( error: code: 'BAD_REQUEST', message: '`flight` is required' ); // Normalise to our compact schema const response
try data.data.length === 0) return res.status(404).json( error: code: 'NOT_FOUND', message: `No flight matching $flight was found.` ); flight: airline: name: r.airline.name
res.json(response); catch (e) console.error(e); res.status(502).json( error: code: 'PROVIDER_ERROR', message: e.message ); );