Maintenance Jobs
Manage maintenance jobs for aircraft. Requires premium or unlimited subscription plan.
Access control
List / view (index, view, history, forecast)
Any authenticated company user on a premium/unlimited plan. The Flylogs NEO interface shows maintenance sections to user_group_id <= 170 and >= 250
Create / edit / sign CRS / duplicate / delete
user_group_id in 1, 100, 105, 110, 300 (administrators, managers and mechanics), or the aircraft owner
Recurring jobs
Jobs carry a repeat field with one of: NEVER, DAY, WEEK, MONTH, QUARTER, SEMESTER, YEAR. When a job is marked complete (completed = true) and its repeat is not NEVER, the system automatically clones the job into the future:
startis shifted by the repeat interval (e.g.SEMESTERadds 6 months).finishpreserves the original duration.expirationpreserves the original offset fromstartif it was set.completedis reset tofalse;hours_nowandlandings_noware reset to0.All linked
WorkOrderrows are duplicated withstatus = pending.
Cloning is idempotent: a successor with the same aircraft_id, name and computed start will not be created twice. A console command Console/cake maintenance recurring [companyId] runs the same scan for jobs that completed before this feature was deployed and is safe to schedule via cron.
Completion signature
When a job transitions from completed = false to completed = true, the server stamps a signature JSON column with the authenticated user and timestamp:
{ "user_id": 123, "signed_at": 1778485469 }The signature is captured only on the false → true transition; re-saving an already-completed job will not overwrite the original signature. The field is NULL for jobs that have never been completed.
Inspection signature
After the CRS has been signed, a job can additionally be inspected. The inspection is stored as a JobChange event with action = INSPECT (user + timestamp) and printed in the Inspected By signature box of the job card PDF. In the Flylogs NEO interface the inspector confirms with their account password and the same certification disclaimer as the CRS signature; re-signing the CRS invalidates the previous inspection (a new INSPECT event after the latest SIGN is required).
POST /maintenance/jobs/inspect.json
Request Body
data[Job][id]
string
Required. Job UUID. The job must belong to the company and have completed = true, otherwise a 400/404 is returned
Response
Job card PDF signature boxes
The job card PDF prints three signature boxes, filled from the job's change history:
Performed By
The user that created the maintenance job (oldest ADD event)
Inspected By
The latest INSPECT event recorded after the current CRS signature
Approved By
The user that signed the CRS (latest SIGN event)
List Jobs
POST /maintenance/jobs/index.json
Retrieve a paginated list of maintenance jobs for the company fleet.
Request Body (optional filters)
aircraft
number
Filter by aircraft ID
from
string
Start date filter (parseable date string)
to
string
End date filter (parseable date string)
wc
string
Search in job ID number and name
Response
View Job
GET /maintenance/jobs/view/{id}.json
Retrieve full details for a single maintenance job, including work orders and file uploads.
Path Parameters
id
string
Job UUID
Response
Create Job
POST /maintenance/jobs/create.json
Create a new maintenance job. The authenticated user must be a manager or the aircraft's assigned user. An auto-incremented n_id is assigned server-side.
Request Body
Job[aircraft_id]
number
yes
Aircraft ID
Job[name]
string
yes
Job name / title
Job[start]
string
yes
Start date (parseable date string)
Job[finish]
string
no
Finish date (defaults to start date)
Job[hours_now]
number
yes
Aircraft total hours at time of job (decimal or HH:MM)
Job[hours_added]
number
no
Hours added during job
Job[landings_now]
number
no
Aircraft total landings at time of job
Job[landings_added]
number
no
Landings added during job
Job[hours_checkbox]
string
no
Set to non-zero to require hours_added
Job[expiration_checkbox]
string
no
Set to non-zero to enable expiration date
Job[expiration]
string
no
Expiration date (parseable date string, required if checkbox enabled)
Job[description]
string
no
Job description
Job[crs]
string
no
Certificate of Release to Service — set to any truthy value to mark the job complete and automatically close all linked open aircraft reports
Job[attachment]
file
no
File upload (image, video, or document)
Response
On validation failure, result is false, job is null and message is a map of field → error messages, e.g.:
If the save fails without producing field-level errors (e.g. a DB or beforeSave abort), message falls back to the string "Unable to save the maintenance job".
Delete Job
GET /maintenance/jobs/delete/{id}.json
Delete a maintenance job and all associated work orders. The authenticated user must be a manager or the aircraft's assigned user.
Path Parameters
id
string
Job UUID
Response
Last updated