FormRequest envelopes.routes/api.php are cleanly segregated into 3 tiers. Each tier defines distinct expectations for the client./api/auth/*): Handles JWT issuance (login, register), rotation (refresh), logout, and password resets./api/catalog/*): Highly normalized, public read-only access to Destinations, Flights, Hotels, Restaurants, and Attractions./api/checkout, /api/paymob, /api/plans, /api/orders): Deals with subscriptions and pay-per-use products./api/trips, /api/agency/*): CRUD for User trips, Itinerary items, Budget Snapshots, and AI trip generation./api/system/*): Handles Contact logging, Newsletter subscriptions, Weather proxies, and Admin utilities (Analytics, Reports).FormRequest Enforcement Contract$request->validate([...]).POST, PUT, PATCH) declares a dedicated class extending Illuminate\Foundation\Http\FormRequest.rules() array before the Controller method body even executes.string|in:plan,trip_fork,trip_package inherently block garbage data.idempotency_key is strictly restricted to nullable|string|max:64.FormRequest class is reused, if the email format changes, updating StoreContactRequest automatically applies the fix to all routes using it.422 JSON payload: {"message": "The given data was invalid.", "errors": {...}} without writing a single line of if logic.php artisan route:list --json. The total of 106 unique operations are mapped logically:php artisan route:list) serves as the definitive proof to frontend teams and QA auditors that every exposed API operation has a documented owner, a strict validation envelope, and an explicit Middleware guard (Auth, Verified, or HMAC).