Maintenance

Squawks and maintenance reminders.

28 endpoints · base URL https://api.aerscheduler.com

get/maintenance/ad-tracking-mode

Read whether the organization finds its ADs

Whether AerScheduler finds the ADs for this organization's aircraft, readable by any member. When enabled, each aircraft lists its ADs to review. Turning it on or off is PATCH /organizations/adTracking (admin only).

Responses

200OKSuccess.→ { data: object }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/ad-tracking-mode \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/airworthiness-directives

Search the AD library

The library search, the same one as the public GET /public/airworthiness-directives: an AD number or its start (2013-11) first, then ranked full-text over number, title, subject, maker, applicability and summary; when nothing ranks, every word as a substring, newest first. Without q, every AD, newest first. Paged, limit up to 100. Rows carry no text (details, summary, applicability): read one with GET /maintenance/airworthiness-directives/{adNumber}. Public federal data, so any member may search it.

Query parameters

qstringAn AD number or its start, or words to find in it.
productTypestringRestrict to kinds of product, comma-separated: airplane, rotorcraft, engine, propeller, glider, balloon, appliance, various.
limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe matching ADs, without their text.→ { data: AirworthinessDirective[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/airworthiness-directives \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/compliance

List compliance records

Every inspection this organization has signed off, newest first, kept for the life of the aircraft.

This is the airworthiness history an inspector asks for. Readable by any member for the same reason squawks are: it is information about an aircraft somebody is about to fly.

Query parameters

qstringFree-text over the rule name, document number, mechanic and method.
resourceIdstringRestrict to one or more aircraft. Comma-separated.
reminderIdstringRestrict to one inspection's history.
sourceTypestringRestrict to a kind of rule, for example ad.
startDatestringOnly records complied with on or after this date.
endDatestringOnly records complied with on or before this date.
limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe compliance records.→ { data: MaintenanceComplianceRecord[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/compliance \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/reminders

List maintenance reminders

Live reminders across the fleet, most urgent first.

Each reminder carries a computed due block , how many hours are left on the meter, or how many days until the date , so you don't have to recombine the template's interval with the aircraft's meters yourself.

Query parameters

resourceIdstringOnly reminders on these aircraft. Repeat or comma-separate for several.
statusstringFilter on the computed band: overdue, dueSoon, ok, resolved or notApplicable. Repeat or comma-separate for several.
resolvedbooleanFilter on signed-off state.
qstringFree-text over the reminder, its template and the tail number.
limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe reminders.→ { data: MaintenanceReminder[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/reminders \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/squawks

List squawks

Reported discrepancies. Visible to technicians, dispatchers, and administrators.

Query parameters

qstringFree-text filter. Matches the fields a person would search on.
resolvedbooleanFilter on resolved state.
resourceIdstringComma-separated resource ids.
startDatestringStart of the window, ISO 8601. Include an offset or Z.
endDatestringEnd of the window, ISO 8601.
limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe squawks.→ { data: Squawk[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/squawks \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
post/maintenance/squawks

Report a squawk

Note the resource is given as a flat resourceId here, where reservations take a nested resource: { id }. That inconsistency is real and is on the list to reconcile. Photos and PDFs are attached by sending fileNames (jpg, jpeg, png, heic, heif, or pdf, up to five). The server writes the S3 keys and returns signedUrlData for the client to POST each file to. fileUrls in the body is refused. Uploading is turned off in the public demo; a text squawk still files.

Request body

The discrepancy.

titlerequiredstring
descriptionrequiredstring
resourceIdrequiredinteger
priority"grounding" | "high" | "normal" | "low"How urgent it is. Defaults to normal. grounding records that the aircraft should not fly, and is what the Squawks report's Grounding filter selects; it does not by itself set the aircraft's grounded flag.
fileNamesstring[]Original file names. jpg, jpeg, png, heic, heif, or pdf. The server mints the S3 keys.

Responses

201CreatedThe squawk. When files were attached, signedUrlData is a list of S3 presigned POSTs in the same order as fileNames. Upload each file after this response.→ { data: Squawk }
400Bad RequestValidation failed.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/squawks \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"…","description":"…","resourceId":1}'
get/maintenance/airworthiness-directives/{adNumber}

Look up an AD by number

One Airworthiness Directive from the library. Accepts 2013-11-11, AD 2013-11-11 or 2007-21-14R1. supersededBy lists later ADs that replace it.

404 when it is not in the library, an ordinary answer: an AD the library does not hold is entered by hand.

Path parameters

adNumberrequiredintegerThe AD number, e.g. 2013-11-11.

Responses

200OKSuccess.→ { data: AirworthinessDirective }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNot in the AD library.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/airworthiness-directives/:adNumber \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/airworthiness-directives/coverage

AD library coverage

How much of the AD library is loaded: the count, the oldest and newest publication dates, and whether every past year of the Federal Register backfill is in. The current year fills hourly.

Responses

200OKSuccess.→ { data: object }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/airworthiness-directives/coverage \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/airworthiness-directives/fleet

List ADs across the fleet

Every aircraft's AD review list at once, as GET /maintenance/resources/{resourceId}/airworthiness-directives gives it for one: the organization's own aircraft and, for those who may see the shop, the customer aircraft in it. Items carry resourceId and no AD text. Owners, admins and technicians; anyone else gets 403.

Responses

200OKSuccess.→ { data: object }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenOnly owners, admins and technicians review ADs.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/airworthiness-directives/fleet \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/compliance/{complianceRecordId}

Get a compliance record

One signed-off inspection, in full.

Path parameters

complianceRecordIdrequiredintegerThe compliance record id.

Responses

200OKSuccess.→ { data: MaintenanceComplianceRecord }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such record.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/compliance/:complianceRecordId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/reminders/{maintenanceReminderId}

Get a maintenance reminder

One reminder.

Path parameters

maintenanceReminderIdrequiredintegerThe reminder id.

Responses

200OKSuccess.→ { data: MaintenanceReminder }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such reminder.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/reminders/:maintenanceReminderId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
post/maintenance/reminders/{maintenanceReminderId}

Sign off a maintenance reminder

Marks the work done, which starts the next interval if the template repeats. POST rather than PATCH for historical reasons.

Send methodOfCompliance and mechanicName to also write a permanent compliance record, which is what 14 CFR 91.417 asks for on an Airworthiness Directive. That record is append-only and cannot be edited or removed afterwards, and it snapshots the rule's number and revision as they stood at signature. Omit them and the reminder simply rolls forward as before, keeping no history.

Photos and PDFs already on the open inspection (POST /maintenance/reminders/{id}/files) are copied onto that compliance record, then cleared so they do not follow the next cycle. Do not send fileUrls.

tachAtCompliance and hobbsAtCompliance higher than the aircraft's own (and lower on neither) are also recorded on the aircraft's meter log and move its meters; the response's aircraftTimes says so (updated, or logged for a reading older than its newest). If those readings pass another inspection that grounds the aircraft, the sign-off answers 409 MAINTENANCE_TRIGGER before anything is signed; send again with confirmMaintenanceTrigger: true.

Path parameters

maintenanceReminderIdrequiredintegerThe reminder id.

Request body

Completion detail. The compliance fields are optional together: supplying methodOfCompliance requires mechanicName.

completedAtrequiredstringWhen the work was done.
completedHoursintegerMeter reading the next interval counts from, in tenths of an hour.
notesstringFree-text note on the reminder itself.
methodOfCompliancestringWhat was actually done. Writing this creates the permanent record.
mechanicNamestringWho certified the work. Required alongside methodOfCompliance.
mechanicCertificateNumberstringTheir FAA certificate number.
mechanicCertificateTypestringA&P, IA, or repair station.
tachAtComplianceintegerTach reading at compliance, NOT time in service as 14 CFR 1.1 defines it, in tenths. Defaults to the aircraft's current reading.
hobbsAtComplianceintegerHobbs reading at compliance, NOT time in service as 14 CFR 1.1 defines it, in tenths. Defaults to the aircraft's current reading.
confirmMaintenanceTriggerbooleanAccept that the readings at sign-off ground the aircraft (see the 409).

Responses

200OKSuccess.→ { data: MaintenanceReminder }
400Bad RequestValidation failed.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
409The readings at sign-off pass an inspection that grounds the aircraft: code is MAINTENANCE_TRIGGER. Nothing was signed.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/reminders/:maintenanceReminderId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"completedAt":"2026-08-04T15:00:00-06:00"}'
patch/maintenance/reminders/{maintenanceReminderId}

Set this aircraft's reminder steps, or mark it not applicable

Technicians and admins. Send either or both.

reminderSteps: this inspection's reminder steps on this one aircraft, when they should differ from the rule's: the same shape as the rule's reminderSteps, each key present here winning over the rule's. Null follows the rule again. Carried to the next cycle when it is signed off. Steps further out than one already sent this cycle are not sent after it. The reminder's steps is what applies; ownSteps is what this aircraft sets itself.

notApplicable: true marks the inspection as not applying to this aircraft (a VOR check on a VFR-only aircraft), with an optional notApplicableReason. While marked it is never warned, reminded, counted overdue or grounded, and an aircraft grounded for it alone goes back on the line. False puts it back: it is checked at once, so one already overdue grounds the aircraft and notifies straight away. Carried to the next cycle when it is signed off.

Path parameters

maintenanceReminderIdrequiredintegerThe reminder id.

Request body

The steps, whether it applies, or both.

reminderStepsobject | nullWhen it is said, and to whom (Murray spec 6): shopDays and ownerDays, days before a calendar due date; shopHours and ownerHours, TENTHS of an hour before an hour one. Each a list of up to 6 whole numbers (days 1 to 365; tenths 1 to 10000). An absent key is the default: the shop's single remindDaysBefore / remindHoursBefore, the owners' 30 and 7 days and 10 hours. An empty list is none before it is due. Due always goes out, and the shop hears once more a day after it is overdue. Setting the shop's lists also sets remindDaysBefore / remindHoursBefore to their furthest step. Null puts every list back on its default.
notApplicablebooleanTrue: this inspection does not apply to this aircraft. False: it applies again.
notApplicableReasonstring | nullWhy it does not apply, kept with the mark. Ignored when notApplicable is false.

Responses

200OKSuccess.→ { data: MaintenanceReminder }
400Bad RequestNeither field sent, a field not valid, or the inspection is signed off.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenNot a technician or admin here.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X PATCH https://api.aerscheduler.com/maintenance/reminders/:maintenanceReminderId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reminderSteps":{},"notApplicable":true}'
get/maintenance/reminders/presets

List inspection presets

The AVIATES airworthiness inspections , annual, VOR, 100-hour, AD review, transponder, ELT and static/altimeter , plus the shop intervals that come up as often, and the registration renewal (84 calendar months from the issue date, 14 CFR 47.40, warned 180, 60 and 30 days out to the shop and the owners, never grounding by default).

Reference data, not records: nothing exists until you POST a preset's payload to /maintenance/reminders/templates like any other template. The intervals are the common case and are editable afterwards; caveat says where a default doesn't apply to every aircraft.

Query parameters

limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe presets.→ { data: InspectionPreset[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/reminders/presets \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/reminders/templates

List reminder templates

Every reminder template in your organization.

Query parameters

limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe reminder templates.→ { data: MaintenanceReminderTemplate[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/reminders/templates \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
post/maintenance/reminders/templates

Create a reminder template

Adds a reminder template to your organization.

Request body

The rule. Set remindMonths or remindDays for the calendar clock, remindHours for the meter clock, or BOTH clocks ("every 100 hours or 12 calendar months, whichever comes first"), each with its matching *Before field; or set remindDate alone for a one-off date, or remindAtHours alone for a one-off meter deadline. Neither one-off recurs. remindHours is an INTERVAL in tenths of an hour (1000 = every 100.0), not a flag. PREFER remindMonths for anything the regulations write in calendar months, which is the annual, the transponder, the static system and the ELT: a calendar month runs to the end of the month, so 365 days comes due up to a month early. Setting remindMonths overwrites remindDays with a derived approximation. On a combined interval whichever clock comes due first grounds and notifies, and signing off restarts both.

namerequiredstring
notesstring
repeatrequiredboolean
groundboolean
remindHoursinteger
remindHoursBeforeinteger
hourBasedOn"tach" | "hobbs"
remindDaysinteger
remindMonthsinteger
remindDaysBeforeinteger
remindDatestring
remindAtHoursinteger
templateResourcesobject[]
reminderStepsobject | nullWhen it is said, and to whom (Murray spec 6): shopDays and ownerDays, days before a calendar due date; shopHours and ownerHours, TENTHS of an hour before an hour one. Each a list of up to 6 whole numbers (days 1 to 365; tenths 1 to 10000). An absent key is the default: the shop's single remindDaysBefore / remindHoursBefore, the owners' 30 and 7 days and 10 hours. An empty list is none before it is due. Due always goes out, and the shop hears once more a day after it is overdue. Setting the shop's lists also sets remindDaysBefore / remindHoursBefore to their furthest step. Null puts every list back on its default.

Responses

201CreatedThe reminder template that was created.→ { data: MaintenanceReminderTemplate }
400Bad RequestThe body failed validation. message says which field.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/reminders/templates \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"…","repeat":true}'
get/maintenance/squawks/{squawkId}

Get a squawk

One reported discrepancy.

Path parameters

squawkIdrequiredintegerThe squawk id.

Responses

200OKSuccess.→ { data: Squawk }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such squawk.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/squawks/:squawkId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
post/maintenance/squawks/{squawkId}

Act on a squawk

Resolves or reopens a squawk. This is a POST rather than a PATCH for historical reasons; an action field in the body is required.

Path parameters

squawkIdrequiredintegerThe squawk id.

Request body

What to do.

actionrequiredstring
titlestring
descriptionstring

Responses

200OKSuccess.→ { data: Squawk }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such squawk, or no action was supplied.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/squawks/:squawkId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"…"}'
post/maintenance/reminders/{maintenanceReminderId}/files

Attach files to an open inspection

Photos or PDFs on the OPEN reminder (packing slip, in-progress photos). Admin or technician. Copied onto the compliance record at sign-off, then cleared. Send fileNames only.

Path parameters

maintenanceReminderIdrequiredintegerThe reminder id.

Request body

The files to attach.

fileNamesrequiredstring[]Display names with jpg, png, heic, or pdf extensions. Up to five on the inspection.

Responses

201CreatedSuccess.→ { data: MaintenanceReminder }
400Bad RequestValidation failed.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/reminders/:maintenanceReminderId/files \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileNames":[]}'
delete/maintenance/reminders/{maintenanceReminderId}/files

Remove a file from an open inspection

Removes one working file by its file name. Does not touch a signed compliance record.

Path parameters

maintenanceReminderIdrequiredintegerThe reminder id.

Request body

Which file.

fileNamerequiredstringThe file name as shown, e.g. packing-slip.pdf.

Responses

200OKSuccess.→ { data: MaintenanceReminder }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such file.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X DELETE https://api.aerscheduler.com/maintenance/reminders/:maintenanceReminderId/files \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"…"}'
get/maintenance/reminders/templates/{maintenanceReminderTemplateId}

Get a reminder template

Fetches one reminder template by id.

Path parameters

maintenanceReminderTemplateIdrequiredintegerThe reminder template id.

Responses

200OKSuccess.→ { data: MaintenanceReminderTemplate }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNo such reminder template, or it belongs to another organization.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/reminders/templates/:maintenanceReminderTemplateId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
patch/maintenance/reminders/templates/{maintenanceReminderTemplateId}

Update a reminder template

Changes the fields you send and leaves the rest alone.

Path parameters

maintenanceReminderTemplateIdrequiredintegerThe reminder template id.

Request body

Fields to change.

namestring
notesstring
repeatboolean
reminderStepsobject | nullWhen it is said, and to whom (Murray spec 6): shopDays and ownerDays, days before a calendar due date; shopHours and ownerHours, TENTHS of an hour before an hour one. Each a list of up to 6 whole numbers (days 1 to 365; tenths 1 to 10000). An absent key is the default: the shop's single remindDaysBefore / remindHoursBefore, the owners' 30 and 7 days and 10 hours. An empty list is none before it is due. Due always goes out, and the shop hears once more a day after it is overdue. Setting the shop's lists also sets remindDaysBefore / remindHoursBefore to their furthest step. Null puts every list back on its default.

Responses

200OKThe updated reminder template.→ { data: MaintenanceReminderTemplate }
400Bad RequestThe body failed validation.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X PATCH https://api.aerscheduler.com/maintenance/reminders/templates/:maintenanceReminderTemplateId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"…","notes":"…"}'
delete/maintenance/reminders/templates/{maintenanceReminderTemplateId}

Delete a reminder template

Removes the reminder template.

Path parameters

maintenanceReminderTemplateIdrequiredintegerThe reminder template id.

Responses

204No ContentSuccess. No body.
400Bad RequestThe reminder template could not be deleted , usually because something still references it.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X DELETE https://api.aerscheduler.com/maintenance/reminders/templates/:maintenanceReminderTemplateId \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/resources/{resourceId}/airworthiness-directives

List the ADs to review for an aircraft

Library ADs that name the aircraft's airframe, engine or propeller by maker and model, each with the decision made about it. A match means the AD is worth reading, never that it applies: applicability names serial ranges, installed parts and exceptions that only a person can check. A superseded AD is left out (review the one that replaced it) unless somebody already decided or tracks it. An AD tracked by an inspection with its number reads applies without a decision. Owners, admins and technicians; anyone else gets 403.

Path parameters

resourceIdrequiredintegerThe aircraft's resource id.

Responses

200OKSuccess.→ { data: object }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNot an aircraft in your organization.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/resources/:resourceId/airworthiness-directives \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
get/maintenance/resources/{resourceId}/squawks

List an aircraft's squawks

Discrepancies against one resource.

Path parameters

resourceIdrequiredintegerThe resource id.

Query parameters

resolvedbooleanFilter on resolved state.
limitintegerRows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected.
offsetintegerRows to skip, for paging. Defaults to 0.
sortstringField to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding.
order"asc" | "desc"asc (default) or desc. Only meaningful with sort.

Responses

200OKThe squawks.→ { data: Squawk[] }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl https://api.aerscheduler.com/maintenance/resources/:resourceId/squawks \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"
post/maintenance/squawks/{squawkId}/comments

Add a note to a squawk

Appends one note to the squawk's thread, for recording progress on a defect without closing it. Technicians and administrators only, matching who may verify or resolve one. Notes are append-only: there is no edit and no delete, and a mistake is corrected by adding another note. A photo or PDF may stand in for text: body may be empty when fileNames is present. Read them back on the squawk itself, which returns comments oldest first.

Path parameters

squawkIdrequiredintegerThe squawk id.

Request body

The note. Send body, fileNames, or both. Empty with neither is refused.

bodystring
fileNamesstring[]Original file names. jpg, jpeg, png, heic, heif, or pdf. The server mints the S3 keys.

Responses

201CreatedThe note. When files were attached, signedUrlData is a list of S3 presigned POSTs in the same order as fileNames.→ { data: SquawkComment }
400Bad RequestThe note was empty, longer than 2000 characters, or the files were refused.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenNot a technician or administrator, or the squawk belongs to another organization.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X POST https://api.aerscheduler.com/maintenance/squawks/:squawkId/comments \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"…","fileNames":[]}'
put/maintenance/resources/{resourceId}/airworthiness-directives/{adNumber}

Decide an AD for an aircraft

Record that the AD applies, or that it does not and why. reason is required with not_applicable; note is required with reason other. Records who decided and when, and writes the audit trail. Returns the aircraft's list as GET does.

Path parameters

resourceIdrequiredintegerThe aircraft's resource id.
adNumberrequiredintegerThe AD number.

Request body

The decision.

status"applies" | "not_applicable"
reason"serial_outside" | "not_installed" | "terminated" | "other"
notestring

Responses

200OKSuccess.→ { data: object }
400Bad RequestA missing status, reason or note.
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
404Not FoundNot an aircraft in your organization, or an AD the library does not have.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X PUT https://api.aerscheduler.com/maintenance/resources/:resourceId/airworthiness-directives/:adNumber \
  -H "Authorization: Bearer $AERSCHEDULER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"applies","reason":"serial_outside"}'
delete/maintenance/resources/{resourceId}/airworthiness-directives/{adNumber}

Undo an AD decision

Puts the AD back on the aircraft's review list. Returns the list as GET does.

Path parameters

resourceIdrequiredintegerThe aircraft's resource id.
adNumberrequiredintegerThe AD number.

Responses

200OKSuccess.→ { data: object }
401UnauthorizedNo token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again.
403ForbiddenAuthenticated, but not allowed to do this.
429Too Many RequestsRate limited. Retry-After says how long to wait.
Example request
curl -X DELETE https://api.aerscheduler.com/maintenance/resources/:resourceId/airworthiness-directives/:adNumber \
  -H "Authorization: Bearer $AERSCHEDULER_KEY"