Skip to content

About

Stratos Core API — phpVMS 7 module providing auth, pilot, data, and flight ops endpoints

Resources

Stars

2 stars

Watchers

2 watching

Forks

Repository files navigation

Stratos Core API

A phpVMS 7 module that adds the API surface the Stratos desktop client needs — pilot identity, reference data, and flight ops. Required by every Stratos integration; everything else (logbook, screenshots, future plugins) builds on top.

📖 API reference: docs.skyvexsoftware.com/api-reference/introduction — full OpenAPI spec for every endpoint this module exposes. Useful when forking, when implementing the same contract in a non-phpVMS stack, or when debugging client behaviour.

Install

You'll need a working phpVMS 7 install.

  1. Download module.zip from the latest release.
  2. In your phpVMS admin: Admin → Modules → Add New Module, upload the zip.
  3. Back on the Modules list, enable StratosCore.
  4. From a shell:
    php artisan module:migrate StratosCore
    php artisan optimize:clear

That's it — your phpVMS now exposes the Stratos API at /api/stratos. Pilots running the Stratos desktop client just point it at your VA's URL and log in.

What it adds

The module mounts these endpoints under /api/stratos. All require a Bearer token (the pilot's users.api_key) except the handshake and the credentials login.

GET    /                          handshake
POST   /pilot/login               credentials login
GET    /pilot/verify              pilot profile
GET    /pilot/statistics          flight hours, average landing rate, etc.
GET    /data/aircraft             fleet list
GET    /data/airports             airport directory
GET    /data/announcements        VA announcements feed
GET    /flights/bookings          pilot's current bids
GET    /flights/bookings/{bid}/aircraft   aircraft eligible for a bid's flight
GET    /flights/search            schedule search
POST   /flights/start             begin tracking a booked flight
POST   /flights/change-aircraft   reassign a bid's aircraft before departure
POST   /flights/update            position / phase update
POST   /flights/complete          file PIREP
POST   /flights/cancel            cancel active flight
POST   /flights/unbook            drop a bid

Bookings carry an aircraft_changeable flag — false when the flight has a locked SimBrief airframe, true otherwise. When changeable, GET /flights/bookings/{bid}/aircraft lists the eligible airframes (narrowed by phpVMS's native FlightService::filterSubfleets, the same logic the PIREP-create form uses) and POST /flights/change-aircraft persists the pilot's choice to bids.aircraft_id, which /flights/start then reads.

All endpoints are pure phpVMS-native: pilot rows in users, bid aircraft assignments in bids, flight history in acars (FLIGHT_PATH rows), PIREPs in pireps, custom metadata in pirep_field_values. The module owns zero tables of its own.

Every endpoint responds with application/json and permissive CORS headers (Access-Control-Allow-Origin: *), and answers OPTIONS/HEAD preflight requests directly — so a browser-based or external integration can call the API cross-origin. The Authorization and X-Stratos-Version headers are both allow-listed.


Building your own module on top

This module is the base for the wider Stratos ecosystem. Logbook, screenshots, and any custom Stratos-aware phpVMS module can:

  • Import Modules\StratosCore\Http\Middleware\StratosAuth for the same Bearer-token auth
  • Reuse Modules\StratosCore\Actions\LandingAnalysisMapper and PirepDistanceCalculation for normalising and recomputing flight data
  • Add their own endpoints under different prefixes (e.g. a logbook module would mount /api/stratos/logbook)

Declare this module as a dependency in your module.json:

{
  "requires": ["skyvexsoftware/stratos-core-api"]
}

If you're building a Stratos integration that doesn't fit as a phpVMS module — e.g. a custom theme widget, a dashboard plugin, or an external service — query the same endpoints the desktop client uses. The Bearer-token model is the same.

Local development

# clone + dependencies
git clone https://github.com/skyvexsoftware/stratos-core-api
cd stratos-core-api
composer install

# run the test suite
./vendor/bin/pest

The tests use Pest + Orchestra Testbench and target Laravel 10 (the version phpVMS 7 ships). Stubs at tests/stubs/ cover phpVMS-host classes so the suite runs in isolation. CI runs on PHP 8.2, 8.3, and 8.4.

For end-to-end testing against a real phpVMS install, symlink the repo into your phpVMS modules/ directory:

ln -s "$(pwd)" /path/to/phpvms/modules/StratosCore
cd /path/to/phpvms && php artisan module:enable StratosCore

After that any edits in this repo are live in your phpVMS install — no rebuild needed.

Releasing

Tag a release with v* (e.g. v0.1.0). The release workflow builds module.zip and attaches it to the GitHub release. Operators install it via the Admin → Modules → Add New Module flow above.

Credits

This module is based in part on the smartCARS 3 phpVMS 7 API by Invernyx, Inc. (d.b.a. TFDi Design), used under the MIT License.

License

MIT — see LICENSE. Includes code Copyright (c) 2025 Invernyx, Inc., used under the MIT License.

About

Stratos Core API — phpVMS 7 module providing auth, pilot, data, and flight ops endpoints

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages