Skip to content

Aircraft Reports

Role names and user_group_id values are listed in User groups.

Manage aircraft technical reports — defects, informational notes, maintenance actions, servicing entries, and MEL (Minimum Equipment List) / CDL (Configuration Deviation List) items. Requires premium or unlimited subscription plan.

Action Allowed
List / view Any authenticated company user on a premium/unlimited plan
Create a DEFECT, INFO, MAINTENANCE or SERVICE report Any authenticated company user. When the company setting aircraft_report_without_flight is false, a report with no flight_id is limited to user_group_id ≤ 150, 300 and the aircraft’s managers; everybody else must send the flight_id of a flight of that aircraft, or gets {"result": false, "message": "Your company files aircraft reports from a logged flight. …"}
Create a MEL / CDL item user_group_id in 1, 100, 105, 110, 300, or the manager of that aircraft
Edit a MEL/CDL report, extend, delete user_group_id in 1, 100, 105, 110, 300, or the manager of the report’s aircraft
Release a grounding — an edit that leaves an open grounding report no longer grounding (aircraft_status → FLYABLE, dispatch_condition away from GROUNDED, or status → CLOSED) user_group_id in 1, 100, 105, 110, 300, or the manager of the report’s aircraft. Anyone who may file a report may still ground an aircraft

“Manager of the aircraft” is any user named in Aircraft.ManagerIds (a tail may have several) and is independent of the user group — see Aircraft → Aircraft manager. A report on any other aircraft answers 404.

POST /maintenance/aircraft_reports/index.json

Retrieve a paginated list of aircraft reports for the company fleet.

Parameter Type Description
aircraft number Filter by aircraft ID
flight string Filter by flight UUID
type string Filter by report type (DEFECT, INFO, MEL, CDL, MAINTENANCE_ACTION, SERVICING). Accepts a comma separated list, e.g. MEL,CDL
status string Filter by status (OPEN, DEFERRED, CLOSED). Accepts a comma separated list, e.g. OPEN,DEFERRED
severity string Filter by severity (LOW, MEDIUM, HIGH, CRITICAL)
category string Filter by MEL category (A, B, C, D) — matches on the linked MelItem, so it only has any effect combined with type=MEL (a CDL item usually has no category)
wc string Search in title and description
job string Only reports attached to this maintenance job UUID
linked string no returns reports not attached to any maintenance job, yes only those that are
limit number Page size, default 50, capped at 500

Every returned row is contained with its MelItem (and that item’s MelItemLimitation rows) when one exists — see MEL and CDL items below for its shape.

{
"reports": [
{
"AircraftReport": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"aircraft_id": "45",
"user_id": "123",
"type": "DEFECT",
"title": "Nose gear shimmy above 80kt",
"description": "Noticeable shimmy on landing roll and takeoff above 80 knots.",
"ata_chapter": "32",
"system": "Landing Gear",
"severity": "MEDIUM",
"aircraft_status": "FLYABLE",
"dispatch_condition": "MONITOR",
"status": "OPEN",
"hours": "12500.300",
"cycles": "8900",
"deferred_until": null,
"deferred_reference": null,
"closed_by": null,
"closed": null,
"created": "1714003200",
"maintenance_job_id": null
},
"Job": {
"id": null,
"name": null,
"n_id": null,
"completed": null
},
"Aircraft": {
"id": "45",
"registration": "EC-ABC"
},
"User": {
"id": "123",
"UserDetail": {
"name": "John",
"surname": "Doe"
}
}
}
],
"paginate": {
"page": 1,
"current": 10,
"count": 34,
"prevPage": false,
"nextPage": true,
"pageCount": 4,
"limit": 50
}
}

GET /maintenance/aircraft_reports/view/{id}.json

Retrieve full details for a single aircraft report.

Parameter Type Description
id string Report UUID
{
"report": {
"AircraftReport": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"aircraft_id": "45",
"user_id": "123",
"type": "DEFECT",
"title": "Nose gear shimmy above 80kt",
"description": "Noticeable shimmy on landing roll and takeoff above 80 knots.",
"ata_chapter": "32",
"system": "Landing Gear",
"severity": "MEDIUM",
"aircraft_status": "FLYABLE",
"dispatch_condition": "MONITOR",
"status": "DEFERRED",
"hours": "12500.300",
"cycles": "8900",
"deferred_until": "1717200000",
"deferred_reference": "MEL-32-01",
"closed_by": null,
"closed": null,
"created": "1714003200"
},
"Aircraft": {
"id": "45",
"registration": "EC-ABC",
"AircraftModel": {
"name": "C172",
"AircraftManufacturer": {
"name": "Cessna"
}
}
},
"User": {
"id": "123",
"UserDetail": {
"name": "John",
"surname": "Doe"
}
},
"ClosedByUser": {
"id": null,
"UserDetail": {
"name": null,
"surname": null
}
},
"Job": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "100h Inspection",
"status": null,
"crs": null,
"start": "1714003200",
"end": "1714089600"
}
}
}

POST /maintenance/aircraft_reports/create.json

Create a new aircraft report. The authenticated user is automatically set as the reporter and the creation timestamp is set server-side.

After a successful save, an in-app notification is sent to all active company staff (admins, managers, pilots, and mechanics) except the reporter. The notification includes the report title, severity, and aircraft status (FLYABLE / GROUNDED).

Parameter Type Required Description
AircraftReport[aircraft_id] number yes Aircraft ID
AircraftReport[type] string yes DEFECT, INFO, MEL, CDL, MAINTENANCE_ACTION, SERVICING
AircraftReport[title] string yes Report title (max 180 chars)
AircraftReport[description] string no Detailed description
AircraftReport[ata_chapter] string no ATA chapter code (max 10 chars)
AircraftReport[system] string no Aircraft system / ATA description (max 120 chars)
AircraftReport[severity] string no LOW (default), MEDIUM, HIGH, CRITICAL
AircraftReport[aircraft_status] string no FLYABLE (default), GROUNDED
AircraftReport[dispatch_condition] string no NONE (default), GROUNDED, MEL, CDL, MONITOR. Automatically forced to match type when type is MEL or CDL
AircraftReport[status] string no OPEN (default), DEFERRED, CLOSED
AircraftReport[flight_id] string no Associated flight UUID
AircraftReport[hours] number no Aircraft hours at time of report
AircraftReport[cycles] number no Aircraft cycles/landings at time of report
AircraftReport[deferred_until] number no Unix timestamp — deferred expiry date
AircraftReport[deferred_reference] string no MEL/CDL reference number (max 120 chars)

MEL / CDL block (only when AircraftReport[type] is MEL or CDL)

Section titled “MEL / CDL block (only when AircraftReport[type] is MEL or CDL)”

Include a sibling MelItem block (and optionally MelItemLimitation) in the same request. When type is MEL and MelItem fails to save (e.g. missing category), the whole request is rolled back — the AircraftReport row is deleted rather than left as a MEL/CDL report with no detail row.

Parameter Type Required Description
MelItem[category] string required for MEL, optional for CDL A, B, C, D — if supplied on a CDL item it is fully honored and drives the same interval/expiry computation as it would for a MEL item
MelItem[interval_type] string no NEXT_FLIGHT, CALENDAR_DAYS, FLIGHTS, FLIGHT_DAYS, CYCLES. Defaults from category when omitted — A → NEXT_FLIGHT; B/C/D → CALENDAR_DAYS with interval_value 3/10/120
MelItem[interval_value] number no Only meaningful with a non-NEXT_FLIGHT interval type — e.g. a Remarks-column override for Category A expressed in flights/flight days/cycles
MelItem[mel_reference] string no MEL/CDL item reference, e.g. 28-22-01 (max 60 chars)
MelItem[released_by] number yes User ID of the releaser — see Releasers for who qualifies
MelItemLimitation[][code] string yes (per row) One of the limitation codes
MelItemLimitation[][value] string no Free value for the code, e.g. an altitude or a passenger count (max 60 chars)
MelItemLimitation[][note] string no Free-text note (max 255 chars)

The rectification window (starts/expires) and, for flight-counted intervals, the baseline_flights snapshot are computed server-side at creation and cannot be posted directly. baseline_cycles is a known gap: CYCLES is a selectable interval_type, but nothing server-side currently populates a cycles baseline for it.

{
"data": {
"aircraft_id": "45",
"type": "DEFECT",
"title": "Nose gear shimmy above 80kt",
"description": "Noticeable shimmy on landing roll and takeoff above 80 knots.",
"ata_chapter": "32",
"system": "Landing Gear",
"severity": "MEDIUM",
"aircraft_status": "FLYABLE",
"dispatch_condition": "MONITOR",
"hours": "12500.300",
"cycles": "8900",
"user_id": "123",
"created": "1714003200"
},
"result": {
"AircraftReport": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"aircraft_id": "45",
"type": "DEFECT",
"title": "Nose gear shimmy above 80kt"
}
},
"message": null
}

On validation failure, result is false and message contains field errors:

{
"data": { ... },
"result": false,
"message": {
"title": ["Title is required"],
"type": ["Invalid type"]
}
}

POST /maintenance/aircraft_reports/edit/{id}.json

Update an existing aircraft report.

Parameter Type Description
id string Report UUID

Same fields as Create Report. Only include the fields you want to update — the request is a partial update and omitted fields keep their stored value.

The following fields are read-only after creation and are ignored if posted: aircraft_id, flight_id, user_id, created, closed, closed_by.

MEL / CDL block (only when the report’s type is MEL or CDL)

Section titled “MEL / CDL block (only when the report’s type is MEL or CDL)”

A much narrower set of MelItem fields can be changed after creation — category, interval and the computed window are fixed at creation time and cannot be edited:

Parameter Type Description
MelItem[mel_reference] string MEL/CDL item reference (max 60 chars)
MelItem[placard_fitted] boolean Whether a placard has been fitted
MelItem[procedures] string M (maintenance), O (operations), or both
MelItem[released_by] number Change the releaser — must still be a valid releaser (see Releasers)

If MelItemLimitation[] is present in the request, it fully replaces the item’s existing limitations (all previous rows are deleted, then the posted rows are inserted) — it is not a partial patch. Omit the key entirely to leave existing limitations untouched.

Closure is derived from status, never taken from the request:

Posted status Server behaviour
CLOSED, report currently open stamps closed with the current timestamp and closed_by with the authenticated user
CLOSED, report already closed leaves the existing stamp untouched
OPEN or DEFERRED clears closed and closed_by
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "CLOSED",
"closed_by": "456",
"closed": "1714608000"
},
"result": {
"AircraftReport": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "CLOSED"
}
},
"message": null
}

GET /maintenance/aircraft_reports/delete/{id}.json

Delete an aircraft report.

Parameter Type Description
id string Report UUID
{
"result": true,
"report": {
"AircraftReport": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Nose gear shimmy above 80kt"
},
"Aircraft": {
"id": "45",
"registration": "EC-ABC"
}
}
}

A report of type MEL or CDL is always paired 1:1 with a MelItem row (contained as MelItem on List Reports and View Report, with its MelItemLimitation rows nested inside it). The fields below are the shape of that contained MelItem:

Field Type Description
id string MelItem UUID
aircraft_report_id string Parent report UUID
mel_reference string | null MEL/CDL item reference, e.g. 28-22-01
category string | null A, B, C, D, or null for a category-less CDL item
interval_type string | null NEXT_FLIGHT, CALENDAR_DAYS, FLIGHTS, FLIGHT_DAYS, CYCLES
interval_value number | null Day/flight/cycle count for the interval, when applicable
starts number | null Unix timestamp — midnight, company timezone, the day after the item was raised
expires number | null Unix timestamp — end of the rectification window; null for a counter-based interval (FLIGHTS/NEXT_FLIGHT/CYCLES/FLIGHT_DAYS) or a category-less CDL
baseline_flights number | null Aircraft’s flight_count at the moment the item was raised (only set for FLIGHTS/NEXT_FLIGHT)
baseline_cycles number | null Intended to hold the aircraft’s cycle count at the moment a CYCLES-interval item was raised, but no server-side code currently assigns it — always null today, even though CYCLES is selectable as an interval_type
placard_fitted boolean Whether a placard has been fitted
procedures string | null M, O, or both
released_by number User ID of the releaser
released number Unix timestamp the item was released
extended boolean Whether the one-time extension has been used
extended_by number | null User ID who granted the extension
extended_until number | null New deadline after extension
extension_reason string | null Free-text reason given for the extension
MelItemLimitation array Nested list of { id, code, value, note, created }

starts/expires/the baseline snapshot are all computed once, at creation, from the regulatory intervals: Category A defaults to “before next flight”; B/C/D default to 3/10/120 calendar days. The rectification clock starts at midnight, company timezone, the day after the item was raised.

None of the four endpoints below return a derived status on their own row — that is computed by the two endpoints further down (Aircraft Status, Mel Summary) that are built for exactly that purpose, and mirrored client-side for display (never trust a client-computed status for a dispatch decision — the server is authoritative).


GET /maintenance/aircraft_reports/releasers.json

Lists the users of the company eligible to be the released_by on a MEL/CDL item, for populating the releaser picker on the report form.

{
"releasers": [
{
"User": { "id": "123", "user_group_id": "300" },
"UserDetail": { "name": "John", "surname": "Doe" }
}
]
}

Eligibility: user_group_id in (1, 100, 105, 110, 300) (Company Administrators, Operations Managers, Compliance & Safety Managers and Mechanics), or the authenticated user themselves — except that a Student Pilot (user_group_id 200 — Student Pilot) calling this endpoint never sees themselves in the list, only the five manager/mechanic groups. A student can raise a MEL/CDL item as an assigned pilot, but can never be its releaser.


POST /maintenance/aircraft_reports/extend/{id}.json

Grants the one-time extension on the MEL/CDL item linked to aircraft report {id}.

Access: user_group_id in (1, 100, 105, 110, 300) (Company Administrators, Operations Managers, Compliance & Safety Managers and Mechanics) only — 404 Not Found otherwise.

Parameter Type Description
id string Aircraft report UUID (the report, not the MelItem)
Parameter Type Required Description
extended_until number yes New deadline, unix timestamp
reason string no Free-text reason for the extension
{ "result": true, "message": null }

Rejected (result: false) when:

  • The item is Category A, already closed, or already extended once — "This item cannot be extended."
  • extended_until is missing, or later than expires + one full original interval — "Requested extension exceeds the one-time limit allowed for this category."

GET /maintenance/aircraft_reports/aircraft_status.json?aircraft_id={id}

Everything the pre-dispatch window needs for one aircraft: its open MEL/CDL items (with a computed status on each) plus upcoming, not-yet-completed maintenance jobs, plus a top-level blocked flag. This is the endpoint the dispatch modal calls before a flight is dispatched.

Parameter Type Required Description
aircraft_id number yes Aircraft ID
{
"items": [
{
"AircraftReport": { "id": "a1b2...", "type": "MEL", "ata_chapter": "32", "title": "Nose gear shimmy" },
"MelItem": { "category": "C", "expires": 1717200000, "status": "EXPIRED" }
}
],
"upcomingMaintenance": [
{ "Job": { "id": "b2c3...", "name": "100h Inspection", "ata": "05", "expiration": 1719878400 } }
],
"blocked": true,
"blockReason": "ATA 32 blocks dispatch — MEL Category C expired"
}

MelItem.status is one of OPEN, EXPIRING_SOON (within 3 days of the deadline), EXPIRED, or CLOSED, computed server-side at request time. blocked is true as soon as any item in items is EXPIRED, or the aircraft is grounded; blockReason names the grounding report when there is one, otherwise the first expired item.

grounded lists the open reports grounding the aircraft ([] when none), oldest first:

"grounded": [
{ "id": "c3d4...", "aircraft_id": "12", "title": "Left brake soft", "ata_chapter": "32",
"status": "OPEN", "aircraft_status": "GROUNDED", "dispatch_condition": "NONE", "created": "1730600000" }
]

GET /maintenance/aircraft_reports/mel_summary.json

Company-wide open and expiring-soon MEL/CDL counts, for a dashboard tile.

{
"openCount": 4,
"expiringSoonCount": 1,
"blockedAircraft": { "12": "ATA 32 blocks dispatch — MEL Category C expired" },
"groundedAircraft": { "15": "This aircraft is grounded (ATA 32 — Left brake soft) and cannot be dispatched until maintenance releases it back to service." }
}

blockedAircraft maps each aircraft with an expired MEL/CDL item to the reason; groundedAircraft maps each grounded aircraft to the reason. Both are [] (an empty JSON array, not an object) when nothing qualifies.


Enforced while the company setting aircraft_grounding_enforced is true (the default, see Company settings). When it is false, GROUNDED is informative only: none of the effects below apply, aircraft_status.json returns grounded: [], mel_summary.json returns groundedAircraft: [], and the release gate on Edit Report is off.

An aircraft is grounded while it has at least one report whose status is not CLOSED and whose aircraft_status or dispatch_condition is GROUNDED. A DEFERRED report still grounds. The report type does not matter.

While an aircraft is grounded:

Where Effect
Dispatch (schedules/flight) and flight dispatch (flights/dispatch/{id}) Refused for everybody: {"result": false, "message": "<REG> is grounded (ATA 32 — Left brake soft) and cannot be dispatched until maintenance releases it back to service."}
schedules/dispatch_check/{id} grounded: { message, reports[] } (null when flyable), so the refusal is known before the dispatch form is filled in
Create a booking or move one onto the aircraft (schedules/edit) user_group_id in 1, 100, 105, 110, 150, 300 and the aircraft’s managers: saved, with groundedWarnings[] in the response. Everyone else: 403 with the same sentence ending in cannot be booked … Existing bookings stay editable and cancellable
schedules/find_slot grounded: { blocked, reports[] }. When blocked is true (crew) results is empty
aircraft_status.json / mel_summary.json blocked + grounded / groundedAircraft, see above

Only user_group_id 1, 100, 105, 110, 300 or a manager of the aircraft can release it (see Edit Report). Closing the report through the CRS of the maintenance job it is attached to also releases it.

When a report grounds an aircraft (on create, or by an edit), the staff message lists up to 20 of the aircraft’s upcoming bookings, in the company time zone and date/time format. Nothing is cancelled automatically.


Action Endpoint user_group_id allowed
Raise a MEL or CDL item POST create.json with type=MEL|CDL 1, 100, 105, 110, 300, or any manager of the aircraft (Aircraft.ManagerIds)
Edit a MEL or CDL item POST edit/{id}.json on a MEL/CDL report 1, 100, 105, 110, 300 only — the assigned-pilot exception does not apply
Extend a MEL or CDL item POST extend/{id}.json 1, 100, 105, 110, 300 only
Close a MEL or CDL item POST edit/{id}.json with status=CLOSED 1, 100, 105, 110, 300 only (same gate as edit)
Be listed/accepted as releaser (released_by) GET releasers.json, enforced by create/edit 1, 100, 105, 110, 300, or the requesting user themselves — never user_group_id 200 (Student Pilot)
View reports, an aircraft’s MEL/CDL status, or the company-wide summary index.json, view.json, aircraft_status.json, mel_summary.json Any user of a company on a premium/unlimited plan — no MEL-specific restriction

1 = Flylogs Administrator, 100 = Company Administrator, 105 = Operations Manager, 110 = Compliance & Safety Manager, 300 = Mechanic, 200 = Student Pilot.


A maintenance job can clear several aircraft reports at once. This matches how defects are worked in practice: a blown navigation light or an inoperative ADF does not ground a VFR flight, so reports accumulate while the aircraft keeps flying and are all resolved at the next scheduled visit.

The link lives on aircraft_reports.maintenance_job_id, so a report belongs to at most one job while a job can hold any number of reports. Signing the job’s CRS closes every report attached to it.

Three ways to create the link:

Situation Call
Create a job from a batch of reports POST /maintenance/jobs/create.json with Job[aircraft_report_ids][]
Attach reports to a job that already exists POST /maintenance/jobs/link_reports.json
Detach a report from its job POST /maintenance/jobs/unlink_report.json

Both linking endpoints are documented in maintenance-jobs.md. Reports are only accepted when they belong to the same aircraft as the job, and neither endpoint works once the job’s CRS has been signed.

To list the reports still waiting to be grouped for one aircraft:

POST /maintenance/aircraft_reports/index.json
{ "aircraft": 45, "status": "OPEN,DEFERRED", "linked": "no" }

Value Description
DEFECT Technical defect requiring maintenance action (also the target of the removed RESTRICTION value)
INFO Informational entry (also the target of the removed OBSERVATION value)
MEL Minimum Equipment List item — see MEL and CDL items
CDL Configuration Deviation List item — see MEL and CDL items
MAINTENANCE_ACTION Record of a maintenance action performed
SERVICING Servicing entry (fluid, tyre, etc.)
Value Description
LOW Low impact — no operational effect
MEDIUM Moderate impact — monitor required
HIGH Significant impact — action required soon
CRITICAL Immediate action required
Value Description
FLYABLE Aircraft remains airworthy
GROUNDED Aircraft grounded until resolved
Value Description
NONE No dispatch condition
GROUNDED Aircraft may not dispatch
MEL Dispatched under Minimum Equipment List
CDL Dispatched under Configuration Deviation List
MONITOR Dispatched with monitoring requirement
Value Description
OPEN Report is open and active
DEFERRED Report deferred with reference
CLOSED Report resolved and closed
Value Description Standard interval
A Rectify before next flight (unless the Remarks column gives a flights/flight-days/cycles interval) NEXT_FLIGHT
B 3 calendar days
C 10 calendar days
D 120 calendar days

category may also be null on a CDL item — a category-less CDL item never expires.

Value Description
NEXT_FLIGHT Expires on the next flight (Category A default)
CALENDAR_DAYS Expires a fixed number of calendar days after the item is raised (B/C/D default)
FLIGHTS Expires after a number of flights (Remarks-column override for A)
FLIGHT_DAYS Expires after a number of calendar days on which the aircraft has flown at least once
CYCLES Expires after a number of cycles/landings
Value Description
NO_ETOPS No ETOPS
NO_RVSM No RVSM
NO_RNP_AR No RNP AR
NO_ICING No flight into known icing
NO_IFR No IFR
NO_NIGHT No night operations
DAY_VFR_ONLY Day VFR only
MAX_ALTITUDE Maximum altitude (put the figure in value)
MAX_PAX Maximum passengers (put the figure in value)
MAX_SPEED Maximum speed (put the figure in value)
MAX_TIME_ABOVE_FL100 Maximum time above FL100 (put the figure in value)
PERF_PENALTY Performance penalty
OTHER Free-text limitation — use value and/or note

POST /maintenance/aircraft_reports/suggest.json

Hints while a report is being written. Nothing is saved or linked.

{ "AircraftReport": { "aircraft_id": 12, "title": "Low volts light", "description": "On during taxi, off above 1500 RPM" } }
{
"suggestion": {
"ata": { "value": "24", "confidence": 0.91 },
"report": { "value": "3f2c…", "confidence": 0.98, "title": "Low voltage light flickers on taxi", "created": "1791800000" },
"job": null
}
}
Field Description
ata Likely ATA chapter key (≥ 0.6), or null
report An OPEN/DEFERRED report on the same aircraft that reads like the same defect (≥ 0.8), or null
job An open maintenance job on the same aircraft that already covers it (≥ 0.8), or null. Information only — linking stays Jobs link_reports

Fewer than 10 characters of title + description, or the feature not enabled on the installation, returns all null.

Same audience as Create Report. The aircraft must belong to the caller’s company (404 otherwise); only that aircraft’s open reports and jobs are considered (newest 20 of each).


POST /maintenance/aircraft_reports/suggest_ata.json

The ATA chapter alone, for a maintenance task rather than a defect: used by the work-order forms of maintenance jobs and maintenance plans. Nothing is saved.

{ "title": "Propeller spinner cracked", "description": "Crack at the attachment screw, replace spinner and back plate" }
{ "ata": { "value": "61", "confidence": 0.95 } }

ata is null below 0.6 confidence, with fewer than 10 characters of title + description, or when the feature is not enabled on the installation.

Same audience as ATA Chapters.


GET /maintenance/aircraft_reports/ata_chapters.json

Retrieve the full list of ATA chapter codes and their descriptions, for use when filing reports.

{
"ata_chapters": {
"05": "Time Limits / Maintenance Checks",
"06": "Dimensions and Areas",
"07": "Lifting and Shoring",
"12": "Servicing",
"21": "Air Conditioning",
"22": "Auto Flight",
"23": "Communications",
"24": "Electrical Power",
"25": "Equipment / Furnishings",
"26": "Fire Protection",
"27": "Flight Controls",
"28": "Fuel",
"29": "Hydraulic Power",
"30": "Ice and Rain Protection",
"31": "Indicating / Recording Systems",
"32": "Landing Gear",
"33": "Lights",
"34": "Navigation",
"35": "Oxygen",
"49": "APU",
"51": "Standard Practices – Structures",
"52": "Doors",
"53": "Fuselage",
"61": "Propellers",
"71": "Powerplant",
"72": "Engine",
"73": "Engine Fuel / Control",
"74": "Ignition",
"79": "Oil",
"80": "Starting"
}
}