vAMSYS 5.4.0
Beta
These API changes are currently in beta. You can test against the beta environment at beta.vamsys.io. Additional changes may be added before the final release.
Beta Access:
- Phoenix/Orwell -> beta.vamsys.io
- Operations API Documentation -> beta.vamsys.io/docs/operations
- Pilot API Documentation beta.vamsys.io/docs/pilot
oAuth PKCE (Pilot API) keys will be deleted on 5.4 launch - you will need to recreate them if you wish to use them once 5.4 launches - this is to ensure the 5.3 created keys have been attested and have proper scopes attached.
vAMSYS 5.4 is a major 5.0 release introducing the Pilot API, personal rosters, bonus points system changes, activity flight type exclusions, hot weather scoring exemptions, route tag review autoreject, and significant performance improvements across the platform.
What's new
Some items are Launch Only
Some changelog items, even if configured in Beta environment, will not take effect until 5.4 is out to public release - 16th March at the earliest. For example:
- Generated Roster Leg tracking
- Staff Bonus Points
- New Scorers/Autorejects
- Activity requirement changes
will work only when 5.4 launches
Pilot API
A brand-new OAuth PKCE API for third-party pilot-facing applications. Developers can build apps that authenticate pilots and access their data within the context of a specific Virtual Airline. The Pilot API offers over 40 endpoints across 10 granular scopes, covering:
Profile & Identity — pilot profile, rank, statistics, statistics breakdown, badges, holidays, preferences, location, and hub.
Bookings & Dispatch — list, create, and cancel bookings; generate dispatch URLs; link SimBrief OFPs.
PIREPs — browse flight history, view position reports and flight profiles, read and post comments.
Manual PIREP Claims — submit, view, and delete manual flight claims.
Activities & Rosters — register for activities, track progress, manage personal rosters.
Favourites & NOTAMs — toggle favourite aircraft and airports, browse and acknowledge NOTAMs.
Full OpenAPI documentation is auto-generated and available via the Scalar documentation viewer. OAuth clients are created and managed in Orwell.
Personal Rosters & My Rosters
Pilots can now save generated rosters from the Flight Generator as personal rosters. Personal rosters require a minimum of two legs and appear on the new My Rosters page alongside any registered curated rosters. Each roster includes progress tracking with real-time updates, dispatch integration for booking individual legs, and an interactive map showing the full route.
Registering for a curated roster now also adds it to My Rosters, giving pilots a single unified view of all their active rosters. Pilots can unregister from curated rosters directly from this page.
Bonus Points
Three new bonus scoring tiers can be applied to PIREPs, each configurable as fixed points or a percentage of the base PIREP score:
Staff Bonus — bonus points awarded on every PIREP filed by a staff member. Configured in PIREP & Reward Settings.
Badge Bonus — per-badge bonus points awarded on PIREPs when the pilot holds that badge. Configured on each badge individually.
Airport Manager Bonus — the existing Airport Manager bonus now supports percentage mode alongside fixed points.
All bonus types support custom display names.
Activity Flight Type Exclusions
Staff can now exclude specific flight types from pilot activity requirement checks. Excluded flight types do not count towards or against activity thresholds for both initial and ongoing requirements. Configure this in Orwell under Settings > Activity Requirements.
Hot Weather Flap Exemption
Parking flap scoring rules (Flaps Retracted Before Parking / Flaps Not Retracted Before Parking) now support a hot weather exemption. When the arrival airport temperature exceeds a threshold (determined from METAR data within 6 hours of arrival), an alternative flap range can be accepted. This prevents pilots from being penalised for leaving flaps extended in hot weather conditions. Configurable per scoring rule with minimum/maximum flap positions and optional bonus points.
Phoenix Dashboard Hide/Show Toggle
Each Phoenix Dashboard component now has a hidden toggle. Hidden components preserve all their configuration (size, position, settings) and can be quickly toggled back without re-entering settings. This makes it easy to seasonally enable or disable dashboard sections.
Flight Time on Activity Cards
Activity cards in Phoenix now display estimated flight time information. Tours and rosters show the total flight time, while airport-based events show a time range. This helps pilots gauge the time commitment before joining an activity.
Operations API Enhancements
OAuth Scopes — five granular scopes for Client Credentials tokens, allowing read-only tokens safe for public use. Fully backwards-compatible — existing tokens continue to work without changes.
See the separate Operations API changelog entry for full technical details including breaking changes.
Route Tag Review Autoreject
A new autoreject rule lets staff configure specific route tags (such as Exam or Checkflight) that automatically trigger PIREP rejection when a pilot flies a tagged route. Tags are configured per rule in the AutoReject Rules settings.
What's improved
Curated Roster enhancements — curated rosters now support optional completion points (fixed or percentage), fleet-type-per-leg selection as an alternative to specifying individual aircraft, and points-as-percentage mode.
Roster name overrides — customise the "My Rosters" label, roster generator label, and roster type labels to match your Virtual Airline's terminology.
Orwell Profile link — staff can access Orwell pilot profiles directly from the Phoenix pilot profile page.
Dispatch information — callsign and flight number are now displayed in dispatch route information.
PIREP weight — all displayed flight counts throughout Phoenix now respect the pirep weight setting used during Transfer/Manual PIREP creation.
SimBrief OFP from booking detail — pilots can generate a SimBrief OFP directly from the booking detail page without returning to the dispatch screen.
What's fixed
Duplicate pilot accounts being created by repeated restore operations
ICAO/IATA airport lookup failing for lowercase input in route creation
Null flight distance on non-jumpseat routes — existing affected routes have been backfilled
Integer overflow when creating PIREPs through pilot invite with very large values
Leaderboard rank position mismatch in the My Position panel — deleted pilots and the system user are now excluded from ranking calculations
Route bulk actions could process an unlimited number of records — now capped at 500 and converted to batch SQL for reliability
Missing pirep_analytics_count column in Ranks pilot list
OpenAPI specification type mismatches causing documentation viewer errors
Hidden filter not working correctly in Fleet and Aircraft lists
API 500 errors caused by Spatie Data structure caching
Flight length arrival time calculation producing incorrect values
Various N+1 query issues: activity detail page reduced from 170+ to approximately 80 queries, with fixes also applied to the events listing and tour/roster tables
Hidden aircraft could be booked via pilot favourites, bypassing the visibility filter
Map sprite and glyph assets pointing to external URLs that intermittently failed — now self-hosted
Performance
Column selection added to all Operations API index endpoint eager loads, reducing data transfer and query times
Covering partial index added for pilot listing by airline
Middleware audit: hot paths cached, dead code removed, OAuth logging made asynchronous
Three duplicate queries per page load eliminated from middleware and layout