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>
155 lines
5.4 KiB
Markdown
155 lines
5.4 KiB
Markdown
# 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
|