PNRGOV is the IATA/WCO/ICAO standard airlines use to push passenger name record (PNR) data to government authorities for border security. It is an EDIFACT message in the IATA PADIS directory.
The message identifies the flight, then repeats one group per PNR with the record locator, travellers, itinerary, ticketing, payment and seat information.
PADIS 11.1TSPNRGOV in EdiFabric.Templates.PadisThe full IATA PADIS PNRGOV layout from its OpenEDI definition, the same model ediFabric uses to parse, validate and generate it: 12 loops and 57 segment positions, in file order. Loops are shaded and their segments indented; Max use is how many times a segment or loop may repeat.
| Segment / loop | Name | Usage | Max use |
|---|---|---|---|
UNH | Message header | Mandatory | 1 |
MSG | MESSAGEFUNCTIONBUSINESSDETAILS, Response Type | Mandatory | 1 |
ORG | Originator of request details | Mandatory | 1 |
TVL | Travel product information | Mandatory | 1 |
EQN | Number of units | Mandatory | 1 |
| SRC loop | Segment repetition control | Optional | 999 |
SRC | Segment repetition control | Mandatory | 1 |
RCI | Reservation control information | Mandatory | 1 |
SSR | Special requirements details | Optional | 999 |
DAT | Date and time information | Optional | 1 |
IFT | Interactive free text | Optional | 999 |
ORG | Originator of request details | Mandatory | 1 |
ADD | Address | Optional | 99 |
EBD | Excess baggage details | Optional | 9 |
| TIF loop | Traveller information | Optional | 999 |
TIF | Traveller information | Mandatory | 1 |
FTI | Frequent traveller information | Optional | 1 |
IFT | Interactive free text | Optional | 99 |
REF | REFERENCINGDETAILS | Optional | 1 |
EBD | Excess baggage details | Optional | 1 |
FAR | Fare information | Optional | 9 |
SSR | Special requirements details | Optional | 999 |
ADD | Address | Optional | 99 |
| TKT loop | Ticket number details | Optional | 999 |
TKT | Ticket number details | Mandatory | 1 |
MON | Monetary information | Optional | 1 |
PTK | Pricing/ticketing details | Optional | 1 |
TXD | Tax details | Optional | 99 |
DAT | Date and time information | Optional | 1 |
| FOP loop | Form of payment | Optional | 1 |
FOP | Form of payment | Mandatory | 1 |
IFT | Interactive free text | Optional | 1 |
ADD | Address | Optional | 1 |
| TVL loop | Travel product information | Optional | 999 |
TVL | Travel product information | Mandatory | 1 |
TRA | COMPANYIDENTIFICATION, PRODUCTIDENTIFICATIONDETAILS | Optional | 1 |
RPI | Quantity, Status | Optional | 1 |
APD | ADDITIONALPRODUCTDETAILS, STATIONINFORMATION1, STATIONINFORMATION2 | Optional | 1 |
SSR | Special requirements details | Optional | 99 |
RCI | Reservation control information | Optional | 1 |
IFT | Interactive free text | Optional | 99 |
| DAT loop | Date and time information | Optional | 999 |
DAT | Date and time information | Mandatory | 1 |
ORG | Originator of request details | Optional | 1 |
| TRI loop | Traveller reference information | Optional | 999 |
TRI | Traveller reference information | Mandatory | 1 |
TIF | Traveller information | Optional | 1 |
SSD | Seat selection details | Optional | 1 |
TBD | Traveller baggage details | Optional | 1 |
| EQN loop | Number of units | Optional | 99 |
EQN | Number of units | Mandatory | 1 |
RCI | Reservation control information | Mandatory | 1 |
| MSG loop | MESSAGEFUNCTIONBUSINESSDETAILS, Response Type | Optional | 9 |
MSG | MESSAGEFUNCTIONBUSINESSDETAILS, Response Type | Mandatory | 1 |
TVL | Travel product information | Optional | 99 |
| ABI loop | SOURCETYPE, ORIGINATORDETAILS, LOCATION | Optional | 999 |
ABI | SOURCETYPE, ORIGINATORDETAILS, LOCATION | Mandatory | 1 |
DAT | Date and time information | Optional | 1 |
| SAC loop | Status Indicator, Place Location Identification, Status | Optional | 99 |
SAC | Status Indicator, Place Location Identification, Status | Mandatory | 1 |
TIF | Traveller information | Optional | 1 |
SSR | Special requirements details | Optional | 1 |
IFT | Interactive free text | Optional | 1 |
TBD | Traveller baggage details | Optional | 1 |
| TVL loop | Travel product information | Optional | 2 |
TVL | Travel product information | Mandatory | 1 |
RPI | Quantity, Status | Optional | 1 |
LTS | Long text string | Optional | 9 |
UNT | Message trailer | Mandatory | 1 |
Mandatory segments must be sent, Optional ones only when the data applies. Trading partners often add their own rules in companion guides - ediFabric templates can be adjusted to match. Open the element-level definition in the EdiNation spec library.
A PNRGOV message with passenger name records for one flight. Paste it into EdiNation to see every element named and validated.
UNA:+.?*' UNB+IATA:1+AM+MXPNRGOV+130522:1540+13052210400995+PNRGOV' UNG+PNRGOV+AM+MXPNRGOV+130522:1540+13052210400995+IA+11:1' UNH+13052210400995+PNRGOV:11:1:IA+AM498/230513/1142' MSG+:22' ORG+AM' TVL+230513:1039:230513:1142+MTY+LAS+AM+498' EQN+1' SRC' RCI+AM:XXXYET::300413:115500' SSR+OTHS:::::::: ADV TKT NUMBER BY 03MAY13 1800CO OR WILL CANCEL' SSR+OTHS:::::::: IF THE FARE RULE TL DIFFERS FROM THE AUTOMATIC' SSR+OTHS:::::::: TL THE MOST RESTRICTIVE TL WILL APPLY' DAT+700:180513:1502' ORG+AM:BOG' TIF+TESTSURNAMEONE+TESTNAMEONE MRS:A:1.1:1' SSR+INFT:NN:1:AM:::::TESTSURNAMETWO/TESTNAMETWO/10AUG11+::1.1' SSR+INFT:NN:1:AM:::::TESTSURNAMETWO/TESTNAMETWO/10AUG11+::1.1' SSR+TKNE:HK:1:AM:::MEX:CUN:1392178947000C2+::1.1' SSR+TKNE:HK:1:AM:::CUN:BOG:1392178947000C3+::1.1' SSR+TKNE:HK:1:AM:::MEX:CUN:INF1392178947000C2+::1.1' SSR+TKNE:HK:1:AM:::CUN:BOG:INF1392178947000C3+::1.1' SSR+DOCS:HK:1:AM:::::/P/CO/52263000/CO/30MAY76/F/31OCT15/TESTSURNAMEONE/TESTNAMEONE MRS+::1.1' SSR+DOCS:HK:1:AM:::::/P/COL/AO234000/COL/10AUG11/FI/21DEC22/TESTSURNAMETWO/TESTNAMETWO+::1.1' TIF+TESTSURNAMETWO+TESTNAMETWO:IN:2.1' IFT+4:28+AM INF' TVL+150513:0105:150513:0557+BOG+MEX+AM+709:R' RPI+1+YG' APD+737' RCI+AM:XXXYET::300413:115500' TVL+190513:1500:190513:1710+MEX+CUN+AM+445:S' RPI+1+HK' APD+738' SSR+INFT:NN:1:AM:::::TESTSURNAMETWO/TESTNAMETWO/10AUG11' SSR+TKNE:HK:1:AM:::MEX:CUN:1392178947000C2' SSR+TKNE:HK:1:AM:::MEX:CUN:INF1392178947000C2' RCI+AM:XXXYET::300413:115500' TVL+230513:0135:230513:0500+CUN+BOG+AM+718:Q' RPI+1+HK' APD+737' SSR+INFT:NN:1:AM:::::TESTSURNAMETWO/TESTNAMETWO/10AUG11' SSR+TKNE:HK:1:AM:::CUN:BOG:1392178947000C3' SSR+TKNE:HK:1:AM:::CUN:BOG:INF1392178947000C3' RCI+AM:XXXYET::300413:115500' UNT+42+13052210400995' UNE+1+13052210400995' UNZ+1+13052210400995'
ediFabric turns every loop, segment and element into a named field. This is the transaction from the sample, in the JSON that ediFabric Native and Cloud return and accept.
{
"UNH": {
"MessageReferenceNumber_01": "13052210400995",
"MessageIdentifier_02": {
"MessageType_01": "PNRGOV",
"MessageVersionNumber_02": "11",
"MessageReleaseNumber_03": "1",
"ControllingAgencyCoded_04": "IA"
},
"CommonAccessReference_03": "AM498/230513/1142"
},
"MSG": {
"MESSAGEFUNCTIONBUSINESSDETAILS_01": {
"MessageFunction_02": "22"
}
},
"ORG": {
"SYSTEMDETAILS_01": {
"CompanyIdentification_01": "AM"
}
},
"TVL": {
"PRODUCTDATETIME_01": {
"FirstDate_01": "230513",
"FirstTime_02": "1039",
"SecondDate_03": "230513",
"SecondTime_04": "1142"
},
"LOCATION_02": {
"PlaceLocationIdentification_01": "MTY"
},
"LOCATION2_03": {
"PlaceLocationIdentification_01": "LAS"
},
"COMPANYIDENTIFICATION_04": {
"CompanyIdentification_01": "AM"
},
"PRODUCTIDENTIFICATIONDETAILS_05": {
"ProductionIdentification_01": "498"
}
},
"EQN": {
"NUMBEROFUNITDETAILS_01": {
"NumberOfUnits_01": "1"
}
},
"GR1_SRCLoop": [
{
"RCI": {
"RESERVATIONCONTROLINFORMATION_01": {
"CompanyIdentification_01": "AM",
"ReservationControlNumber_02": "XXXYET",
"FirstDate_04": "300413",
"Time_05": "115500"
}
},
"SSR": [
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "OTHS",
"PlaceLocationIdentification2_09": " ADV TKT NUMBER BY 03MAY13 1800CO OR WILL CANCEL"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "OTHS",
"PlaceLocationIdentification2_09": " IF THE FARE RULE TL DIFFERS FROM THE AUTOMATIC"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "OTHS",
"PlaceLocationIdentification2_09": " TL THE MOST RESTRICTIVE TL WILL APPLY"
}
}
],
"DAT": {
"DATEANDTIMEDETAILS_01": {
"DateTimePeriodQualifier_01": "700",
"FirstDate_02": "180513",
"FirstTime_03": "1502"
}
},
"ORG": {
"SYSTEMDETAILS_01": {
"CompanyIdentification_01": "AM",
"PlaceLocationIdentification_02": "BOG"
}
},
"GR2_TIFLoop": [
{
"TIF": {
"TRAVELLERSURNAMEINFORMATION_01": {
"TravellerSurname_01": "TESTSURNAMEONE"
},
"TRAVELLERDETAILS_02": {
"TravellerGivenName_01": "TESTNAMEONE MRS",
"NumberOfUnitsQualifier_02": "A",
"TravellerReferenceNumber_03": "1.1",
"TravellerAccompaniedByInfantIndicator_04": "1"
}
},
"SSR": [
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "INFT",
"Status_02": "NN",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "TESTSURNAMETWO/TESTNAMETWO/10AUG11"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "INFT",
"Status_02": "NN",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "TESTSURNAMETWO/TESTNAMETWO/10AUG11"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "MEX",
"PlaceLocationIdentification_08": "CUN",
"PlaceLocationIdentification2_09": "1392178947000C2"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "CUN",
"PlaceLocationIdentification_08": "BOG",
"PlaceLocationIdentification2_09": "1392178947000C3"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "MEX",
"PlaceLocationIdentification_08": "CUN",
"PlaceLocationIdentification2_09": "INF1392178947000C2"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "CUN",
"PlaceLocationIdentification_08": "BOG",
"PlaceLocationIdentification2_09": "INF1392178947000C3"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "DOCS",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "/P/CO/52263000/CO/30MAY76/F/31OCT15/TESTSURNAMEONE/TESTNAMEONE MRS"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "DOCS",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "/P/COL/AO234000/COL/10AUG11/FI/21DEC22/TESTSURNAMETWO/TESTNAMETWO"
},
"SPECIALREQUIREMENTDATADETAILS_02": {
"TravellerReferenceNumber_03": "1.1"
}
}
]
},
{
"TIF": {
"TRAVELLERSURNAMEINFORMATION_01": {
"TravellerSurname_01": "TESTSURNAMETWO"
},
"TRAVELLERDETAILS_02": {
"TravellerGivenName_01": "TESTNAMETWO",
"NumberOfUnitsQualifier_02": "IN",
"TravellerReferenceNumber_03": "2.1"
}
},
"IFT": [
{
"FREETEXTQUALIFICATION_01": {
"TextSubjectQualifier_01": "4",
"InformationType_02": "28"
},
"FreeText_02": "AM INF"
}
]
}
],
"GR5_TVLLoop": [
{
"TVL": {
"PRODUCTDATETIME_01": {
"FirstDate_01": "150513",
"FirstTime_02": "0105",
"SecondDate_03": "150513",
"SecondTime_04": "0557"
},
"LOCATION_02": {
"PlaceLocationIdentification_01": "BOG"
},
"LOCATION2_03": {
"PlaceLocationIdentification_01": "MEX"
},
"COMPANYIDENTIFICATION_04": {
"CompanyIdentification_01": "AM"
},
"PRODUCTIDENTIFICATIONDETAILS_05": {
"ProductionIdentification_01": "709",
"CharacteristicIdentification_02": "R"
}
},
"RPI": {
"Quantity_01": "1",
"Status_02": "YG"
},
"APD": {
"ADDITIONALPRODUCTDETAILS_01": {
"TypeOfMeansOfTransport_01": "737"
}
},
"RCI": {
"RESERVATIONCONTROLINFORMATION_01": {
"CompanyIdentification_01": "AM",
"ReservationControlNumber_02": "XXXYET",
"FirstDate_04": "300413",
"Time_05": "115500"
}
}
},
{
"TVL": {
"PRODUCTDATETIME_01": {
"FirstDate_01": "190513",
"FirstTime_02": "1500",
"SecondDate_03": "190513",
"SecondTime_04": "1710"
},
"LOCATION_02": {
"PlaceLocationIdentification_01": "MEX"
},
"LOCATION2_03": {
"PlaceLocationIdentification_01": "CUN"
},
"COMPANYIDENTIFICATION_04": {
"CompanyIdentification_01": "AM"
},
"PRODUCTIDENTIFICATIONDETAILS_05": {
"ProductionIdentification_01": "445",
"CharacteristicIdentification_02": "S"
}
},
"RPI": {
"Quantity_01": "1",
"Status_02": "HK"
},
"APD": {
"ADDITIONALPRODUCTDETAILS_01": {
"TypeOfMeansOfTransport_01": "738"
}
},
"SSR": [
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "INFT",
"Status_02": "NN",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "TESTSURNAMETWO/TESTNAMETWO/10AUG11"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "MEX",
"PlaceLocationIdentification_08": "CUN",
"PlaceLocationIdentification2_09": "1392178947000C2"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "MEX",
"PlaceLocationIdentification_08": "CUN",
"PlaceLocationIdentification2_09": "INF1392178947000C2"
}
}
],
"RCI": {
"RESERVATIONCONTROLINFORMATION_01": {
"CompanyIdentification_01": "AM",
"ReservationControlNumber_02": "XXXYET",
"FirstDate_04": "300413",
"Time_05": "115500"
}
}
},
{
"TVL": {
"PRODUCTDATETIME_01": {
"FirstDate_01": "230513",
"FirstTime_02": "0135",
"SecondDate_03": "230513",
"SecondTime_04": "0500"
},
"LOCATION_02": {
"PlaceLocationIdentification_01": "CUN"
},
"LOCATION2_03": {
"PlaceLocationIdentification_01": "BOG"
},
"COMPANYIDENTIFICATION_04": {
"CompanyIdentification_01": "AM"
},
"PRODUCTIDENTIFICATIONDETAILS_05": {
"ProductionIdentification_01": "718",
"CharacteristicIdentification_02": "Q"
}
},
"RPI": {
"Quantity_01": "1",
"Status_02": "HK"
},
"APD": {
"ADDITIONALPRODUCTDETAILS_01": {
"TypeOfMeansOfTransport_01": "737"
}
},
"SSR": [
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "INFT",
"Status_02": "NN",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"PlaceLocationIdentification2_09": "TESTSURNAMETWO/TESTNAMETWO/10AUG11"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "CUN",
"PlaceLocationIdentification_08": "BOG",
"PlaceLocationIdentification2_09": "1392178947000C3"
}
},
{
"SPECIALREQUIREMENTTYPEDETAILS_01": {
"SpecialRequirementType_01": "TKNE",
"Status_02": "HK",
"Quantity_03": "1",
"CompanyIdentification_04": "AM",
"ItemDescription_07": "CUN",
"PlaceLocationIdentification_08": "BOG",
"PlaceLocationIdentification2_09": "INF1392178947000C3"
}
}
],
"RCI": {
"RESERVATIONCONTROLINFORMATION_01": {
"CompanyIdentification_01": "AM",
"ReservationControlNumber_02": "XXXYET",
"FirstDate_04": "300413",
"Time_05": "115500"
}
}
}
]
}
],
"UNT": {
"NumberofSegmentsinaMessage_01": "42",
"MessageReferenceNumber_02": "13052210400995"
}
}Read the file into typed objects with ediFabric .NET, or post it to the ediFabric Cloud REST API from any language and get JSON back.
using EdiFabric.Templates.Iata131; License.SetSerial("YOUR_SERIAL_KEY"); using (var stream = File.OpenRead(@"C:\edi\PassengerData.txt")) using (var reader = new EdifactReader(stream, (unb, ung, unh) => typeof(TSPNRGOV).GetTypeInfo())) { var items = await reader.ReadToEndAsync(); foreach (var transaction in items.OfType<TSPNRGOV>()) { if (transaction.IsValid(out MessageErrorContext errors)) Console.WriteLine($"{transaction.UNH.MessageReferenceNumber_01} is valid"); else Console.WriteLine(string.Join(Environment.NewLine, errors.Flatten())); } }
curl -X POST 'https://api.edination.com/v2/edifact/read' \ -H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \ -H 'Content-Type: application/octet-stream' \ --data-binary '@PassengerData.txt'
Populate a TSPNRGOV object in .NET, or post JSON in the shape shown above to ediFabric Cloud, and get a valid PNRGOV file back.
using EdiFabric.Templates.Iata131; License.SetSerial("YOUR_SERIAL_KEY"); var transaction = new TSPNRGOV(); // Message header transaction.UNH = new UNH(); transaction.UNH.MessageReferenceNumber_01 = "0001"; transaction.UNH.MessageIdentifier_02 = new S009(); transaction.UNH.MessageIdentifier_02.MessageType_01 = "PNRGOV"; transaction.UNH.MessageIdentifier_02.MessageVersionNumber_02 = "11"; transaction.UNH.MessageIdentifier_02.MessageReleaseNumber_03 = "1"; transaction.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "IA"; transaction.UNH.CommonAccessReference_03 = "AM498/230513/1142"; // Code to specify the message function transaction.MSG = new MSG(); transaction.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01 = new C302(); transaction.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01.MessageFunction_02 = "22"; // The originator of the request is AM transaction.ORG = new ORG(); transaction.ORG.SYSTEMDETAILS_01 = new C336(); transaction.ORG.SYSTEMDETAILS_01.CompanyIdentification_01 = "AM"; // ... set the remaining loops and segments the same way // SegmentBuilders is in the Common project of the example repository using (var stream = new MemoryStream()) { using (var writer = new EdifactWriter(stream)) { writer.Write(SegmentBuilders.BuildUnb("1")); writer.Write(SegmentBuilders.BuildUng("1", "PNRGOV")); writer.Write(transaction); } Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray())); }
# the JSON returned by /read, edited or produced by your application curl -X POST 'https://api.edination.com/v2/edifact/write' \ -H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \ -H 'Content-Type: application/json' \ --data-binary '@PassengerData.json' \ -o 'PassengerData.txt'
PAXLST carries advance passenger information (API): identity and document data from check-in. PNRGOV carries the reservation (PNR) data, such as itinerary, contact and payment details.
At times set by each government, typically several times before departure and again at departure.
The authority's implementation guide sets the PNRGOV version, such as 11.1 or 13.1.
In .NET, install EdiFabric and EdiFabric.Templates.Padis, read the file with EdifactReader into TSPNRGOV objects and write them back with EdifactWriter. From any other language, post the file to the ediFabric Cloud REST API, which returns the same structure as JSON and converts JSON back to IATA PADIS.