# CifpHeliportMsa

Minimum Safe Altitude (MSA) sectors associated with heliports, defining safe altitudes within specified radii and bearing sectors around a center navaid or fix

**Source:** CIFP table `CIFP_HELIPORT_MSA` · version `239462ba9c35` · effective 2026-04-16

> Each record can contain up to 7 MSA sectors (bearing/altitude/radius triplets). The SECTOR_BEARING field encodes both the from-bearing and to-bearing as a 6-digit string (e.g., '180180' means 000-360 omnidirectional). Altitudes are stored in hundreds of feet MSL (e.g., '029' = 2900 feet MSL).

## Example query

```graphql
# Introspect the CifpHeliportMsa type in GraphiQL at https://api.nav.sortie.co/graphql
# Example shape (pair with a compatible root query field):
{
  # ...rootQuery... {
    recordType
    customerAreaCode
    sectionCode
    heliportIdentifier
  # }
}
```

Run at https://api.nav.sortie.co/graphql (GraphiQL available in-browser).

## Fields

| Field | Type | Description | Units | Enum |
|---|---|---|---|---|
| `recordType` | `RecordType` | ARINC 424 record type indicator; 'S' denotes a standard record |  | `S`=Standard record |
| `customerAreaCode` | `CifpHeliportApproachCustomerAreaCode` | Geographic area code identifying the region of the world for the data; 'USA' indicates United States |  | `USA`=United States of America |
| `sectionCode` | `CifpHeliportMsaSectionCode` | ARINC 424 section code identifying the data category; 'HS' denotes Heliport records |  | `HS`=Heliport |
| `heliportIdentifier` | `HeliportIdentifier` | ICAO or FAA identifier of the heliport to which this MSA record belongs |  | `6N5`=Greenwood Lake Airport (heliport); `87N`=Princeton Airport (heliport); `KJRA`=West 30th St. Heliport; `KJRB`=Downtown Manhattan/Wall St. Heliport |
| `icaoCode` | `CifpHeliportMsaIcaoCode` | ICAO region code for the heliport identifier; 'K6' denotes contiguous US region |  | `K6`=Contiguous United States (ICAO region) |
| `msaCenter` | `MsaCenter` | Identifier of the navaid or fix used as the center point for the MSA calculation |  | `CRAN`=CRAN navaid/fix; `HUDS`=HUDS navaid/fix; `JORB`=JORB navaid/fix |
| `icaoCode2` | `CifpHeliportMsaIcaoCode` | ICAO region code associated with the MSA center navaid or fix |  | `K6`=Contiguous United States (ICAO region) |
| `sectionCode2` | `CifpHeliportMsaSectionCode2` | ARINC 424 section code identifying the type of the MSA center fix/navaid; indicates which database table contains the center point |  | `EA`=Enroute Waypoint; `HC`=Heliport Terminal Waypoint |
| `multipleCode` | `String` | Multiple code used to differentiate records when more than one MSA exists for the same heliport and center fix combination; null if only one record exists |  |  |
| `continuationRecordNo` | `CifpHeliportMsaContinuationRecordNo` | Continuation record number; '0' indicates the primary record, values '1' and above indicate continuation records with additional data |  | `0`=Primary record; `1`=First continuation record |
| `sectorBearing` | `String` | Encoded bearing limits for the first MSA sector as a 6-digit string combining the from-bearing (first 3 digits) and to-bearing (last 3 digits) in degrees magnetic or true; '180180' encodes a full 360-degree omnidirectional sector | degrees |  |
| `sectorAltitude` | `SectorAltitude` | Minimum safe altitude for the first MSA sector, stored in hundreds of feet MSL (e.g., '029' = 2900 feet MSL) | hundreds of feet MSL | `019`=1900 feet MSL; `029`=2900 feet MSL |
| `sectorRadius` | `String` | Radius of the first MSA sector measured from the MSA center point | nautical miles |  |
| `sectorBearing2` | `String` | Encoded bearing limits for the second MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 2 sectors are defined | degrees |  |
| `sectorAltitude2` | `String` | Minimum safe altitude for the second MSA sector in hundreds of feet MSL; null if fewer than 2 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius2` | `String` | Radius of the second MSA sector from the MSA center point; null if fewer than 2 sectors are defined | nautical miles |  |
| `sectorBearing3` | `String` | Encoded bearing limits for the third MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 3 sectors are defined | degrees |  |
| `sectorAltitude3` | `String` | Minimum safe altitude for the third MSA sector in hundreds of feet MSL; null if fewer than 3 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius3` | `String` | Radius of the third MSA sector from the MSA center point; null if fewer than 3 sectors are defined | nautical miles |  |
| `sectorBearing4` | `String` | Encoded bearing limits for the fourth MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 4 sectors are defined | degrees |  |
| `sectorAltitude4` | `String` | Minimum safe altitude for the fourth MSA sector in hundreds of feet MSL; null if fewer than 4 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius4` | `String` | Radius of the fourth MSA sector from the MSA center point; null if fewer than 4 sectors are defined | nautical miles |  |
| `sectorBearing5` | `String` | Encoded bearing limits for the fifth MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 5 sectors are defined | degrees |  |
| `sectorAltitude5` | `String` | Minimum safe altitude for the fifth MSA sector in hundreds of feet MSL; null if fewer than 5 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius5` | `String` | Radius of the fifth MSA sector from the MSA center point; null if fewer than 5 sectors are defined | nautical miles |  |
| `sectorBearing6` | `String` | Encoded bearing limits for the sixth MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 6 sectors are defined | degrees |  |
| `sectorAltitude6` | `String` | Minimum safe altitude for the sixth MSA sector in hundreds of feet MSL; null if fewer than 6 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius6` | `String` | Radius of the sixth MSA sector from the MSA center point; null if fewer than 6 sectors are defined | nautical miles |  |
| `sectorBearing7` | `String` | Encoded bearing limits for the seventh MSA sector as a 6-digit string combining from-bearing and to-bearing; null if fewer than 7 sectors are defined | degrees |  |
| `sectorAltitude7` | `String` | Minimum safe altitude for the seventh MSA sector in hundreds of feet MSL; null if fewer than 7 sectors are defined | hundreds of feet MSL |  |
| `sectorRadius7` | `String` | Radius of the seventh MSA sector from the MSA center point; null if fewer than 7 sectors are defined | nautical miles |  |
| `magneticTrueBearing` | `MagneticTrueIndicator` | Indicates whether the sector bearings are referenced to magnetic north or true north |  | `M`=Magnetic north; `T`=True north |
| `fileRecordNo` | `String` | Sequential file record number assigned to this record within the ARINC 424 data file; used for internal tracking and reference |  |  |
| `cycleDate` | `CifpHeliportMsaCycleDate` | AIRAC cycle date indicating when this record was last updated, in YYMM format (e.g., '2502' = 2025 cycle 02) |  | `1505`=AIRAC cycle 2015-05; `1807`=AIRAC cycle 2018-07; `2502`=AIRAC cycle 2025-02 |

## Column provenance

Every field maps 1:1 to a column in the `CIFP_HELIPORT_MSA` table of `nasr.db`. Original FAA column names:

| GraphQL field | SQLite column |
|---|---|
| `recordType` | `RECORD_TYPE` |
| `customerAreaCode` | `CUSTOMER_AREA_CODE` |
| `sectionCode` | `SECTION_CODE` |
| `heliportIdentifier` | `HELIPORT_IDENTIFIER` |
| `icaoCode` | `ICAO_CODE` |
| `msaCenter` | `MSA_CENTER` |
| `icaoCode2` | `ICAO_CODE_2` |
| `sectionCode2` | `SECTION_CODE_2` |
| `multipleCode` | `MULTIPLE_CODE` |
| `continuationRecordNo` | `CONTINUATION_RECORD_NO` |
| `sectorBearing` | `SECTOR_BEARING` |
| `sectorAltitude` | `SECTOR_ALTITUDE` |
| `sectorRadius` | `SECTOR_RADIUS` |
| `sectorBearing2` | `SECTOR_BEARING_2` |
| `sectorAltitude2` | `SECTOR_ALTITUDE_2` |
| `sectorRadius2` | `SECTOR_RADIUS_2` |
| `sectorBearing3` | `SECTOR_BEARING_3` |
| `sectorAltitude3` | `SECTOR_ALTITUDE_3` |
| `sectorRadius3` | `SECTOR_RADIUS_3` |
| `sectorBearing4` | `SECTOR_BEARING_4` |
| `sectorAltitude4` | `SECTOR_ALTITUDE_4` |
| `sectorRadius4` | `SECTOR_RADIUS_4` |
| `sectorBearing5` | `SECTOR_BEARING_5` |
| `sectorAltitude5` | `SECTOR_ALTITUDE_5` |
| `sectorRadius5` | `SECTOR_RADIUS_5` |
| `sectorBearing6` | `SECTOR_BEARING_6` |
| `sectorAltitude6` | `SECTOR_ALTITUDE_6` |
| `sectorRadius6` | `SECTOR_RADIUS_6` |
| `sectorBearing7` | `SECTOR_BEARING_7` |
| `sectorAltitude7` | `SECTOR_ALTITUDE_7` |
| `sectorRadius7` | `SECTOR_RADIUS_7` |
| `magneticTrueBearing` | `MAGNETIC_TRUE_BEARING` |
| `fileRecordNo` | `FILE_RECORD_NO` |
| `cycleDate` | `CYCLE_DATE` |
