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:
154
api_docs/delta_api.md
Normal file
154
api_docs/delta_api.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# Delta Air Lines Mobile API
|
||||
|
||||
Extracted from `com.delta.mobile.android` v6.7 (build 24019)
|
||||
|
||||
## Base URLs
|
||||
|
||||
| Environment | URL |
|
||||
|-------------|-----|
|
||||
| Production | `https://www.delta.com` |
|
||||
| CDN | `https://content.delta.com` |
|
||||
| Embed Web | `https://api.delta.com/embedweb` |
|
||||
|
||||
## Key Endpoints
|
||||
|
||||
### Airport Standby List (ASL)
|
||||
```
|
||||
POST https://www.delta.com/api/mobile/asl
|
||||
```
|
||||
**This is the standby/upgrade list endpoint.** Uses `AirportStandbyListRequest` with fields:
|
||||
- `departureDate` — flight departure date
|
||||
- Request likely includes flight number, origin, destination
|
||||
- Returns `AirportUpgradeStandbyModel` with upgrade list and standby list data
|
||||
|
||||
### Flight Status
|
||||
```
|
||||
POST https://www.delta.com/api/mobile/getFlightStatus
|
||||
POST https://www.delta.com/api/mobile/getFlightStatusByLeg
|
||||
```
|
||||
|
||||
### Upgrade Eligibility
|
||||
```
|
||||
POST https://www.delta.com/api/mobile/getUpgradeEligibilityInfo
|
||||
POST https://www.delta.com/api/mobile/purchaseEfirst
|
||||
```
|
||||
|
||||
### Complimentary Upgrade (from DEX strings)
|
||||
```
|
||||
/getComplimentaryUpgrade
|
||||
/processComplimentaryUpgrade
|
||||
/purchaseUpgrade
|
||||
```
|
||||
|
||||
## All Mobile API Endpoints
|
||||
|
||||
| Endpoint | Path |
|
||||
|----------|------|
|
||||
| **Standby List** | `/api/mobile/asl` |
|
||||
| Flight Status | `/api/mobile/getFlightStatus` |
|
||||
| Flight Status By Leg | `/api/mobile/getFlightStatusByLeg` |
|
||||
| Flight Schedule | `/api/mobile/getFlightSchedule` |
|
||||
| Login | `/api/mobile/login` |
|
||||
| Logout | `/api/mobile/logout` |
|
||||
| Check Login | `/api/mobile/checkLogin` |
|
||||
| Get Profile | `/api/mobile/getprofile` |
|
||||
| Manage Profile | `/api/mobile/manageProfile` |
|
||||
| Get PNR | `/api/mobile/getPnr` |
|
||||
| Validate PNR | `/api/mobile/validatePnr` |
|
||||
| Dashboard | `/api/mobile/getDashboard` |
|
||||
| Check-in | `/api/mobile/checkin` |
|
||||
| Seat Map | `/api/mobile/getSeatMap` |
|
||||
| Change Seat | `/api/mobile/changeSeat` |
|
||||
| Upgrade Eligibility | `/api/mobile/getUpgradeEligibilityInfo` |
|
||||
| Purchase E-First | `/api/mobile/purchaseEfirst` |
|
||||
| Bag Info | `/api/mobile/getBagInfo` |
|
||||
| Add Bags | `/api/mobile/addBags` |
|
||||
| Get Bags | `/api/mobile/getBags` |
|
||||
| Bag Carousel | `/api/mobile/getBagCarousel` |
|
||||
| Weather | `/api/mobile/getWeather` |
|
||||
| Account Activity | `/api/mobile/getAcctActivity` |
|
||||
| SkyClub Info | `/api/mobile/getSkyclubInfo` |
|
||||
| Purchase SkyClub | `/api/mobile/purchaseSkyclub` |
|
||||
| Receipts | `/api/mobile/getReceipts` |
|
||||
| Email Receipt | `/api/mobile/processEmailReceipt` |
|
||||
| Merchandise | `/api/mobile/getMerchandise` |
|
||||
| Promotions | `/api/mobile/getPromotions` |
|
||||
| Airport Mode | `/api/mobile/getAirportMode` |
|
||||
| Passenger Info | `/api/mobile/getPaxInfo` |
|
||||
| Manage Passenger | `/api/mobile/managePaxInfo` |
|
||||
| Travel Documents | `/api/mobile/getTravelDoc` |
|
||||
| Add Travel Doc | `/api/mobile/addTravelDoc` |
|
||||
| Emergency Contact | `/api/mobile/addEmergencyContact` |
|
||||
| Manage Cart | `/api/mobile/manageCart` |
|
||||
| Get Cart | `/api/mobile/getCart` |
|
||||
| Clear Cart | `/api/mobile/clearCart` |
|
||||
| Eligible FOP | `/api/mobile/getEligibleFop` |
|
||||
| SSR | `/api/mobile/getSsr` |
|
||||
| Available SSR | `/api/mobile/getAvailableSsr` |
|
||||
| Manage SSR | `/api/mobile/manageSsr` |
|
||||
| Manage FF | `/api/mobile/manageFF` |
|
||||
| Validate Address | `/api/mobile/validateAddress` |
|
||||
| Forgot Username | `/api/mobile/forgotUserName` |
|
||||
| Country Reference | `/api/mobile/getCountryReferenceData` |
|
||||
| Address Fields | `/api/mobile/getAddressFields` |
|
||||
| Enroll SkyMiles | `/api/mobile/enrollSM` |
|
||||
| Upsell Info | `/api/mobile/getPnrUpsellInfo` |
|
||||
| Upsell Fare Rules | `/api/mobile/getUpsellFareRules` |
|
||||
| Purchase Upsell | `/api/mobile/purchaseUpsell` |
|
||||
| Supported Version | `/api/mobile/supportedVersion` |
|
||||
| SkyMiles Info | `/api/mobile/getSMInfo` |
|
||||
| SkyMiles Pass | `/api/mobile/getSMPass` |
|
||||
| SC Info | `/api/mobile/getSCInfo` |
|
||||
| SC Pass | `/api/mobile/getSCPass` |
|
||||
| Membership Status | `/api/mobile/getMembershipStatusInfo` |
|
||||
| EOD Eligibility | `/api/mobile/getEODEligibility` |
|
||||
| Store Password | `/api/mobile/storePassword` |
|
||||
| Store Email | `/api/mobile/storeEmail` |
|
||||
| Update Password | `/api/mobile/updatePassword` |
|
||||
| Security Questions | `/api/mobile/getSecurityQuestions` |
|
||||
| Get SQA | `/api/mobile/getSQA` |
|
||||
| Store SQA | `/api/mobile/storeSQA` |
|
||||
| App Info | `/api/mobile/getinfo` |
|
||||
|
||||
## Request Headers (from DEX analysis)
|
||||
|
||||
The app uses an `AirlineRequest` pattern with these common headers:
|
||||
- `Content-Type: application/json`
|
||||
- Custom auth headers (session-based after `/api/mobile/login`)
|
||||
|
||||
## ASL Data Model (from DEX class analysis)
|
||||
|
||||
### AirportStandbyListRequest
|
||||
- `requestInfo` — flight identification
|
||||
- `departureDate` — date string
|
||||
|
||||
### AirportUpgradeStandbyModel
|
||||
Contains:
|
||||
- Upgrade list (by cabin class)
|
||||
- Standby list
|
||||
- `standbyPriority` / `standbyPriorityCode`
|
||||
- `upgradeList` entries
|
||||
- `ASLStandby` — individual standby entries
|
||||
- `ASLUpgrade` — individual upgrade entries
|
||||
- `UpgradeSeatRemaining` — available seats per cabin
|
||||
- `PassengerChiclet` — passenger display data
|
||||
|
||||
### UpgradeStandbyParams
|
||||
- `airportModeResponse`
|
||||
- Flight leg details
|
||||
- Eligibility flags
|
||||
|
||||
## Security Notes
|
||||
|
||||
- **No SSL pinning** in `network_security_config.xml` (only trusts system CAs)
|
||||
- **No PairIP or anti-tamper** — app runs on emulators
|
||||
- Auth is session-based via `/api/mobile/login`
|
||||
- The ASL endpoint likely requires an authenticated session
|
||||
- No Akamai bot detection observed on the mobile API path
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Call `/api/mobile/login` with Delta credentials to get a session
|
||||
2. Call `/api/mobile/getFlightStatus` with a flight number
|
||||
3. Call `/api/mobile/asl` with the flight details from the status response
|
||||
4. The ASL response should contain upgrade and standby lists
|
||||
Reference in New Issue
Block a user