Flight Types
Company-specific flight type definitions. Used to classify flights by purpose and determine logbook time allocation.
Flight Classification Values
pic
Pilot in Command
PIC total
picus
Pilot in Command Under Supervision
Counts toward PIC total; also reported separately
sic
Second in Command
SIC total — only counts on multipilot aircraft
fi
Flight Instructor
Counts toward PIC and FI totals; also reported separately
dual
Dual Received
DUAL total
cri
Class Rating Instructor
Counts toward PIC and FI totals; also reported separately
iri
Instrument Rating Instructor
Counts toward PIC and FI totals; also reported separately
fifi
Flight Instructor of Flight Instructors
Counts toward PIC and FI totals; also reported separately
sfi
Synthetic Flight Instructor
Counts toward PIC and FI totals; also reported separately
tri
Type Rating Instructor
Counts toward PIC and FI totals; also reported separately
exa
Examiner
Counts toward PIC and FI totals; also reported separately
sup
Supervisor
Reported separately only — not rolled into PIC or FI
none
None
Not logged
These values apply to pic_flight_time, sic_flight_time, and supervisor_flight_time, which determine how logbook time is allocated to the flight's PIC (pic_id), SIC (sic_id), and Supervisor (supervisor_id) respectively.
Migration note:
copic(Copilot) is deprecated and removed. All existingcopicconfigurations were migrated tosic. To preserve the original semantics,sictime is only credited on multipilot aircraft (Aircraft.multipilot = true); on single-pilot aircraftsictime is not logged. Do not sendcopic— it is no longer accepted as a classification key.
Migration note:
tre(Type Rating Examiner) was renamed toexa(Examiner) — same meaning, same rollup, generic key not tied to type ratings. Existingtreconfigurations were migrated toexa. Do not sendtre; it is no longer returned by the API and no longer counts toward any total.
PIC / FI rollup:
picus,cri,iri,fifi,sfi,tri,exaall count toward a pilot's PIC total time. The instructor/examiner classes (cri,iri,fifi,sfi,tri,exa) additionally count toward the FI total time —picusdoes not (it is PIC time only). Each is also exposed as its own line in pilot statistics so the time worked in each function can be seen separately.supis the exception: it is reported separately only and never rolled into PIC or FI.
List Flight Types
GET /flight_types/index.json
GET /flight_types/index/true.json
List active (non-deleted) flight types for the company, ordered by order field. Pass true to filter only types with booking: true.
Response
List Flight Types (Manager)
GET /flight_types/manager_index.json
List all flight types including soft-deleted ones. Intended for management views.
Response
Same structure as index, includes all records regardless of deleted status.
View Flight Type
GET /flight_types/view/{id}.json
Retrieve a single flight type by ID.
Path Parameters
id
number
Flight type ID
Response
Create Flight Type
POST /flight_types/manager_add.json
Create a new flight type. Also returns the flightClassification reference data.
Request Body
FlightType.name
string
Yes
Display name
FlightType.color
string
No
Hex color code
FlightType.booking
boolean
No
Available for booking scheduling
FlightType.pic_flight_time
string
No
PIC time classification key
FlightType.sic_flight_time
string
No
SIC time classification key
FlightType.supervisor_flight_time
string
No
Supervisor time classification key. Defaults to none
Required certificates (optional)
A flight type can require certificates per seat (pic / sic / supervisor) — for example a training type where the PIC must hold a licence, a class-1 medical and a single-engine rating, while the student SIC only needs a medical. Each seat is independent; an empty list means no requirement for that seat.
A required entry references a certificate type key from UserCertificate.$types (e.g. licence, sep_land_rating, medical_class_1) — the same catalog returned by GET /pilots/certificate_types.json.
To set them, send the following alongside the FlightType fields (applies to both manager_add and manager_edit):
syncRequiredCertificates
boolean
No
Opt-in flag. When present (1) the request owns the requirements: the posted RequiredCertificate list fully replaces the existing one (an empty list clears them). When absent, existing requirements are left untouched.
RequiredCertificate[N].role
string
—
Seat the requirement gates: pic, sic or supervisor.
RequiredCertificate[N].certificate_type
string
—
A certificate type key (e.g. medical_class_1).
Invalid roles/types and duplicate (role, certificate_type) pairs are ignored server-side.
Example (form-encoded):
Response
Edit Flight Type
POST /flight_types/manager_edit/{id}.json
PUT /flight_types/manager_edit/{id}.json
Update a flight type. A GET to this endpoint returns the current record data plus usage count.
Path Parameters
id
number
Flight type ID
Request Body (POST/PUT)
Same fields as create, wrapped under FlightType.
Response (POST/PUT)
Response (GET)
requiredCertificates is the flat list of the flight type's per-seat requirements (see Required certificates above).
Delete Flight Type
POST /flight_types/manager_delete/{id}.json
DELETE /flight_types/manager_delete/{id}.json
Soft-delete a flight type (sets deleted = 1). Only flight types belonging to the authenticated company can be deleted.
Path Parameters
id
number
Flight type ID
Response
Reorder Flight Types
POST /flight_types/manager_reorder.json
Set the display order of flight types. Restricted to managers (user_group_id ≤ 110).
Request Body
items
array
Yes
Array of flight type IDs in desired display order
Response
Certificate Compliance
GET /flight_types/compliance/{id}.json
Report whether a user holds the required certificates to occupy each seat (pic / sic / supervisor) of a flight type. Uses the flight type's required certificates; a seat with no requirements is always compliant.
A required type is satisfied when the user holds at least one certificate of that exact type that is valid at the evaluated time — issue date empty or in the past, expiration empty or in the future (same rule as the licence-validity check used across the app).
Path Parameters
id
number
Flight type ID
Query Parameters
user_id
number
No
Target pilot. Defaults to the authenticated user. Allowed for staff (user_group_id ≤ 170 — managers, instructors, dispatchers); a regular pilot/student (group > 170) passing another user's id gets 403 Forbidden. The target must belong to the caller's company.
at
number
No
Unix seconds at which to evaluate certificate validity. Defaults to now. Pass a future time (e.g. a planned flight start) so forward scheduling reflects validity at that moment.
Response
Per-seat breakdown. For each seat: compliant is false when any required type is missing (not held) or expired (held but none currently valid); ok lists the satisfied types. required is the full list configured for that seat. limit is the earliest unix time the seat stops being compliant — the soonest expiration among the satisfied required certs — or null when the seat has no requirements or a required certificate never expires. Combined with a future at, this lets callers warn when a certificate expires before a planned flight.
Errors
404
Flight type not found in the caller's company, or user_id is not a member of the company
403
A user with user_group_id > 170 passed a user_id other than their own
This endpoint is advisory
The result reports compliance; it does not decide whether an action is allowed. Nothing on this endpoint blocks a booking or a flight on its own — enforcement lives with the company settings of whichever feature is calling it:
Self-bookings (
self_schedule = 1): a non-compliant seat stops the booking only whenrequire_pic_docs = 1andschedule_self_allow_nodocs = 0. See Certificate gate on self-bookings.Manager schedule edits and flight dispatch: governed by
require_pic_docstogether withblock_pic_without_docs.
Treat a non-compliant seat as a warning unless the relevant setting pair is active — blocking regardless would refuse bookings the API itself accepts.
Last updated