Remove Spirit Airlines (defunct — merged into Frontier)
Spirit ceased operations, so the fetchSpiritStatus path and all NK references are dead code. Pulled out: - AirlineLoadService: drop `case "NK"` from the router, delete fetchSpiritStatus (the GetFlightInfoBI POST that was returning 403 even after our APIM key was accepted). - FlightLoadDetailView: drop the `schedule.airline.iata == "NK"` branch and the spiritUnavailableView placeholder. - FlightLoad model: update the airlineCode comment. - AirlineLoadIntegrationTests: remove test_NK_spirit and drop "NK" from statusOnlyAirlines / knownDailyFlights fallback table. - AIRLINE_INTEGRATION_GUIDE.md: tombstone the Spirit section and remove it from the cheat-sheets and recommendations. Test suite now: 6 airlines passing (AA, AS, B6, EK, KE, UA), 1 skipped (XE — WKWebView host required), 0 failures, runs in ~10s. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ Drop-in reference for integrating flight load / seat availability data from 11 a
|
||||
| B6 | ✅ Status-only | Confirms flight exists; no load data without check-in session |
|
||||
| EK | ✅ Status-only | Confirms flight exists; load data requires PNR |
|
||||
| KE | ✅ Working | Returns seat count only (no capacity) |
|
||||
| NK | ❌ Broken (2026-05-26) | `GetFlightInfoBI` returns HTTP 403 with `{"getFlightInfoBIResult":null}`. APIM key is still accepted (401 without it), but the call itself is now rejected. Likely endpoint deprecation or new auth requirement. Spirit APK in `airlines/com.spirit.*` may have the new shape. |
|
||||
| ~~NK~~ | Removed | Spirit Airlines ceased operations (merged into Frontier). Removed from `AirlineLoadService` and tests. |
|
||||
| XE | Manual only | WKWebView path; unit tests can't exercise it |
|
||||
|
||||
---
|
||||
@@ -208,23 +208,9 @@ Script ready at `scripts/jsx_availability.js`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Spirit Airlines — PARTIAL (status only, no standby)
|
||||
## 5. ~~Spirit Airlines~~ — DEFUNCT
|
||||
|
||||
**What you get:** Flight status, station/route data. **No standby — Spirit is a ULCC and doesn't run standby lists.**
|
||||
|
||||
**Auth:** Static APIM key (decrypted). Plain curl for GETs; POSTs mostly blocked by Akamai CyberFend sensor.
|
||||
|
||||
**Key:** `c6567af50d544dfbb3bc5dd99c6bb177`
|
||||
|
||||
```bash
|
||||
curl -X POST "https://api.spirit.com/customermobileprod/2.8.0/v3/GetFlightInfoBI" \
|
||||
-H "Ocp-Apim-Subscription-Key: c6567af50d544dfbb3bc5dd99c6bb177" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Platform: Android" \
|
||||
-d '{"departureStation":"FLL","arrivalStation":"ATL","departureDate":"2026-04-08"}'
|
||||
```
|
||||
|
||||
Seat maps require JWT + CyberFend sensor data (real device + Frida hook only).
|
||||
Spirit ceased operations and merged into Frontier. Removed from the codebase entirely. Section retained as a placeholder so the numbering below doesn't shift.
|
||||
|
||||
---
|
||||
|
||||
@@ -356,7 +342,6 @@ Same backend powers Lufthansa, SWISS, Austrian, Brussels.
|
||||
|------------|--------------------|---------|
|
||||
| Alaska | APIM key header | Lowest (curl works) |
|
||||
| Emirates | none | Lowest (curl works) |
|
||||
| Spirit | APIM key (GET only)| Low (curl works) |
|
||||
| JetBlue | apikey header | Low (curl works) |
|
||||
| Korean Air | `channel` header | Low (Playwright or curl) |
|
||||
| JSX | Playwright → JWT | Medium |
|
||||
@@ -382,7 +367,6 @@ These four are the core of any flight-load product. Alaska is the easiest to int
|
||||
|
||||
## Tier 2: Status only (useful, but no seat data)
|
||||
|
||||
- **Spirit** — status/routes, no standby (ULCC)
|
||||
- **Emirates** — status, zero auth
|
||||
- **Korean Air** — status; `flightSeatCount` returns 0 far out
|
||||
- **JetBlue** — status + route DB; loads need PNR
|
||||
@@ -399,7 +383,7 @@ These four are the core of any flight-load product. Alaska is the easiest to int
|
||||
3. Layer in American for the third major US carrier.
|
||||
4. JSX as a bonus — only route pairs that JSX serves (private terminals).
|
||||
5. For Delta/JetBlue: show flight status only, note "seat data unavailable" unless you have a PNR.
|
||||
6. Use Emirates/Korean Air/Spirit for status on international/ULCC routes.
|
||||
6. Use Emirates/Korean Air for status on international routes.
|
||||
|
||||
## Shared integration notes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user