For the complete documentation index, see llms.txt. This page is also available as Markdown.

Aircraft Reports

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.

The type values OBSERVATION and RESTRICTION were removed. Existing rows were reclassified once, automatically (OBSERVATIONINFO, RESTRICTIONDEFECT). A client that still posts either of the old values is not rejected: the API silently remaps it the same way before validation, so older installed clients keep working.

List Reports

POST /maintenance/aircraft_reports/index.json

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

Request Body (optional filters)

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.

Response


View Report

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

Retrieve full details for a single aircraft report.

Path Parameters

Parameter
Type
Description

id

string

Report UUID

Response


Create Report

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).

Request Body

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)

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 — ANEXT_FLIGHT; B/C/DCALENDAR_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.

Response

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


Edit Report

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

Update an existing aircraft report.

Path Parameters

Parameter
Type
Description

id

string

Report UUID

Request Body

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)

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

Response


Delete Report

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

Delete an aircraft report.

Path Parameters

Parameter
Type
Description

id

string

Report UUID

Response


MEL and CDL items

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).


Releasers

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.

Response

Eligibility: user_group_id in (1, 100, 105, 110, 300), or the authenticated user themselves — except that a Student Pilot (user_group_id 200) 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.


Extend

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) only — 404 Not Found otherwise.

Path Parameters

Parameter
Type
Description

id

string

Aircraft report UUID (the report, not the MelItem)

Request Body

Parameter
Type
Required
Description

extended_until

number

yes

New deadline, unix timestamp

reason

string

no

Free-text reason for the extension

Response

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."


Aircraft Status

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.

Query Parameters

Parameter
Type
Required
Description

aircraft_id

number

yes

Aircraft ID

Response

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; blockReason names the first one found.


Mel Summary

GET /maintenance/aircraft_reports/mel_summary.json

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

Response


Role gating on MEL/CDL actions

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 the aircraft's assigned pilot (Aircraft.user_id)

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.


Grouping reports into a maintenance job

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:


Enumerations Reference

Type

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.)

Severity

Value
Description

LOW

Low impact — no operational effect

MEDIUM

Moderate impact — monitor required

HIGH

Significant impact — action required soon

CRITICAL

Immediate action required

aircraft_status field

Value
Description

FLYABLE

Aircraft remains airworthy

GROUNDED

Aircraft grounded until resolved

Dispatch Condition

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

Status

Value
Description

OPEN

Report is open and active

DEFERRED

Report deferred with reference

CLOSED

Report resolved and closed

MEL Category

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.

MEL Interval Type

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

Limitation Code

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


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.

Response

Last updated