Initial commit: Flights iOS app

Flight search app built on FlightConnections.com API data.
Features: airport search with autocomplete, browse by country/state/map,
flight schedules by route and date, multi-airline support with per-airline
schedule loading. Includes 4,561-airport GPS database for map browsing.
Adaptive light/dark mode UI inspired by Flighty.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-04-08 15:01:07 -05:00
commit 3790792040
46 changed files with 5116 additions and 0 deletions

137
api_docs/united_api.md Normal file
View File

@@ -0,0 +1,137 @@
# United Airlines Mobile API
Extracted from `united-airlines.apk` (11 DEX files, ~100MB)
## Base URLs
| Environment | URL |
|-------------|-----|
| **Production** | `https://mobileapi.united.com` |
| QA | `https://mobileapi.qa.united.com` |
| Dev | `https://mobileapi.dev.united.com` |
| Stage | `https://mobileapi.stage.united.com` |
| PreProd | `https://mobileapi.preprod.united.com` |
| Preview | `https://mobileapi.preview.united.com` |
## Load Data Endpoints
### Standby List
```
POST https://mobileapi.united.com/standbylistservice/api/GetStandbyList
```
Returns `MOBStandByListResponse`:
- `standByListPassengers` — passenger list with names, status
- `CustomersOnStandbyList` — customers on standby
- `businessStandByList` — business class standby
- `isStandByListAvailable` — availability flag
- `showStandbyListButton` — UI toggle
### Upgrade List
```
POST https://mobileapi.united.com/upgradelistservice/api/GetUpgradeList
```
Returns `MOBUpgradeListResponse`:
- Upgrade passengers with status
- Cabin eligibility
### Pass Rider List (Employee/Non-Rev)
```
POST https://mobileapi.united.com/passriderlistservice/api/PassRiderList
POST https://mobileapi.united.com/passriderlistservice/api/TravelerMisConnect
```
## Flight Status Data Fields (from embedded JSON)
Per segment in the response:
- `SeatsAvailable` — nullable seat count
- `AvailabiltyCount` — availability string
- `CustomersOnStandbyList` — standby passengers
- `ShowStandby` — whether standby is displayed
- `enableStandbyList` — boolean
- `enableUpgradeList` — boolean
- `availableSeat11AMto5PM` — time-bucketed availability
- `availableSeatBefore11AM` — morning availability
- `availableSeatAfter5PM` — evening availability
## All 60+ Microservices
| Service | Base Path |
|---------|-----------|
| **standbylistservice** | `/standbylistservice/api/` |
| **upgradelistservice** | `/upgradelistservice/api/` |
| **flightstatusservice** | `/flightstatusservice/api/` |
| passriderlistservice | `/passriderlistservice/api/` |
| passridersservice | `/passridersservice/api/` |
| checkinservice | `/checkinservice/api/` |
| checkinebpservice | `/checkinebpservice/api/` |
| checkinmerchservice | `/checkinmerchservice/api/` |
| seatmapservice | `/seatmapservice/api/` |
| seatengineservice | `/seatengineservice/api/` |
| bagcalculatorservice | `/bagcalculatorservice/api/` |
| bagtrackingservice | `/bagtrackingservice/api/` |
| bookingtripsservice | `/bookingtripsservice/api/` |
| completebookingservice | `/completebookingservice/api/` |
| cancelreservationservice | `/cancelreservationservice/api/` |
| shoppingservice | `/shoppingservice/api/` |
| shoptripsservice | `/shoptripsservice/api/` |
| shopbundlesservice | `/shopbundlesservice/api/` |
| shopflightdetailsservice | `/shopflightdetailsservice/api/` |
| shopfarewheelservice | `/shopfarewheelservice/api/` |
| shopawardservice | `/shopawardservice/api/` |
| shopseatsservice | `/shopseatsservice/api/` |
| flightsearchresultservice | `/flightsearchresultservice/api/` |
| myunitedservice | `/myunitedservice/api/` |
| customerprofileservice | `/customerprofileservice/api/` |
| memberprofileservice | `/memberprofileservice/api/` |
| memberinformationservice | `/memberinformationservice/api/` |
| memberbenefitsservice | `/memberbenefitsservice/api/` |
| updatememberprofileservice | `/updatememberprofileservice/api/` |
| enrollmentservice | `/enrollmentservice/api/` |
| premieractivityservice | `/premieractivityservice/api/` |
| recentactivityservice | `/recentactivityservice/api/` |
| balanceservice | `/balanceservice/api/` |
| mywalletservice | `/mywalletservice/api/` |
| etcservice | `/etcservice/api/` |
| travelcreditservice | `/travelcreditservice/api/` |
| clubservice | `/clubservice/api/` |
| unitedclubservice | `/unitedclubservice/api/` |
| productservice | `/productservice/api/` |
| msccheckoutservice | `/msccheckoutservice/api/` |
| mscpaymentservice | `/mscpaymentservice/api/` |
| mscregisterservice | `/mscregisterservice/api/` |
| postbookingservice | `/postbookingservice/api/` |
| tripplannerservice | `/tripplannerservice/api/` |
| tripplannergetservice | `/tripplannergetservice/api/` |
| savetripservice | `/savetripservice/api/` |
| travelersservice | `/travelersservice/api/` |
| traveloffersservice | `/traveloffersservice/api/` |
| homescreenservice | `/homescreenservice/api/` |
| inboxservice | `/inboxservice/api/` |
| receiptservice | `/receiptservice/api/` |
| inflightamenityservice | `/inflightamenityservice/api/` |
| locationservice | `/locationservice/api/` |
| airportsservice | `/airportsservice/api/` |
| securityquestionsservice | `/securityquestionsservice/api/` |
| addressvalidationservice | `/addressvalidationservice/api/` |
| syncservice | `/syncservice/api/` |
| subscriptionsservice | `/subscriptionsservice/api/` |
| paymentoptionservice | `/paymentoptionservice/api/` |
| otpandchasecardsservice | `/otpandchasecardsservice/api/` |
| promocodeservice | `/promocodeservice/api/` |
| moneyplusmilesservice | `/moneyplusmilesservice/api/` |
| alertcheckfsrservice | `/alertcheckfsrservice/api/` |
| cceservice | `/cceservice/api/` |
| mpcservice | `/mpcservice/api/` |
| trcservice | `/trcservice/api/` |
| employeeprofileservice | `/employeeprofileservice/api/` |
| employeepassbalanceservice | `/employeepassbalanceservice/api/` |
| unfinishedbookingservice | `/unfinishedbookingservice/api/` |
| viewresseatmapservice | `/viewresseatmapservice/api/` |
## Security Notes
- **No SSL pinning** — `network_security_config.xml` only allows cleartext for inflight WiFi domains
- **No PairIP or anti-tamper**
- **No emulator detection**
- Auth: session/token based
- Can be fully captured via emulator + mitmproxy