Files
Flights/api_docs/spirit_api.md
Trey t 3790792040 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>
2026-04-08 15:01:07 -05:00

177 lines
6.4 KiB
Markdown

# Spirit Airlines Mobile API
Extracted from `com.spirit.customerapp` v4.7.0 (build 1340)
## Base URL
| Environment | URL |
|-------------|-----|
| **Production** | `https://api.spirit.com/customermobileprod/2.8.0/` |
| QA1 | `https://apiqa.spirit.com/qa01-customermobileapi/` |
| QA2 | `https://apiqa.spirit.com/qa02-customermobileapi/` |
| Dev1 | `https://apiqa.spirit.com/dev01-customermobileapi/` |
| Dev2 | `https://apiqa.spirit.com/dev02-customermobileapi/` |
| Stage | `https://api.spirit.com/stage-customermobileapi/` |
| CMS | `https://content.spirit.com/api/content/` |
## Standby / Board of Availability (BOA)
Spirit uses "BOA" (Board of Availability) as their standby system:
```
GET https://api.spirit.com/customermobileprod/2.8.0/v1/getboaparameters
POST https://api.spirit.com/customermobileprod/2.8.0/v1/getboastatus
```
### BOA Status Request
- **Method:** POST
- **Body:** `BoaStatusRequestDto` (JSON)
- **Response:** `BoaStatusResponseDto` containing `BoaStatus` objects
### BOA Data Model
- `BoaStatusInfo` — status of standby position
- `boaStatusChecker` — polls for status updates using a `boaUniqueSessionToken`
- `isStandby` — boolean flag on trip/flight objects
- `standby` — standby details on trip segments
### BOA Flow
1. Call `v1/getboaparameters` to get BOA config
2. Call `v1/getboastatus` with flight/booking details
3. Poll using `boaStatusChecker` with session token for updates
## All API Endpoints
### Authentication
| Method | Path | Description |
|--------|------|-------------|
| POST | `v2/Token` | Fetch auth token |
| POST | `v3/Token` | Fetch v3 auth token |
| PUT | `v3/Token` | Refresh v3 token |
### Init & Config
| Method | Path | Description |
|--------|------|-------------|
| GET | `v1/init` | App initialization |
| GET | `v1/stations` | Airport station list |
| GET | `v1/OnD/Countries` | Country reference data |
### Flight Search & Status
| Method | Path | Description |
|--------|------|-------------|
| POST | `v5/Flight/Search` | Search flights |
| POST | `v3/GetFlightInfoBI` | Flight info |
| POST | `v1/booking/flightdetails` | Flight details |
| POST | `v1/calendar/availabledates` | Available dates calendar |
### Booking
| Method | Path | Description |
|--------|------|-------------|
| GET | `v1/booking/retrieve` | Retrieve booking (params: RecordLocator, LastName) |
| GET | `v1/booking` | Get booking state |
| GET | `v1/booking?screenType=ReviewTempStay` | Booking review |
| PUT | `v2/booking` | Update booking |
| POST | `v1/booking/book` | Confirm booking |
| POST | `v1/trip/sell` | Sell trip |
| POST | `v2/ValidateBookingRequest` | Validate booking |
### Standby / BOA
| Method | Path | Description |
|--------|------|-------------|
| **GET** | **`v1/getboaparameters`** | **Get BOA (standby) parameters** |
| **POST** | **`v1/getboastatus`** | **Get standby status** |
### Check-in & Boarding
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/booking/checkin/journey` | Check in for journey |
| POST | `v2/booking/boardingpasses/journey` | Get boarding passes |
### Trip Management
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/managetrip` | Manage trip |
| POST | `v2/tripdetails` | Get trip details |
| POST | `v3/mytrips` | Get my trips |
| POST | `v1/booking/passengers/passengerreturndates` | Passenger return dates |
### Seats
| Method | Path | Description |
|--------|------|-------------|
| GET | `v1/booking/seatmap` | Get seat map |
| GET | `v4/booking/seatmaps/` | Get seat maps v4 |
| POST | `v4/booking/passengers/{passengerKey}/seats/{unitKey}` | Assign seat |
### Bags
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/bags` | Get bags |
| PUT | `v1/bags/update` | Update bags |
### Bundles & Upsell
| Method | Path | Description |
|--------|------|-------------|
| GET | `v3/options` | Get options |
| PUT | `v1/options/update` | Update options |
| POST | `v1/bundle/UpsellAvailability` | Upsell availability |
| POST | `v3/bundle/ssrs` | Bundle SSRs |
| POST | `v4/bundle/ssrs` | Bundle SSRs v4 |
| POST | `v2/cart` | Manage cart |
### Payments
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/booking/payments/fetchredemptiondetail` | Fetch redemption |
| POST | `v1/booking/payments/redeem` | Redeem points |
| DELETE | `V3/User/Person/StoredPayments/{key}` | Delete stored payment |
### Account
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/FreeSpirit/CreateAccount` | Create Free Spirit account |
| POST | `v1/FreeSpirit/Booking/CreateAccount` | Create account during booking |
| GET | `v1/User/Person` | Get user profile |
| POST | `v1/account/password/reset` | Reset password |
| POST | `v1/account/updateexpiredpassword` | Update expired password |
| POST | `v1/account/points` | Account points |
| POST | `v1/points` | Points |
| POST | `v1/MemberInfo/ValidateFSNumber` | Validate Free Spirit number |
| POST | `v1/registerForPromotion` | Register for promotion |
### Documents & SSR
| Method | Path | Description |
|--------|------|-------------|
| POST | `v1/booking/passengers/{key}/documents` | Add travel doc |
| PUT | `v1/booking/passengers/{key}/documents/{docKey}` | Update travel doc |
| POST | `v1/booking/passengers/{key}/infant/documents` | Add infant doc |
| POST | `v1/document/validate` | Validate document |
| POST | `v1/booking/ssrs/add/acia` | Add SSR |
| POST | `v2/trip/specialassistance` | Special assistance |
| POST | `v3/ssrs/health-ack/accept` | Accept health acknowledgment |
| POST | `v3/ssrs/health-ack/decline` | Decline health acknowledgment |
### Other
| Method | Path | Description |
|--------|------|-------------|
| GET | `v1/GetContent/help` | Help content |
| POST | `v1/getdynamiccontent` | Dynamic content |
| POST | `v1/booking/touristtax` | Tourist tax |
| POST | `v1/booking/passengers/temporarystay/address` | Temp stay address |
| POST | `v1/travelguard/getquote` | Travel insurance quote |
## Security Notes
- **No SSL pinning** in network_security_config.xml
- **No PairIP or anti-tamper** protection
- Uses Retrofit2 for HTTP
- Auth via token-based system (`v2/Token`, `v3/Token`)
- `libakamaibmp.so` present — Akamai Bot Manager for bot detection
- App runs fine on emulators
## CMS Endpoints
| Path | Description |
|------|-------------|
| `en-US?path=mobile/book/paxtravelingui` | Passenger traveling UI content |
| `en-US?path=mobile/localnotification` | Local notification content |
| `en-US?path=mobile/mytripui` | My trips UI content |