IATA PADIS PNRGOV Passenger Name Record Data Last updated: 2026-09-29
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.
At a glance
- Standard
- IATA PADIS
- Version
PADIS 11.1- Sent by
- Airline to government authority
- Responses
- Acknowledgment per country agreement
- ediFabric .NET template
TSPNRGOVinEdiFabric.Templates.Padis- OpenEDI definition
- View PNRGOV in the spec library
PNRGOV structure
The 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 |
Sample PNRGOV file
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'
The same PNRGOV as JSON
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"
}
}Parse and validate a PNRGOV file
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'
Generate a PNRGOV file
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'
Complete ediFabric .NET example
A complete C# program for the IATA PADIS PNRGOV, built on TSPNRGOV in EdiFabric.Templates.Padis. The same code is in the ediFabric .NET examples on GitHub.
using EdiFabric.Core.Model.Edi;
using EdiFabric.Framework.Readers;
using EdiFabric.Framework.Writers;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using EdiFabric.Core.Model.Edi.Edifact;
using EdiFabric.Examples.EDIFACT.Common;
using EdiFabric.Templates.Padis;
using System.Reflection;
namespace EdiFabric.Examples.EDIFACT.PNRGOV
{
class Program
{
static void Main(string[] args)
{
SerialKey.Set(Common.SerialKey.Get());
Read();
Write();
}
///
/// Read Passenger Data
///
static void Read()
{
var ediStream = File.OpenRead(Directory.GetCurrentDirectory() + @"\..\..\..\Files\Edifact\PassengerData.txt");
List ediItems;
using (var ediReader = new EdifactReader(ediStream, "EdiFabric.Templates.Padis"))
ediItems = ediReader.ReadToEnd().ToList();
var transactions = ediItems.OfType();
foreach (var transaction in transactions)
{
if (transaction.HasErrors)
{
// partially parsed
var errors = transaction.ErrorContext.Flatten();
}
}
}
///
/// Write Passenger Data
///
static void Write()
{
var transaction = BuildPassengerData("1");
using (var stream = new MemoryStream())
{
using (var writer = new EdifactWriter(stream))
{
writer.Write(SegmentBuilders.BuildUnb("13052210400995"));
writer.Write(SegmentBuilders.BuildUng("13052210400995", "PNRGOV"));
writer.Write(transaction);
}
var ediString = stream.LoadToString();
}
}
public static TypeInfo TemplateFactory(UNB unb, UNG ung, UNH unh)
{
if (unh.MessageIdentifier_02.MessageType_01 == "PNRGOV")
return typeof(TSPNRGOV).GetTypeInfo();
throw new System.Exception(string.Format("Transaction {0} for version {1} is not supported.",
unh.MessageIdentifier_02.MessageType_01, unh.MessageIdentifier_02.MessageVersionNumber_02 + unh.MessageIdentifier_02.MessageReleaseNumber_03));
}
///
/// Build passenger data.
/// Original from https://www.iata.org/iata/passenger-data-toolkit/assets/doc_library/04-pnr/PNRGOV%20EDIFACT%20Implementation%20Guide%2013_1.pdf
///
static TSPNRGOV BuildPassengerData(string controlNumber)
{
var result = new TSPNRGOV();
// Message header
result.UNH = new UNH();
result.UNH.MessageReferenceNumber_01 = controlNumber.PadLeft(14, '0');
result.UNH.MessageIdentifier_02 = new S009();
result.UNH.MessageIdentifier_02.MessageType_01 = "PNRGOV";
result.UNH.MessageIdentifier_02.MessageVersionNumber_02 = "11";
result.UNH.MessageIdentifier_02.MessageReleaseNumber_03 = "1";
result.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "IA";
result.UNH.CommonAccessReference_03 = "AM498/230513/1142";
// Code to specify the message function
result.MSG = new MSG();
result.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01 = new C302();
result.MSG.MESSAGEFUNCTIONBUSINESSDETAILS_01.MessageFunction_02 = "22";
// The originator of the request is AM
result.ORG = new ORG();
result.ORG.SYSTEMDETAILS_01 = new C336();
result.ORG.SYSTEMDETAILS_01.CompanyIdentification_01 = "AM";
// PNR data for AM498/23MAY13 MTY LAS
result.TVL = new TVL();
result.TVL.PRODUCTDATETIME_01 = new C310();
result.TVL.PRODUCTDATETIME_01.FirstDate_01 = "230513";
result.TVL.PRODUCTDATETIME_01.FirstTime_02 = "1039";
result.TVL.PRODUCTDATETIME_01.SecondDate_03 = "230513";
result.TVL.PRODUCTDATETIME_01.SecondTime_04 = "1142";
result.TVL.LOCATION_02 = new C328();
result.TVL.LOCATION_02.PlaceLocationIdentification_01 = "MTY";
result.TVL.LOCATION2_03 = new C328();
result.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "LAS";
result.TVL.COMPANYIDENTIFICATION_04 = new C306();
result.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
result.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
result.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01 = "498";
// Total numbers of PNRs
result.EQN = new EQN();
result.EQN.NUMBEROFUNITDETAILS_01 = new List();
var c523 = new C523();
c523.NumberOfUnits_01 = "1";
result.EQN.NUMBEROFUNITDETAILS_01.Add(c523);
// Repeating SRC Groups
result.GR1_SRCLoop = new List();
// Begin SRC Group
var srcLoop = new GR1_SRCLoop();
// Situational blank SRC
srcLoop.SRC = new SRC();
// Passenger record reference
srcLoop.RCI = new RCI();
srcLoop.RCI.RESERVATIONCONTROLINFORMATION_01 = new List();
var c330 = new C330();
c330.CompanyIdentification_01 = "AM";
c330.ReservationControlNumber_02 = "XXXYET";
c330.FirstDate_04 = "300413";
c330.Time_05 = "115500";
srcLoop.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c330);
// Repeating SSR
srcLoop.SSR = new List();
// Special requirements /general information-applies to all flights and all passengers
var ssrSrc1 = new SSR();
ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "OTHS";
ssrSrc1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " ADV TKT NUMBER BY 03MAY13 1800CO OR WILL CANCEL";
srcLoop.SSR.Add(ssrSrc1);
// Special requirements 2
var ssrSrc2 = new SSR();
ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "OTHS";
ssrSrc2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " IF THE FARE RULE TL DIFFERS FROM THE AUTOMATIC";
srcLoop.SSR.Add(ssrSrc2);
// // Special requirements 3
var ssrSrc3 = new SSR();
ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "OTHS";
ssrSrc3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = " TL THE MOST RESTRICTIVE TL WILL APPLY";
srcLoop.SSR.Add(ssrSrc3);
// Ticket issue / last PNR transaction date/Time
srcLoop.DAT = new DAT();
srcLoop.DAT.DATEANDTIMEDETAILS_01 = new List();
var c688 = new C688();
c688.DateTimePeriodQualifier_01 = "700";
c688.FirstDate_02 = "180513";
c688.FirstTime_03 = "1502";
srcLoop.DAT.DATEANDTIMEDETAILS_01.Add(c688);
// Booked by AM, BOG agent
srcLoop.ORG = new ORG();
srcLoop.ORG.SYSTEMDETAILS_01 = new C336();
srcLoop.ORG.SYSTEMDETAILS_01.CompanyIdentification_01 = "AM";
srcLoop.ORG.SYSTEMDETAILS_01.PlaceLocationIdentification_02 = "BOG";
// Repeating TIF Groups
srcLoop.GR2_TIFLoop = new List();
// Begin TIF Group 1
var tifLoop1 = new GR2_TIFLoop();
// Adult passenger’s name & surname
tifLoop1.TIF = new TIF();
tifLoop1.TIF.TRAVELLERSURNAMEINFORMATION_01 = new C322();
tifLoop1.TIF.TRAVELLERSURNAMEINFORMATION_01.TravellerSurname_01 = "TESTSURNAMEONE";
tifLoop1.TIF.TRAVELLERDETAILS_02 = new List();
var c324 = new C324();
c324.TravellerGivenName_01 = "TESTNAMEONE MRS";
c324.NumberOfUnitsQualifier_02 = "A";
c324.TravellerReferenceNumber_03 = "1.1";
c324.TravellerAccompaniedByInfantIndicator_04 = "1";
tifLoop1.TIF.TRAVELLERDETAILS_02.Add(c324);
// Repeating SSR
tifLoop1.SSR = new List();
// Infant information: surname/name/DOB
var ssrTif1 = new SSR();
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "NN";
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
ssrTif1.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3321 = new C332();
c3321.TravellerReferenceNumber_03 = "1.1";
ssrTif1.SPECIALREQUIREMENTDATADETAILS_02.Add(c3321);
tifLoop1.SSR.Add(ssrTif1);
// Infant information: surname/name/DOB
var ssrTif2 = new SSR();
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "NN";
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
ssrTif2.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3322 = new C332();
c3322.TravellerReferenceNumber_03 = "1.1";
ssrTif2.SPECIALREQUIREMENTDATADETAILS_02.Add(c3322);
tifLoop1.SSR.Add(ssrTif2);
// Ticketing details for adult MEX CUN
var ssrTif3 = new SSR();
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "MEX";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "CUN";
ssrTif3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C2";
ssrTif3.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3323 = new C332();
c3323.TravellerReferenceNumber_03 = "1.1";
ssrTif3.SPECIALREQUIREMENTDATADETAILS_02.Add(c3323);
tifLoop1.SSR.Add(ssrTif3);
// Ticketing details for adult CUN BOG
var ssrTif4 = new SSR();
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "CUN";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "BOG";
ssrTif4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C3";
ssrTif4.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3324 = new C332();
c3324.TravellerReferenceNumber_03 = "1.1";
ssrTif4.SPECIALREQUIREMENTDATADETAILS_02.Add(c3324);
tifLoop1.SSR.Add(ssrTif4);
// Ticketing details for infant MEX CUN
var ssrTif5 = new SSR();
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "MEX";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "CUN";
ssrTif5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C2";
ssrTif5.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3325 = new C332();
c3325.TravellerReferenceNumber_03 = "1.1";
ssrTif5.SPECIALREQUIREMENTDATADETAILS_02.Add(c3325);
tifLoop1.SSR.Add(ssrTif5);
// Ticketing details for infant CUN BOG
var ssrTif6 = new SSR();
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "CUN";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "BOG";
ssrTif6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C3";
ssrTif6.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3326 = new C332();
c3326.TravellerReferenceNumber_03 = "1.1";
ssrTif6.SPECIALREQUIREMENTDATADETAILS_02.Add(c3326);
tifLoop1.SSR.Add(ssrTif6);
// Passport information for adult
var ssrTif7 = new SSR();
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "DOCS";
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif7.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "/P/CO/52263000/CO/30MAY76/F/31OCT15/TESTSURNAMEONE/TESTNAMEONE MRS";
ssrTif7.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3327 = new C332();
c3327.TravellerReferenceNumber_03 = "1.1";
ssrTif7.SPECIALREQUIREMENTDATADETAILS_02.Add(c3327);
tifLoop1.SSR.Add(ssrTif7);
// Passport information for infant
var ssrTif8 = new SSR();
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "DOCS";
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTif8.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "/P/COL/AO234000/COL/10AUG11/FI/21DEC22/TESTSURNAMETWO/TESTNAMETWO";
ssrTif8.SPECIALREQUIREMENTDATADETAILS_02 = new List();
var c3328 = new C332();
c3328.TravellerReferenceNumber_03 = "1.1";
ssrTif8.SPECIALREQUIREMENTDATADETAILS_02.Add(c3328);
tifLoop1.SSR.Add(ssrTif8);
// End TIF Group 1
srcLoop.GR2_TIFLoop.Add(tifLoop1);
// Begin TIF Group 2
var tifLoop2 = new GR2_TIFLoop();
// Infant passenger’s name & surname
tifLoop2.TIF = new TIF();
tifLoop2.TIF.TRAVELLERSURNAMEINFORMATION_01 = new C322();
tifLoop2.TIF.TRAVELLERSURNAMEINFORMATION_01.TravellerSurname_01 = "TESTSURNAMETWO";
tifLoop2.TIF.TRAVELLERDETAILS_02 = new List();
var c3242 = new C324();
c3242.TravellerGivenName_01 = "TESTNAMETWO";
c3242.NumberOfUnitsQualifier_02 = "IN";
c3242.TravellerReferenceNumber_03 = "2.1";
tifLoop2.TIF.TRAVELLERDETAILS_02.Add(c3242);
// Repeating IFT
tifLoop2.IFT = new List();
// OSI free text information
var iftTif1 = new IFT();
iftTif1.FREETEXTQUALIFICATION_01 = new C346();
iftTif1.FREETEXTQUALIFICATION_01.TextSubjectQualifier_01 = "4";
iftTif1.FREETEXTQUALIFICATION_01.InformationType_02 = "28";
iftTif1.FreeText_02 = new List();
iftTif1.FreeText_02.Add("AM INF");
tifLoop2.IFT.Add(iftTif1);
// End TIF Group 2
srcLoop.GR2_TIFLoop.Add(tifLoop2);
// Repeating TVL SRC Groups
srcLoop.GR5_TVLLoop = new List();
// Begin TVL SRC Group 1
var tvlSrc1 = new GR5_TVLLoop();
// PNR data for AM709/15MAY13 BOG MEX
tvlSrc1.TVL = new TVL();
tvlSrc1.TVL.PRODUCTDATETIME_01 = new C310();
tvlSrc1.TVL.PRODUCTDATETIME_01.FirstDate_01 = "150513";
tvlSrc1.TVL.PRODUCTDATETIME_01.FirstTime_02 = "0105";
tvlSrc1.TVL.PRODUCTDATETIME_01.SecondDate_03 = "150513";
tvlSrc1.TVL.PRODUCTDATETIME_01.SecondTime_04 = "0557";
tvlSrc1.TVL.LOCATION_02 = new C328();
tvlSrc1.TVL.LOCATION_02.PlaceLocationIdentification_01 = "BOG";
tvlSrc1.TVL.LOCATION2_03 = new C328();
tvlSrc1.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "MEX";
tvlSrc1.TVL.COMPANYIDENTIFICATION_04 = new C306();
tvlSrc1.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01 = "709";
tvlSrc1.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "R";
// Flight booking status for 1 adult passenger
tvlSrc1.RPI = new RPI();
tvlSrc1.RPI.Quantity_01 = "1";
tvlSrc1.RPI.Status_02 = new List();
tvlSrc1.RPI.Status_02.Add("YG");
// Equipment Type- Boeing 737
tvlSrc1.APD = new APD();
tvlSrc1.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
tvlSrc1.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "737";
// AM passenger record reference
tvlSrc1.RCI = new RCI();
tvlSrc1.RCI.RESERVATIONCONTROLINFORMATION_01 = new List();
var c3302 = new C330();
c3302.CompanyIdentification_01 = "AM";
c3302.ReservationControlNumber_02 = "XXXYET";
c3302.FirstDate_04 = "300413";
c3302.Time_05 = "115500";
tvlSrc1.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3302);
// End TVL SRC Group 1
srcLoop.GR5_TVLLoop.Add(tvlSrc1);
// Begin TVL SRC Group 2
var tvlSrc2 = new GR5_TVLLoop();
// PNR data for AM445/19MAY13 MEX CUN
tvlSrc2.TVL = new TVL();
tvlSrc2.TVL.PRODUCTDATETIME_01 = new C310();
tvlSrc2.TVL.PRODUCTDATETIME_01.FirstDate_01 = "190513";
tvlSrc2.TVL.PRODUCTDATETIME_01.FirstTime_02 = "1500";
tvlSrc2.TVL.PRODUCTDATETIME_01.SecondDate_03 = "190513";
tvlSrc2.TVL.PRODUCTDATETIME_01.SecondTime_04 = "1710";
tvlSrc2.TVL.LOCATION_02 = new C328();
tvlSrc2.TVL.LOCATION_02.PlaceLocationIdentification_01 = "MEX";
tvlSrc2.TVL.LOCATION2_03 = new C328();
tvlSrc2.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "CUN";
tvlSrc2.TVL.COMPANYIDENTIFICATION_04 = new C306();
tvlSrc2.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01 = "445";
tvlSrc2.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "S";
// Flight booking status for 1 adult passenger
tvlSrc2.RPI = new RPI();
tvlSrc2.RPI.Quantity_01 = "1";
tvlSrc2.RPI.Status_02 = new List();
tvlSrc2.RPI.Status_02.Add("HK");
// Equipment Type
tvlSrc2.APD = new APD();
tvlSrc2.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
tvlSrc2.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "738";
// Repeating SSR
tvlSrc2.SSR = new List();
// Infant information: surname/name/DOB
var ssrTvl1 = new SSR();
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "NN";
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl1.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
tvlSrc2.SSR.Add(ssrTvl1);
// Ticketing details for adult MEX CUN
var ssrTvl2 = new SSR();
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "MEX";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "CUN";
ssrTvl2.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C2";
tvlSrc2.SSR.Add(ssrTvl2);
// Ticketing details for infant MEX CUN
var ssrTvl3 = new SSR();
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "MEX";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "CUN";
ssrTvl3.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C2";
tvlSrc2.SSR.Add(ssrTvl3);
// AM passenger record reference
tvlSrc2.RCI = new RCI();
tvlSrc2.RCI.RESERVATIONCONTROLINFORMATION_01 = new List();
var c3303 = new C330();
c3303.CompanyIdentification_01 = "AM";
c3303.ReservationControlNumber_02 = "XXXYET";
c3303.FirstDate_04 = "300413";
c3303.Time_05 = "115500";
tvlSrc2.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3303);
// End TVL SRC Group 2
srcLoop.GR5_TVLLoop.Add(tvlSrc2);
// Begin TVL SRC Group 3
var tvlSrc3 = new GR5_TVLLoop();
// PNR data for AM718/23MAY13 CUN BOG
tvlSrc3.TVL = new TVL();
tvlSrc3.TVL.PRODUCTDATETIME_01 = new C310();
tvlSrc3.TVL.PRODUCTDATETIME_01.FirstDate_01 = "230513";
tvlSrc3.TVL.PRODUCTDATETIME_01.FirstTime_02 = "0135";
tvlSrc3.TVL.PRODUCTDATETIME_01.SecondDate_03 = "230513";
tvlSrc3.TVL.PRODUCTDATETIME_01.SecondTime_04 = "0500";
tvlSrc3.TVL.LOCATION_02 = new C328();
tvlSrc3.TVL.LOCATION_02.PlaceLocationIdentification_01 = "CUN";
tvlSrc3.TVL.LOCATION2_03 = new C328();
tvlSrc3.TVL.LOCATION2_03.PlaceLocationIdentification_01 = "BOG";
tvlSrc3.TVL.COMPANYIDENTIFICATION_04 = new C306();
tvlSrc3.TVL.COMPANYIDENTIFICATION_04.CompanyIdentification_01 = "AM";
tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05 = new C308();
tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05.ProductionIdentification_01 = "718";
tvlSrc3.TVL.PRODUCTIDENTIFICATIONDETAILS_05.CharacteristicIdentification_02 = "Q";
// Flight booking status for 1 passenger
tvlSrc3.RPI = new RPI();
tvlSrc3.RPI.Quantity_01 = "1";
tvlSrc3.RPI.Status_02 = new List();
tvlSrc3.RPI.Status_02.Add("HK");
// Equipment Type
tvlSrc3.APD = new APD();
tvlSrc3.APD.ADDITIONALPRODUCTDETAILS_01 = new C314();
tvlSrc3.APD.ADDITIONALPRODUCTDETAILS_01.TypeOfMeansOfTransport_01 = "737";
// Repeating SSR
tvlSrc3.SSR = new List();
// Infant information: surname/name/DOB
var ssrTvl4 = new SSR();
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "INFT";
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "NN";
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl4.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "TESTSURNAMETWO/TESTNAMETWO/10AUG11";
tvlSrc3.SSR.Add(ssrTvl4);
// Ticketing details for adult CUN BOG
var ssrTvl5 = new SSR();
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "CUN";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "BOG";
ssrTvl5.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "1392178947000C3";
tvlSrc3.SSR.Add(ssrTvl5);
// Ticketing details for infant CUN BOG
var ssrTvl6 = new SSR();
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01 = new C334();
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.SpecialRequirementType_01 = "TKNE";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.Status_02 = "HK";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.Quantity_03 = "1";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.CompanyIdentification_04 = "AM";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.ItemDescription_07 = "CUN";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification_08 = "BOG";
ssrTvl6.SPECIALREQUIREMENTTYPEDETAILS_01.PlaceLocationIdentification2_09 = "INF1392178947000C3";
tvlSrc3.SSR.Add(ssrTvl6);
// AM passenger record reference
tvlSrc3.RCI = new RCI();
tvlSrc3.RCI.RESERVATIONCONTROLINFORMATION_01 = new List();
var c3304 = new C330();
c3304.CompanyIdentification_01 = "AM";
c3304.ReservationControlNumber_02 = "XXXYET";
c3304.FirstDate_04 = "300413";
c3304.Time_05 = "115500";
tvlSrc3.RCI.RESERVATIONCONTROLINFORMATION_01.Add(c3304);
// End TVL SRC Group 3
srcLoop.GR5_TVLLoop.Add(tvlSrc3);
// End SRC Group
result.GR1_SRCLoop.Add(srcLoop);
return result;
}
}
}More operations in ediFabric .NET
PNRGOV questions
What is the difference between PNRGOV and PAXLST?
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.
When is PNRGOV sent?
At times set by each government, typically several times before departure and again at departure.
Which version is used?
The authority's implementation guide sets the PNRGOV version, such as 11.1 or 13.1.
How do I parse and generate IATA PADIS PNRGOV files in .NET?
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.
Resources
Parse your first IATA PADIS PNRGOV in five minutes
The Community plan is free forever and needs no credit card. It includes ediFabric .NET, Native and Cloud with one serial key.
Sign up free Validate EDI files free