GET /v1/health no key
Service health. Answers without a key, touches no data and is not counted. For uptime monitoring.
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/health
Version 1.14.0 · reads everything, writes only what the RogerATC plugin sends · openapi.json
Every route except /v1/health needs the personal API key from Settings → API in the app, sent as Authorization: Bearer rat_live_… or X-API-Key: rat_live_…. The key reads everything in the account, including the pilot profile: keep it on a server, never in a web page or a mobile app. Rotating it in Settings invalidates the old key immediately.
Every body is JSON with data and meta (requestId, generatedAt); collections add page (limit, total, nextCursor). Records are returned whole, with every field the app stores. Times are UTC ISO 8601, durations whole minutes. A value the app does not know is null or absent, never invented.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | A parameter is malformed. The message says which. |
| 401 | unauthorized | No key, a malformed key, a rotated key, or a paused account. |
| 404 | not_found | No such route, or no such record in this account. |
| 405 | method_not_allowed | GET everywhere; PUT only on /v1/plugin/sessions/{id} and /v1/plugin/live. Allow lists what is. |
| 410 | gone | The pilot deleted this plugin session in the app. Stop sending it. |
| 413 | payload_too_large | A write body over its limit: 512 KB for a session, 32 KB for a live report. |
| 415 | unsupported_media_type | A write body that is not application/json. |
| 429 | rate_limited | Over 120 requests a minute for this key. Retry after Retry-After seconds. |
| 500 | internal | Our fault. The requestId in meta identifies the request in our logs. |
/v1/health no keyService health. Answers without a key, touches no data and is not counted. For uptime monitoring.
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/health
/v1/meThe account this key belongs to. The account id, email and name, and the key’s own dates. The cheapest way for an integration to check its key works.
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/me
/v1/aerodromesAerodrome cards. Every aerodrome card in the account, with every field: frequencies, contacts, navaids, runways, taxiways, fuel, position, notes, the NOTAM and MADHEL notes the pilot copied. Sorted by identifier.
Fields: src/core/airfields/types.ts (Airfield)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aerodromes
/v1/aerodromes/{id}One aerodrome card. By card id, or by the aerodrome’s identifier (SADF, or a national code such as LEN), case-insensitive.
Fields: src/core/airfields/types.ts (Airfield)
| Parameter | In | Description |
|---|---|---|
id | path, required | The card id, or the aerodrome identifier. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aerodromes/{id}
/v1/aerodromes/{id}/attachments/{attachmentId}Download link for an aerodrome attachment. A diagram, procedure or photo the pilot attached to the card (listed in the card’s attachments). Returns the attachment’s metadata and a presigned HTTPS URL to the file itself, valid for 15 minutes; fetch it without the API key. 404 when the card does not name that attachment, or its file has not been uploaded yet.
Fields: src/core/files/attachments.ts (Attachment)
| Parameter | In | Description |
|---|---|---|
id | path, required | The card id, or the aerodrome identifier. |
attachmentId | path, required | The id of one entry in the card’s attachments. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aerodromes/{id}/attachments/{attachmentId}
/v1/airwaysATS routes (airways). Argentina’s lower and upper ATS routes from AIP Argentina ENR 3.1/3.2, with significant points from ENR 4.4, as the app draws them: designator, lower/upper, conventional/RNAV, points in order with positions, and the published distance of each segment. source names the editions. Limits, minimum flight levels and direction of cruising levels are not included.
Fields: src/core/airways/index.ts (Airway)
| Parameter | In | Description |
|---|---|---|
airspace | query | lower or upper. Both when absent. |
designator | query | One route, e.g. W5 or UL780. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/airways
/v1/aircraftAircraft. Every aircraft profile, with every field: registration, type, equipment, speeds, fuel, weight and balance, envelope. Sorted by registration.
Fields: src/core/aircraft/types.ts (AircraftProfile)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aircraft
/v1/aircraft/{id}One aircraft. By aircraft id.
Fields: src/core/aircraft/types.ts (AircraftProfile)
| Parameter | In | Description |
|---|---|---|
id | path, required | The aircraft id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aircraft/{id}
/v1/aircraft/{id}/attachments/{attachmentId}Download link for an aircraft document. A flight manual, an aircraft document or a photo the pilot attached to the aircraft (listed in its attachments). Returns the attachment’s metadata and a presigned HTTPS URL to the file itself, valid for 15 minutes; fetch it without the API key. 404 when the aircraft does not name that attachment, or its file has not been uploaded yet.
Fields: src/core/files/attachments.ts (Attachment)
| Parameter | In | Description |
|---|---|---|
id | path, required | The aircraft id. |
attachmentId | path, required | The id of one entry in the aircraft’s attachments. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/aircraft/{id}/attachments/{attachmentId}
/v1/weatherWeather at the pilot’s aerodromes. Latest METAR and TAF, raw and decoded, for every aerodrome on a card or on the weather briefing. Each entry has a status — ok, no_report, no_icao_indicator or unavailable — and nothing is filled in when a report is absent. Source: NOAA Aviation Weather Center, cached for up to five minutes.
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/weather
/v1/weather/{ident}Weather at one aerodrome. Any four-letter ICAO location indicator, whether or not it is on a card. A three-letter national code answers no_icao_indicator.
| Parameter | In | Description |
|---|---|---|
ident | path, required | ICAO location indicator, e.g. SAEZ. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/weather/{ident}
/v1/notesFlight notes. Every note — the kneeboard — with every field, including a handwritten note’s image as a data URL. Newest first by last change.
Fields: src/core/notes/types.ts (FlightNote)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/notes
/v1/notes/{id}One note. By note id.
Fields: src/core/notes/types.ts (FlightNote)
| Parameter | In | Description |
|---|---|---|
id | path, required | The note id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/notes/{id}
/v1/flight-plansFlight plans. Every ICAO flight plan with every field (items 7 to 19, the route, supplementary information). Newest departure date first.
Fields: src/core/flightplan/types.ts (FlightPlan)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/flight-plans
/v1/flight-plans/{id}One flight plan. By flight plan id.
Fields: src/core/flightplan/types.ts (FlightPlan)
| Parameter | In | Description |
|---|---|---|
id | path, required | The flight plan id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/flight-plans/{id}
/v1/planningsPlannings. Every route the pilot planned on the map — the working before a flight plan: the points in order with their positions, the aircraft, the planned departure, altitude, fuel on board, reserve and wind choice, and the flight plan it became (flightPlanId). Stored as the route entity; departure, destination and waypoints mirror points. Newest change first.
Fields: src/core/planning/types.ts (RoutePlanning)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plannings
/v1/plannings/{id}One planning. By planning id.
Fields: src/core/planning/types.ts (RoutePlanning)
| Parameter | In | Description |
|---|---|---|
id | path, required | The planning id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plannings/{id}
/v1/shared-planningsShared plannings. Plannings this pilot plans together with a copilot — as the owner, or as a guest who accepted. One document both edit (doc: the route, alternates, time, level, rules, wind), each pilot’s own half under participants[].personal (aircraft, speed, burn, fuel) with a summary of the aircraft each chose. Never the owner’s provider keys. Newest change first.
Fields: src/core/planning/shared.ts (SharedPlanning)
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/shared-plannings
/v1/shared-plannings/{id}One shared planning. By id. Not found unless this pilot is its owner or its accepted guest.
Fields: src/core/planning/shared.ts (SharedPlanning)
| Parameter | In | Description |
|---|---|---|
id | path, required | The shared planning id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/shared-plannings/{id}
/v1/logbookLogbook entries. Every flight in the logbook, with every field; the ANAC logbook line is under log. Newest first by flight date. Durations are whole minutes.
Fields: src/services/storage/db.ts (FlightLog) and src/core/logbook/entry.ts (LogbookEntry)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/logbook
/v1/logbook/totalsLogbook totals. Sums over every entry, in whole minutes, computed by the same function the app uses. The breakdown cells are never added to the flight total. Optional from / to dates bound the flights counted.
| Parameter | In | Description |
|---|---|---|
from | query | First flight date counted, YYYY-MM-DD, inclusive. |
to | query | Last flight date counted, YYYY-MM-DD, inclusive. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/logbook/totals
/v1/logbook/{id}One logbook entry. By entry id.
Fields: src/services/storage/db.ts (FlightLog)
| Parameter | In | Description |
|---|---|---|
id | path, required | The logbook entry id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/logbook/{id}
/v1/checklistsChecklists. Every checklist the pilot built, with its sections and items, for every aircraft. Sorted by aircraft, then by the pilot’s own order. Filter with aircraftId.
Fields: src/core/checklists/types.ts (Checklist)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
aircraftId | query | Only the checklists of this aircraft. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/checklists
/v1/checklists/{id}One checklist. By checklist id.
Fields: src/core/checklists/types.ts (Checklist)
| Parameter | In | Description |
|---|---|---|
id | path, required | The checklist id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/checklists/{id}
/v1/check-flightsFlight checks. One record per flight the pilot ran an aircraft’s checklists on: when it started and finished, the lists in that day’s order, and a summary — items total, items done, and every item left unchecked. Newest first. Filter with aircraftId.
Fields: src/core/checklists/checkFlight.ts (CheckFlight)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
aircraftId | query | Only the flights of this aircraft. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/check-flights
/v1/check-flights/{id}One flight’s checks. By flight id.
Fields: src/core/checklists/checkFlight.ts (CheckFlight)
| Parameter | In | Description |
|---|---|---|
id | path, required | The flight id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/check-flights/{id}
/v1/plugin/sessions/{id}Store a plugin session. An idempotent upsert of one whole RogerATC session: send it at the start, at checkpoints, and at the end, under the same id. Answers 201 the first time and 200 after. 410 gone when the pilot deleted the session in the app — stop sending it. Oldest events are dropped to fit the limits, and eventsDropped says how many.
Fields: src/core/plugin/session.ts (PluginSession)
| Parameter | In | Description |
|---|---|---|
id | path, required | The plugin’s session id, stable for the flight: 3–128 of A–Z a–z 0–9 . _ -. |
curl -X PUT -H "Content-Type: application/json" -d @session.json -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plugin/sessions/{id}
/v1/plugin/liveReport live state, collect commands. The live link, polled by the plugin while the simulator runs. The body is the plugin’s current state — position, phase, radios, weather as the simulator has it, the controller’s last procedure — and the outcome (acks) of every command it dealt with since the last call. The answer carries the commands the pilot sent from the app and the plugin has not collected yet, oldest first, each handed over exactly once, and pollMs: 2000 while somebody has the RogerATC screen open, 10000 while nobody does. Always 200. The report replaces the previous one and expires after ten minutes; it is never a track and never a synced record. No navigation data: the plugin sends where the aeroplane is, never what is near it. Body at most 32 KB.
Fields: src/core/plugin/live.ts (LiveReport, CommandRequest)
curl -X PUT -H "Content-Type: application/json" -d @session.json -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plugin/live
/v1/plugin/sessionsPlugin sessions. Every RogerATC session stored for the account, newest first, with its statistics and events. updatedSince follows sessions still in progress.
Fields: src/core/plugin/session.ts (PluginSession)
| Parameter | In | Description |
|---|---|---|
limit | query | Records per page, 1–200. Default 50. A page may hold fewer when records are large. |
cursor | query | Opaque. Pass page.nextCursor from the previous response to get the next page. |
updatedSince | query | ISO 8601 date-time. Only records changed after it — the way to follow changes. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plugin/sessions
/v1/plugin/sessions/{id}One plugin session. By session id.
Fields: src/core/plugin/session.ts (PluginSession)
| Parameter | In | Description |
|---|---|---|
id | path, required | The plugin’s session id. |
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plugin/sessions/{id}
/v1/plugin/statsPlugin totals. Totals over every stored session — the same function the app’s RogerATC screen uses: sessions by status, minutes, transmissions, readbacks, response time, stations, aerodromes and aircraft.
Fields: src/core/plugin/session.ts (PluginTotals)
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/plugin/stats
/v1/pilotPilot profile. The pilot profile with every field: name, telephone, licences, ratings with their expiry, the medical certificate. data is null when the pilot has not created one. The key grants this; treat it accordingly.
Fields: src/core/flightplan/types.ts (PilotProfile) and src/core/pilot/credentials.ts
curl -H "Authorization: Bearer $ROGER_API_KEY" https://api.rogeratc.app/v1/pilot