MAG Technology

Documentation

The key to successfully operate an airport!

Tour operators and other external parties, for instance ground handlers, would like the ability to be notified, in near real-time, of any changes to flight data relating to movements. This information can be used to drive their digital systems and also aid on the day operations and decision making with the overall goal to improve the experience of their customers and our guests, who are using our 3 airports in MAG.

Real-Time Flight Updates

MAG's real-time flight updates offers a wealth of information on current and scheduled flights to and from our three airports. The flight updates events are published, at near real-time for Manchester, London Stansted and East Midland airports as they change throughout the day, so that the information is available for developers to subscribe to and make use of the data.

All new and updated gate information can be made available to external customers who require it, via a subscription to a Kafka topic.

Common Design

Dedicated Kafka topics provided to subscribers to ensure data is provided correctly and only relevant to the subscriber.

Schema / Data Model

airline:
  type: object
  properties:
    airlineCodeIATA:
      description: IATA code of the airline operating the flight.
      type: string
      example: EZY
    airlineCode:
      description: ICAO code of the airline operating the flight.
      type: string
      example: EZY
    operatingAirlineIATA:
      description: IATA code of the airline operating the flight.
      type: string
      example: EZY
    operatingAirlineICAO:
      description: ICAO code of the airline operating the flight.
      type: string
      example: EZY
    operatingAirlineTicketed:
      description: >-
        The airline code which will appear on the passengers' tickets
        for this flight.  This can be either the IATA or ICAO code.
      type: string
      example: EZY
    flightNumber:
      description: The number of the flight.
      type: string
      example: '123'
    operationalSuffix:
      description: >-
        An optional single letter suffix sometimes appended to the
        flight number.
      type: string
      example: R
aircraft:
  type: object
  properties:
    aircraftTypeIATA:
      description: The aircraft-type information IATA.
      type: string
      example: '320'
    aircraftId:
      description: ICAO callsign
      type: string
      example: EZY708
    aircraftType:
      description: The aircraft-type information ICAO.
      type: string
      example: A320
    aircraftRegistration:
      description: The aircraft registration.
      type: string
      example: GEZTY
    maxPax:
      description: Maximum number of passengers an aircraft can carry
      type: integer
      example: '186'
movement:
  type: object
  properties:
    actualInBlockTime:
      description: (AIBT) Details on when an aircraft will arrive in blocks
      type: string
      format: date-time
      example: '2023-10-23T21:03:00Z'
    actualOffBlockTime:
      description: >-
        (AOBT) Details on when an aircraft will be ready, all doors
        closed, boarding bridge removed, push back vehicle available and
        ready to start up / push back immediately upon reception of
        clearance from the tower.
      type: string
      format: date-time
      example: '2023-10-23T21:03:00Z'
    actualTakeOffTime:
      description: (ATOT) The actual flight take-off time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    actualLandingTime:
      description: (ALDT) The actual flight touch-down time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    actualTaxiInTime:
      description: (AXIT) Details on taxi time for an aircraft
      type: integer
      example: '10'
    actualTaxiOutTime:
      description: (AXOT) Details on taxi time for an aircraft
      type: integer
      example: '10'
    actualReadyTime:
      description: >-
        (ARDT) Actual Ready Time (for Movement). When the aircraft is
        ready for start up/push back or taxi immediately after clearance
        delivery, meeting the requirements set by the TOBT definition.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    actualStartUpRequestTime:
      description: >-
        (ASRT) Actual Start Up Request Time. Time the pilot requests
        start up clearance.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    actualStartUpApprovalTime:
      description: >-
        (ASAT) Actual Start Up Approval Time. Time that an aircraft
        receives its start up approval. Note - the moment the start up
        approval is given can be in advance of the TSAT.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    actual:
      description: Chroma actual timestamp
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    ATCActual:
      description: ATC actual timestamp - Actual else Finals
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    calculatedTakeOffTime:
      description: (CTOT) The calculated flight Take-Off time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    estimatedInBlockTime:
      description: (EIBT) Details on when an aircraft will arrive in blocks
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    estimatedLandingTime:
      description: (ELDT) Estimated time for the aircraft to land.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    estimatedOffBlockTime:
      description: >-
        (EOBT) Details on when an aircraft will be ready, all doors
        closed, boarding bridge removed, push back vehicle available and
        ready to start up / push back immediately upon reception of
        clearance from the tower.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    estimatedTaxiInTime:
      description: (EXIT) Details on taxi time for an aircraft
      type: integer
      example: '10'
    estimatedTaxiOutTime:
      description: (EXOT) Details on taxi time for an aircraft
      type: integer
      example: '10'
    estimated:
      description: Chroma estimated timestamp.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    departureFlightStatus:
      description: The status of the flight
      type: string
      enum:
        - Operated
        - Cancelled
      example: Operated
    arrivalFlightStatus:
      description: The status of the flight
      type: string
      enum:
        - InApproach
        - Landed
        - Operated
        - Cancelled
      example: Operated
    minimumTurnAroundTime:
      description: (MTTT) Minimum amount of time for a turnaround
      type: string
      example: '30'
    scheduledInBlockTime:
      description: (SIBT) Details on when an aircraft will arrive in blocks
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    scheduledOffBlockTime:
      description: >-
        (SOBT) Details on when an aircraft will be ready, all doors
        closed, boarding bridge removed, push back vehicle available and
        ready to start up / push back immediately upon reception of
        clearance from the tower.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    scheduledInBlockDate:
      description: Date of when an aircraft will arrive in blocks
      type: string
      format: date
      example: '2023-10-23'
    scheduledOffBlockDate:
      description: >-
        Date of when an aircraft will be ready, all doors closed,
        boarding bridge removed, push back vehicle available and ready
        to start up / push back immediately upon reception of clearance
        from the tower.
      type: string
      format: date
      example: '2023-10-23'
    scheduledLandingTime:
      description: (SLDT) The scheduled flight touch-down time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    scheduledTakeOffTime:
      description: (STOT) The scheduled flight Take-Off time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    scheduled:
      description: Chroma scheduled timestamp.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    targetOffBlockTime:
      description: >-
        (TOBT) Details on when an aircraft will be ready, all doors
        closed, boarding bridge removed, push back vehicle available and
        ready to start up / push back immediately upon reception of
        clearance from the tower.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    targetTakeOffTime:
      description: (TTOT) The target flight Take-Off time
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    targetStartUpApprovalTime:
      description: >-
        (TSAT) Target Start Up Approval Time. The time provided by ATC
        taking into account TOBT, CTOT and/or the traffic situation that
        an aircraft can expect start up / push back approval.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    zoningTime:
      description: Zoning time for the aircraft.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    nextInformationTime:
      description: UTC time when next information about the flight is expected.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    onFinalsTime:
      description: >-
        UTC Time at which the flight starts its approach to landing,
        when the aircraft is lined up with the runway and descending for
        landing. Valid for arrival flights only.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    probableTime:
      description: Probable time for the aircraft.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    probableCode:
      description: Probable code for the aircraft.
      type: string
      example: S
plan:
  type: object
  properties:
    airportArrivalSlotTime:
      description: Scheduled Datetime
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    arrivalOrDeparture:
      type: string
      enum:
        - A
        - D
      example: A
    flightPlanId:
      type: string
      example: '12234567'
    turnaroundTargetTakeOffTime:
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    standardInstrumentDepartureRoute:
      description: >-
        Standard instrument departure (SID) routes, also known as
        departure procedures
      type: string
      example: SANBA1Y
    standardTerminalArrivalRoute:
      description: >-
        In aviation, a standard terminal arrival route or standard
        terminal arrival (STAR)
      type: string
      example: SANBA1Y
flight:
  type: object
  properties:
    departureAirport:
      description: Departure Airport ICAO
      type: string
      example: EGCC
    destinationAirport:
      description: Destination Airport ICAO
      type: string
      example: EGAA
    flightIdAODB:
      description: Unique reference in Chroma
      type: integer
      example: '18789681'
    flightTypeIATA:
      description: Service Type
      type: string
      example: '22'
    flightType:
      description: CAA Flight Type
      type: string
      example: F
    departureAirportIATA:
      description: Departure Airport IATA
      type: string
      example: MAN
    destinationAirportIATA:
      description: Destination Airport IATA
      type: string
      example: BFS
    flightIdIATA:
      description: Flight number from ACDM
      type: string
      example: EZY708
    ATCflightId:
      description: Flight number from ATC
      type: string
      example: EZY708
    sector:
      description: Domestic or International Status
      type: string
      enum:
        - D
        - I
      example: D
    commonTravelArea:
      description: >-
        Flag to show if the non-MAG airport is within the CTA, is
        Domestic or is non-CTA International
      type: string
      enum:
        - CTA
        - DOMESTIC
        - INTERNATIONAL
      example: CTA
    terminal:
      description: Terminal information
      type: string
      example: T1
    stand:
      description: Stand information
      type: string
      example: '10'
    gate:
      description: Uniquely defines one gate at the airport.
      type: string
      example: '54'
    gateDescription:
      description: Full name for the gate at the airport.
      type: string
      example: GATE 54 (T3)
    gateAction:
      description: The stage in the boarding process for the gate.
      type: string
      enum:
        - P
        - I
        - B
        - F
        - E
        - 'N'
        - C
      example: I
    gateActionDescription:
      description: The stage description in the boarding process for the gate.
      type: string
      enum:
        - Pending
        - Gate Open
        - Boarding
        - Final Call
        - End Boarding
        - Gate Deallocated
        - Closed
      example: Gate Open
    gateOpen:
      description: >-
        The UTC time at which the gate is opened for passenger
        processing.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    estimatedGateOpen:
      description: >-
        The estimated UTC time at which the gate is opened for passenger
        processing.
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    gateStartBoardingTime:
      description: Details on when boarding is started at the gate
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    gateEndBoardingTime:
      description: Details on when boarding has ended at the gate
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    gateChangeIndicator:
      description: Indicates if the gate has changed
      type: string
      example: '1'
    gateRemark1:
      description: Information to display on Gate screens
      type: string
      example: Boarding shortly
    gateRemark2:
      description: Information to display on Gate screens
      type: string
      example: Please take a seat
    diversionAirportICAO:
      description: >-
        ICAO code of the airport to / from which the flight has been
        diverted.
      type: string
      example: BFS
    checkInDeskFrom:
      description: >-
        The first check in desk in a range that a single flight is
        allocated to.
      type: string
      example: D1
    checkInDeskTo:
      description: >-
        The first check in desk in a range that a single flight is
        allocated to.
      type: string
      example: D9
    checkInStatus:
      description: >-
        The check in status of a single flight that is allocated to one
        or more check in desks..
      type: string
      example: O
    checkInZone:
      description: Where within the passenger terminal the desk range is located.
      type: string
      example: E
    codeshares:
      type: array
      items:
        type: object
        properties:
          codeshareAirlineIATA:
            description: >-
              IATA code of the airline company marketing a codeshare for
              this flight. See AirlineIATA for definition of content.
            type: string
            example: MH
          codeshareFlightNumber:
            description: The FlightNumber for a specific codeshare for this flight.
            type: string
            example: '1234'
    delays:
      type: array
      items:
        type: object
        properties:
          delayCode:
            description: Numeric IATA delay/diversion code.
            type: string
            example: PS
    flightSteps:
      type: array
      items:
        type: object
        properties:
          airportIATACode:
            description: 3 character IATA code which uniquely defines an airport.
            type: string
            example: BLQ
          airportICAOCode:
            description: 4 character ICAO code which uniquely defines an airport.
            type: string
            example: LIPE
    lastUpdated:
      description: >-
        BIGINT identifier for when a record has been updated in source
        system
      type: integer
      example: 1078742623
passenger:
  type: object
  properties:
    localPassengers:
      description: Total passengers
      type: integer
      example: '125'
    passengerTransferToFlightCount:
      description: Count of transfer passengers
      type: integer
      example: '25'
    bagTransferToFlightCount:
      description: Count of transfer bags
      type: integer
      example: '25'
    prmCount:
      description: Count of Passengers with Reduced Mobility
      type: integer
      example: '5'
baggage:
  type: object
  properties:
    beltFirstBagTarget:
      description: >-
        Target time for when the first passenger bag is loaded onto a
        baggage belt (carousel)
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    beltLastBagTarget:
      description: >-
        Target time for when the last passenger bag is loaded onto
        baggage a belt (carousel)
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    beltFirstBag:
      description: >-
        Details on when the first passenger bag was loaded onto a
        baggage belt (carousel)
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    beltLastBag:
      description: >-
        Details on when the last passenger bag was loaded onto baggage a
        belt (carousel)
      type: string
      format: date-time
      example: '2023-10-23T21:13:00Z'
    baggageClaimUnitName:
      description: Details of the BaggageClaimUnit
      type: string
      example: 7A
    baggageChutes:
      description: String array of Baggage chutes
      type: string
      example: '["12", "13"]'
resources:
  type: object
  properties:
    handler:
      type: array
      items:
        type: object
        properties:
          handlerName:
            description: Name of a Handler
            type: string
            example: Swissport
          handlerServiceType:
            description: >-
              Defines the type of service that the handler provides,
              e.g. Passenger, Baggage, Ramp
            type: string
            example: Passenger
    cancelDisplay:
      description: Defines if this data set is for display, or not.
      type: string
      example: 'true'
    cancelPublicDisplay:
      description: Defines if this data set is for public display, or not.
      type: string
      example: 'true'
    remarks:
      type: array
      items:
        type: object
        properties:
          remarkType:
            description: >-
              RemarkType indicates what area this Remark is related to.
              examples include marshalling, coach, coaching, flight,
              apron, generated, override, hall, porter.
            type: string
            example: Hall
          remarkText:
            description: Free text that is the actual remark.
            type: string
            example: Desks Open At 10:50
    areaText:
      type: object
      properties:
        area:
          description: Information for displaying text on FIDS
          type: string
          example: '2'
        lineNo:
          description: Information for displaying text on FIDS
          type: string
          example: '1'
        special:
          description: Information for displaying text on FIDS
          type: string
          example: '3'
        text:
          description: Information for displaying text on FIDS
          type: string
          example: CHECK
        inhibit:
          description: Information for displaying text on FIDS
          type: string
          example: '3'
event:
  type: object
  properties:
    magAirport:
      description: MAG Airport Code
      type: string
      enum:
        - MAN
        - STN
        - EMA
      example: MAN
    eventId:
      description: Unique identifier for the message
      type: string
      example: '1923756'
    eventType:
      description: Field to identifiy the type of message
      type: string
      example: AODB Data Update
    humanNarrative:
      type: string
      example: Data update from AODB
    machineNarrative:
      type: string
      example: Update from flight_events topic
    ruleId:
      type: string
      example: '1'
linkedArrival:
  type: object
  properties:
    aircraft:
      type: object
      properties:
        aircraftRegistration:
          type: string
          example: RYR
        aircraftId:
          description: ICAO callsign
          type: string
          example: RYR
    flight:
      type: object
      properties:
        flightIdAODB:
          type: integer
          example: '18789264'
    plan:
      type: object
      properties:
        flightPlanId:
          type: string
          example: '12234123'

Example Message (payload):

FLIGHT_ACDM_EVENT

{
  "airline": {
    "airlineCodeIATA": "EZY",
    "airlineCode": "EZY",
    "operatingAirlineIATA": "EZY",
    "operatingAirlineICAO": "EZY",
    "operatingAirlineTicketed": "EZY",
    "flightNumber": "123",
    "operationalSuffix": "R"
  },
  "aircraft": {
    "aircraftTypeIATA": "320",
    "aircraftId": "EZY708",
    "aircraftType": "A320",
    "aircraftRegistration": "GEZTY",
    "maxPax": "186"
  },
  "movement": {
    "actualInBlockTime": "2023-10-23T21:03:00Z",
    "actualLandingTime": "2023-10-23T21:13:00Z",
    "actualTaxiInTime": "10",
    "actual": "2023-10-23T21:13:00Z",
    "ATCActual": "2023-10-23T21:13:00Z",
    "estimatedInBlockTime": "2023-10-23T21:13:00Z",
    "estimatedLandingTime": "2023-10-23T21:13:00Z",
    "estimatedTaxiInTime": "10",
    "estimated": "2023-10-23T21:13:00Z",
    "arrivalFlightStatus": "Operated",
    "minimumTurnAroundTime": "30",
    "scheduledInBlockTime": "2023-10-23T21:13:00Z",
    "scheduledInBlockDate": "2023-10-23",
    "scheduledLandingTime": "2023-10-23T21:13:00Z",
    "scheduled": "2023-10-23T21:13:00Z",
    "zoningTime": "2023-10-23T21:13:00Z",
    "nextInformationTime": "2023-10-23T21:13:00Z",
    "onFinalsTime": "2023-10-23T21:13:00Z",
    "probableTime": "2023-10-23T21:13:00Z",
    "probableCode": "S"
  },
  "plan": {
    "airportArrivalSlotTime": "2023-10-23T21:13:00Z",
    "arrivalOrDeparture": "A",
    "flightPlanId": "12234567",
    "turnaroundTargetTakeOffTime": "2023-10-23T21:13:00Z",
    "standardInstrumentDepartureRoute": "SANBA1Y",
    "standardTerminalArrivalRoute": "SANBA1Y"
  },
  "flight": {
    "departureAirport": "EGAA",
    "destinationAirport": "EGCC",
    "flightIdAODB": "18789681",
    "flightTypeIATA": "22",
    "flightType": "F",
    "departureAirportIATA": "BFS",
    "destinationAirportIATA": "MAN",
    "flightIdIATA": "EZY708",
    "ATCflightId": "EZY708",
    "sector": "D",
    "commonTravelArea": "CTA",
    "terminal": "T1",
    "stand": "10",
    "gate": "54",
    "gateDescription": "GATE 54 (T3)",
    "diversionAirportICAO": "BFS",
    "codeshares": [
      {
        "codeshareAirlineIATA": "MH",
        "codeshareFlightNumber": "1234"
      }
    ],
    "delays": [
      {
        "delayCode": "PS"
      }
    ],
    "flightSteps": [
      {
        "airportIATACode": "BLQ",
        "airportICAOCode": "LIPE"
      }
    ],
    "lastUpdated": 1078742623
  },
  "passenger": {
    "localPassengers": "125",
    "passengerTransferToFlightCount": "25",
    "bagTransferToFlightCount": "25",
    "prmCount": "5"
  },
  "baggage": {
    "beltFirstBagTarget": "2023-10-23T21:13:00Z",
    "beltLastBagTarget": "2023-10-23T21:13:00Z",
    "beltFirstBag": "2023-10-23T21:13:00Z",
    "beltLastBag": "2023-10-23T21:13:00Z",
    "baggageClaimUnitName": "7A",
    "baggageChutes": "[\"12\", \"13\"]"
  },
  "resources": {
    "handler": [
      {
        "handlerName": "Swissport",
        "handlerServiceType": "Passenger"
      }
    ],
    "cancelDisplay": "true",
    "cancelPublicDisplay": "true",
    "remarks": [
      {
        "remarkType": "Hall",
        "remarkText": "Desks Open At 10:50"
      }
    ],
    "areaText": {
      "area": "2",
      "lineNo": "1",
      "special": "3",
      "text": "CHECK",
      "inhibit": "3"
    }
  },
  "event": {
    "magAirport": "MAN",
    "eventId": "1923756",
    "eventType": "AODB Data Update",
    "humanNarrative": "Data update from AODB",
    "machineNarrative": "Update from flight_events topic",
    "ruleId": "1"
  }
}

Security

Each integration will have a Topic created for that specific use case. All communications to the Kafka topics will be TLS via Certificate Auth and with IP Whitelisting.

SLA

Our SLA’s for this service are as follows:
Availability/Limited Resilience (Target 93.54% - Restoration 48 hrs)

  • Manual failover or system rebuild

  • Maximum data loss 60 hours

Version and Release Notes

1.09 Initial Release