Logger API

API version 1.2

Overview

The Logger Deep Link API enables third-party applications to import flight data into Logger using deep links formatted with URL schemes and JSON payloads. This API is designed for seamless integration, enabling the addition of comprehensive flight details with minimal user interaction. This document outlines the structure, requirements, and usage of these deep links.

for support contact support@getlogger.com

Deep Link Format

The deep link for importing flight data into Logger follows this format:

loggerapp://import/add?package=<JSON_DATA>

Here, <JSON_DATA> represents the URL-encoded JSON string containing the flight data entries and metadata. Note: The same deep link structure is also used when updating previously imported entries (more info in importId section).

JSON Data Structure

The JSON data sent through the deep link should be structured as follows:

Top-Level Structure

{
  "entries": [/*Array of Entry Objects*/],
  "metadata": {
    "appName": "String",
    "appVersion": "String",
    "isUTC": Boolean
  }
}

Metadata Object

Metadata object needs to be provided together with valid (non-nil) values in order to parse the JSON.

The metadata object contains:

  • appName: The name of the application sending the data.
  • appVersion: The version of the application sending the data.
  • isUTC: A boolean indicating whether the time values and dates are in UTC.

Example:

"metadata": {
    "appName": "My App",
    "appVersion": "1.2.1",
    "isUTC": true
  }

Entry Object

Each entry in the entries array should follow this structure:

"entries":[{
  "importId": "String",
  "entryType": "String",
  "departureDate": "YYYY-MM-DD"
// Other properties as decribed in documentation below
},
{
  "importId": "String",
  "entryType": "String",
  "departureDate": "YYYY-MM-DD"
// Other properties as decribed in documentation below
}]

As a minimum importId, entryType and departureDate need to be provided. Other properties are optional.

Core Flight Information

  • These properties with valid values need to be provided in order to parse the JSON

importId

  • Provide unique non-empty string to each entry.
  • In order to update previously imported entry, import new entry with matching importId

entryType

  • “Flight”
  • “Dead Head”
  • "Other Duty"
  • “Simulator”
  • “Airport Reserve”
  • “Home Reserve”
  • “Home Standby”
  • “Airport Standby”

departureDate

  • The date of departure (yyyy-MM-dd format), e.g. 2024-01-22
  • If metadata isUTC is set to true , provide the date for UTC time zone
  • If metadata isUTC is set to false , provide the date for departure time zone

Time Details

  • These properties contain departure and arrival times in HHmm or HH:mm format
  • If metadata isUTC is set to true , provide times in UTC
  • If metadata isUTC is set to false , provide local times

departureTime

  • Actual departure time (off block)

arrivalTime

  • Actual arrival time (on block)

takeOffTime

  • Actual take-off time

landingTime

  • Actual landing time

onDuty

  • The start time of duty

offDuty

  • The end time of duty

scheduledDepartureTime

  • The scheduled time of departure

scheduledArrivalTime

  • The scheduled time of arrival

Airport Details

departureAirport

  • IATA three-letter code for departure airport, or
  • ICAO four-letter code for the departure airport (e.g. JFK or KJFK)

arrivalAirport

  • IATA three-letter code for arrival airport, or
  • ICAO four-letter code for the arrival airport (e.g. JFK or KJFK)

Aircraft and Crew Details

aircraftType

  • The type of aircraft used
  • As standard practice, provide ICAO four-letter code (e.g. B738, PA28)

aircraftRegistration

  • The registration number of the aircraft (tail number)

picName

  • The name of the Pilot in Command (PIC).

sicName

  • The name of the Second in Command (SIC).

flightEngineerName

  • The name of the Flight Engineer.

pilotExaminerName

  • The name of the Examiner.

pilotInstructorName

  • The name of the Instructor.

pilotObserverName

  • The name of the 1st Observer.

pilotObserver2Name

  • The name of the 2nd Observer.

pilotReliefName

  • The name of the 1st Relief Pilot.

pilotRelief2Name

  • The name of the 1st Relief Pilot.

pilotStudentName

  • The name of the Student Pilot.

pilotStudent2Name

  • The name of the 2nd Student Pilot.

pilotSOName

  • The name of the Second Officer.

pilotFlying

  • A boolean indicating if the entry corresponds to the pilot flying the aircraft.

licenseHolderLicenseNumber

  • The license number of the license holder.

licenseHolderName

  • The name of the license holder.

Function Time Details

  • These properties contain time interval information in HH:mm or H:mm format

picTime

  • The time logged as Pilot in Command

ifrTime

  • The time flown under Instrument Flight Rules (IFR)

actualInstrumentTime

  • The time flown in Instrument Flight Conditions (IMC)

crossCountryTime

  • The time flown over cross-country flights

multiCrewTime

  • The time logged in multi-crew operations

singleEngineTime

  • The time flown in single-engine aircraft

multiEngineTime

  • The time flown in multi-engine aircraft

instructorTime

  • The time logged as an instructor

dualTime

  • The time logged in dual received (student pilot)

sicTime

  • The time logged as Second in Command

gliderTime

  • The time flown in a glider

simTime

  • The time spent in a simulator

simInstructorTime

  • The time spent as simulator instructor (TRI/SFI)

simExaminerTime

  • The time spent as simulator examiner / checker (TRE/SFE)

lineInstructorTime

  • The time spent as line training instructor (LTI/LTC)

lineCheckerTime

  • The time spent as line check captain / check airman (LCC)

pcatdTime

  • The time spent in a PC-based aviation training device

rotorcraftTime

  • The time flown in a rotorcraft

simulatedInstrumentTime

  • The time spent under simulated instrument conditions

nightVisionTime

  • The time flown using night vision goggles.

Take-off and Landing

numberOfDayLandings

  • The number of landings during daylight.

numberOfNightLandings

  • The number of landings at night.

numberOfDayTakeOffs

  • The number of takeoffs during daylight.

numberOfNightTakeOffs

  • The number of takeoffs at night.

bolters

  • The number of missed carrier landings.

catapults

  • The number of carrier takeoffs.

arrests

  • The number of successful carrier landings.

flightCarrierLanding

  • The total number of carrier landings.

waterTakeOff

  • The number of takeoffs from water.

waterLanding

  • The number of landings on water.

Operational Values and Measurements

flightDistance

  • The distance flown during the flight, in nautical miles (NM)

fuelBurned

  • The amount of fuel burned during the flight, in kgs, litres or gallons.

hobbsIn

  • The Hobbs meter reading at the start of the flight.

hobbsOut

  • The Hobbs meter reading at the end of the flight.

tachIn

  • The tachometer reading at the start of the flight.

tachOut

  • The tachometer reading at the end of the flight.

Flight Rules

numberOfApproaches

  • The number of approaches performed during the flight.

numberOfHolds

  • The number of holding patterns.

approachType

  • The type of approach performed
  • Allowed values:
    • "ILS CAT I"
    • "ILS CAT II"
    • "ILS CAT III"
    • "LOC"
    • "VOR"
    • "NDB"
    • "RNP"
    • "GLS"
    • "SLS"
    • "MLS"
    • "PAR"
    • "SRA"
    • "Visual"
    • "Circling"
    • "Monitored"

flightRules

  • The flight rules under which the flight was conducted, e.g., "VFR" (Visual Flight Rules) or "IFR" (Instrument Flight Rules).

Additional Information

remark

  • Any additional remarks or notes about the flight.

isFavorite

  • A boolean indicating whether the flight is marked as a favorite.
  • When true the entered flight will be favorite in Logger

isLocked

  • A boolean indicating whether the flight entry is locked for editing.
  • When true the entered flight will be imported as locked for editing in Logger

Example Usage

Example of multiple flights with minimum required Data with times and dates in local time zone:

loggerapp://import/add?package={
    "entries": [
        {
            "importId": "86bff049-d825-4664-9741-5a39475c575a",
            "entryType": "Flight",
            "departureDate": "2024-01-01"
        },
	{
	    "importId": "139e1797-c9a2-4de2-a0da-13b870b567f6",
            "entryType": "Flight",
            "departureDate": "2024-01-02"
        },
        {
            "importId": "0c6842b1-f4c0-4f58-a25a-69433b44bb8c",
            "entryType": "Flight",
            "departureDate": "2024-01-25"
        }
    ],
    "metadata": {
        "appName": "Your Third Party App",
        "appVersion": "1.0.0",
        "isUTC": false
    }
}

Example of updating first flight from previous example:

loggerapp://import/add?package={
    "entries": [
        {
            //Same importId is used to invoke the update instead of new import
            "importId": "86bff049-d825-4664-9741-5a39475c575a",
            "entryType": "Simulator",
            "departureDate": "2024-01-01"
        }
    ],
    "metadata": {
        "appName": "Your Third Party App",
        "appVersion": "1.0.0",
        "isUTC": false
    }
}

Example of single flight with optional data and times and dates in UTC

loggerapp://import/add?package={
    "entries": [
        {
            "importId": "86bff049-d825-4664-9741-5a39475c575a",
            "entryType": "Flight",
            "departureDate": "2024-01-01",
            "departureTime": "0200",
            "takeOffTime": "08:00",
            "landingTime": "10:00",
            "arrivalTime": "1200",
            "departureAirport": "SYD",
            "arrivalAirport": "LAX",
            "numberOfDayLandings": 1,
            "numberOfNightLandings": 0,
            "aircraftType": "A320",
            "aircraftRegistration": "N123AB",
            "picName": "John Doe",
            "sicName": "Jane Doe",
            "remark": "Smooth flight",
            "pilotFlying": true,
            "picTime": "2:00",
            "ifrTime": "02:00",
            "nightTime": "02:00",
            "instructorTime": "02:10",
            "dualTime": "01:10",
            "sicTime": "01:00",
            "approachType": "ILS CAT I",
            "flightRules": "IFR",
            "crossCountryTime": "02:00",
            "numberOfDayTakeOffs": 1,
            "numberOfNightTakeOffs": 0
        }
    ],
    "metadata": {
        "appName": "Your Third Party App",
        "appVersion": "1.0.0",
        "isUTC": false
    }
}