APIv4 - No longer Supported (Discontinued)
The purpose of this article is to provide information regarding the use of APIv4.
The API reference documentation is available here: amelia APIv4.chm. Note that you may see a security warning when you download and run this file. This is normal. The file has been produced by InteliSys so you may proceed.
Table of Contents |
---|
Session Service
Logon
Logon Request
The following is an example of a logon request:
<soapenv:Body> <tem:Logon> <tem:request> <int:AmeliaPassword>password</int:AmeliaPassword> <int:AmeliaUsername>username</int:AmeliaUsername> </tem:request> </tem:Logon> </soapenv:Body>
Logon Response
The following is an example of the response from a logon response:
<s:Body> <LogonResponse xmlns="http://tempuri.org/"> <LogonResult xmlns:a="http://schemas.datacontract.org/2004/07/InteliSys.amelia.API" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:AuditKey>baf728f4-1369-45ca-b958-86788a1b89de</a:AuditKey> <a:SessionToken>d4f8b6282c65473983db89ef321f382c</a:SessionToken> <a:OperationMessage/> <a:OperationResultCode>0</a:OperationResultCode> <a:OperationSucceeded>true</a:OperationSucceeded> <a:OperationUID>baf728f4-1369-45ca-b958-86788a1b89de</a:OperationUID> <a:ApiAccessPermissions> <a:ApiProcessPermission> <a:Allow>true</a:Allow> <a:ApiSecurityProcess>Boarding</a:ApiSecurityProcess> </a:ApiProcessPermission> <a:ApiProcessPermission> <a:Allow>true</a:Allow> <a:ApiSecurityProcess>EditRes</a:ApiSecurityProcess> </a:ApiProcessPermission> </a:ApiAccessPermissions> <a:UserPreferences> <a:ClosestAirport xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:Code>SGN</b:Code> <b:Id>2</b:Id> <b:Name>Ho Chi Minh</b:Name> </a:ClosestAirport> <a:Country xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:Code>VNM</b:Code> <b:Id>234</b:Id> <b:Name>Vietnam</b:Name> </a:Country> <a:Province xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:Code>SGN</b:Code> <b:Id>10241</b:Id> <b:Name>Ho Chi Minh City</b:Name> </a:Province> <a:ZuluToLocalSummerAdjustment>7</a:ZuluToLocalSummerAdjustment> <a:ZuluToLocalWinterAdjustment>7</a:ZuluToLocalWinterAdjustment> </a:UserPreferences> </LogonResult> </LogonResponse> </s:Body>
Things to consider
In order to run any of the APIv4 requests, you will need to 'Logon' and get a valid session token.
The following example will demonstrate this using SoapUI:
| |
3. Click the APIv4 testing project in the right hand panel | |
4. In the lower window, select the 'Custom Properties' tab | |
5. Place the value for SessionToken in the project variable 'SessionToken' |
You will now be able to run all requests.
The session token must be passed in all APIv4 requests within the <
int:SessionToken
>
tag.
Logoff
Logoff Request
The following is an example of a 'Logoff' request:
<soapenv:Body> <tem:Logoff> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> </tem:request> </tem:Logoff> </soapenv:Body>
Things to consider
Running the above request will kill whichever session belongs to the session token you currently have in the 'SessionToken' project variable.
Logoff Response
The following in a sample response that would be returned from running the 'Logoff' operation:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <LogoffResponse xmlns="http://tempuri.org/"/> </s:Body> </s:Envelope>
Boarding Service
GetFlightWatchDetails
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:int="http://schemas.datacontract.org/2004/07/InteliSys.amelia.API"> <soapenv:Body> <tem:GetFlightWatchDetails> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:ArrivalAirportCode>YUL</int:ArrivalAirportCode> <int:DepartureAirportCode>YYZ</int:DepartureAirportCode> <int:ETD_EndRange>2015-10-27</int:ETD_EndRange> <int:ETD_StartRange>2015-10-25</int:ETD_StartRange> <int:FlightNumber>JF888</int:FlightNumber> <int:UseLocalTimes>true</int:UseLocalTimes> </tem:request> </tem:GetFlightWatchDetails> </soapenv:Body> </soapenv:Envelope>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetFlightWatchDetailsResponse xmlns="http://tempuri.org/"> <GetFlightWatchDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/InteliSys.amelia.API" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:AuditKey>add82b9b-fde7-4af3-a7c8-afc1372ba9d8</a:AuditKey> <a:SessionToken i:nil="true"/> <a:OperationMessage>OK</a:OperationMessage> <a:OperationResultCode>0</a:OperationResultCode> <a:OperationSucceeded>true</a:OperationSucceeded> <a:OperationUID>add82b9b-fde7-4af3-a7c8-afc1372ba9d8</a:OperationUID> <a:Details xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:Items> <b:FlightWatchItem> <b:ACModel>Q30</b:ACModel> <b:ArrivalAirport> <b:Code>YUL</b:Code> <b:Id>10</b:Id> <b:Name>Montréal–Pierre Elliott Trudeau International Airport</b:Name> </b:ArrivalAirport> <b:ArrivalDelay>0</b:ArrivalDelay> <b:Capacity>30</b:Capacity> <b:DepartureAirport> <b:Code>YYZ</b:Code> <b:Id>5</b:Id> <b:Name>Toronto Pearson International Airport</b:Name> </b:DepartureAirport> <b:DepartureDelay>0</b:DepartureDelay> <b:ETA_Local>2015-10-26T19:30:00</b:ETA_Local> <b:ETA_Zulu>2015-10-26T23:30:00</b:ETA_Zulu> <b:ETD_Local>2015-10-26T17:00:00</b:ETD_Local> <b:ETD_Zulu>2015-10-26T21:00:00</b:ETD_Zulu> <b:FlightNumber>JF888</b:FlightNumber> <b:FlightStatus>Cancelled</b:FlightStatus> <b:FlightType>S</b:FlightType> <b:In_Local>2015-10-26T19:30:00</b:In_Local> <b:In_Zulu>2015-10-26T23:30:00</b:In_Zulu> <b:LegNumber>1</b:LegNumber> <b:Off_Local>2015-10-26T17:00:00</b:Off_Local> <b:Off_Zulu>2015-10-26T21:00:00</b:Off_Zulu> <b:On_Local>2015-10-26T19:30:00</b:On_Local> <b:On_Zulu>2015-10-26T23:30:00</b:On_Zulu> <b:Out_Local>2015-10-26T17:00:00</b:Out_Local> <b:Out_Zulu>2015-10-26T21:00:00</b:Out_Zulu> <b:ScheduledETA_Local>2015-10-26T19:30:00</b:ScheduledETA_Local> <b:ScheduledETA_Zulu>2015-10-26T23:30:00</b:ScheduledETA_Zulu> <b:ScheduledETD_Local>2015-10-26T17:00:00</b:ScheduledETD_Local> <b:ScheduledETD_Zulu>2015-10-26T21:00:00</b:ScheduledETD_Zulu> <b:SkedDetailID>1324578</b:SkedDetailID> <b:TailNumber/> </b:FlightWatchItem> </b:Items> </a:Details> </GetFlightWatchDetailsResult> </GetFlightWatchDetailsResponse> </s:Body> </s:Envelope>
EditRes Service
GetReservationCharges
GetReservationCharges Request
The following is an example GetReservationCharges
request:
<soapenv:Body> <tem:GetReservationCharges> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:IncludeHistorical>true</int:IncludeHistorical> <int:ReservationNumber>14825998</int:ReservationNumber> </tem:request> </tem:GetReservationCharges> </soapenv:Body>
Things to consider
IncludeHistorical
should be set to true if you wish to see historical charges- Request will fail if the reservation is canceled or if the passenger is T.B.A.
GetReservationCharges Response
The following is a breakdown of the GetReservationCharges
response:
<a:ReservationCharges xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:IsGroupBooking>false</b:IsGroupBooking> <b:LegCharges> <b:LegCharge> <b:ArrivalAirportCode>DLI</b:ArrivalAirportCode> <b:ArrivalAirportName>Da Lat</b:ArrivalAirportName> <b:DepartureAirportCode>HAN</b:DepartureAirportCode> <b:DepartureAirportName>Ha Noi</b:DepartureAirportName> <b:LegNumber>1</b:LegNumber> <b:PaxCharges> <b:PaxCharge> <b:ChargeDescription>Airport Tax Domestic</b:ChargeDescription> <b:ChargesDated>2015-05-29T18:04:00</b:ChargesDated> <b:ChargesTypeCode>1</b:ChargesTypeCode> <b:CurrencyCharge> <b:Amount>60000</b:Amount> <b:Currency> <b:Code>VND</b:Code> <b:Description>Vietnam Dong</b:Description> <b:ExchangeRate>1</b:ExchangeRate> <b:Format>#,##0 VND</b:Format> <b:Id>0</b:Id> </b:Currency> <b:Discount>0</b:Discount> <b:Taxes>0</b:Taxes> <b:Total>60000</b:Total> </b:CurrencyCharge> <b:FirstName>CASSIDY</b:FirstName> <b:LastName>COLLINGS</b:LastName> <b:LegNumber>1</b:LegNumber> <b:MiddleName/> <b:ResPaxId>14793924</b:ResPaxId> <b:TaxDetails> <b:CurrencyId>3</b:CurrencyId> <b:CurrencyName>Vietnam Dong</b:CurrencyName> <b:Id>2</b:Id> <b:Name>Tax Exempt</b:Name> <b:Taxes> <b:TaxElement> <b:Include>true</b:Include> <b:Name>Tax 1</b:Name> <b:Percentage>0</b:Percentage> </b:TaxElement> <b:TaxElement> <b:Include>false</b:Include> <b:Name>Tax 2</b:Name> <b:Percentage>0</b:Percentage> </b:TaxElement> <b:TaxElement> <b:Include>false</b:Include> <b:Name>Tax 3</b:Name> <b:Percentage>0</b:Percentage> </b:TaxElement> </b:Taxes> </b:TaxDetails> <b:ChargesNote/> <b:IsHistoricalData>false</b:IsHistoricalData> <b:IsRefundable>true</b:IsRefundable> </b:PaxCharge>
Things to consider
- The
LegCharge
node contains charges for that leg of the reservation - The passenger charges are all found in the
PaxCharges
node
GetChargeOptions
GetChargeOptions Request
The following is an example of a GetChargeOptions
request:
<soapenv:Body> <tem:GetChargeOptions> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:ReservationNumber>12345678</int:ReservationNumber> </tem:request> </tem:GetChargeOptions> </soapenv:Body>
GetChargeOptions Response
The following is a breakdown of the GetChargeOptions
response:
<a:AmountEditable>true</a:AmountEditable> <a:ChargeOptions xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:ResChargeDefn> <b:Amount>400000</b:Amount> <b:ChargeDescription>10kg Exceed Domestic</b:ChargeDescription> <b:ChargeType>BA</b:ChargeType> <b:Currency> <b:Code>VND</b:Code> <b:Description>Vietnam Dong</b:Description> <b:ExchangeRate>1</b:ExchangeRate> <b:Format>#,##0 VND</b:Format> <b:Id>3</b:Id> </b:Currency> <b:TaxConfig> <b:CurrencyId>3</b:CurrencyId> <b:CurrencyName>Vietnam Dong</b:CurrencyName> <b:Id>1</b:Id> <b:Name>VAT</b:Name> <b:Taxes> <b:TaxElement> <b:Include>true</b:Include> <b:Name>VAT</b:Name> <b:Percentage>0.1</b:Percentage> </b:TaxElement> <b:TaxElement> <b:Include>false</b:Include> <b:Name/> <b:Percentage>0</b:Percentage> </b:TaxElement> <b:TaxElement> <b:Include>false</b:Include> <b:Name/> <b:Percentage>0</b:Percentage> </b:TaxElement> </b:Taxes> </b:TaxConfig> </b:ResChargeDefn> ... </a:ChargeOptions> <a:DiscountAllowed>true</a:DiscountAllowed> <a:DiscountOptions xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:ResChargeDiscountDefn> <b:DiscountDescription>Discount 30%</b:DiscountDescription> <b:Percentage>0.3</b:Percentage> </b:ResChargeDiscountDefn> ... </a:DiscountOptions> <a:LegOptions xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:ResChargeLeg> <b:ArrivalAirportCode>XYZ</b:ArrivalAirportCode> <b:ArrivalAirportName>Airport 1</b:ArrivalAirportName> <b:DepartureAirportCode>QRS</b:DepartureAirportCode> <b:DepartureAirportName>Airport 2</b:DepartureAirportName> <b:LegNumber>1</b:LegNumber> </b:ResChargeLeg> </a:LegOptions> <a:PaxList xmlns:b="http://schemas.datacontract.org/2004/07/InteliSys.amelia"> <b:ResChargePax> <b:FirstName>CASSIDY</b:FirstName> <b:LastName>COLLINGS</b:LastName> <b:MiddleName/> <b:PaxGroupId>12345</b:PaxGroupId> </b:ResChargePax> </a:PaxList> <a:ReservationNumber>12345678</a:ReservationNumber>
Things to consider
- The
AmountEditable
node displays whether or not the user has permission to modify the amount defaulted for a charge - The
ChargeOptions
node contains all charges that can be applied to a reservation - The
DiscountOptions
node contains all discount options that can be applied. If the user does not have permission to add discounts, this node will be empty. - The
LegOptions
node contains all legs that charges can be applied to - The
PaxList
contains all passengers that charges can be applied to - The
DiscountAllowed
node displays whether or not the user has permission to add discounts
AddReservationCharge
General Info
- User must have a valid session token
- Fare charges cannot be applied through this API
AddReservationCharge Request
Add Charge to a Single Passenger
The following is an example of an AddReservationCharge
request adding a pre-existing amelia charge to a single passenger on a reservation:
<soapenv:Body> <tem:AddReservationCharge> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:Query> <int1:AllPax>false</int1:AllPax> <int1:Amount>400000</int1:Amount> <int1:ChargeDescription>10kg Exceed Domestic</int1:ChargeDescription> <int1:ChargeNotes>Some notes.</int1:ChargeNotes> <int1:ChargeTypeCode>BA</int1:ChargeTypeCode> <int1:DiscountPercentage>0.3</int1:DiscountPercentage> <int1:IsRefundable>true</int1:IsRefundable> <int1:LegNumber>1</int1:LegNumber> <int1:PaxGroupId>1245</int1:PaxGroupId> <int1:ReservationNumber>12345678</int1:ReservationNumber> <int1:TaxConfigId>1</int1:TaxConfigId> </int:Query> </tem:request> </tem:AddReservationCharge> </soapenv:Body>
Things to consider
PaxGroupId
is required when adding a charge to a specific passengerThe
Amount, ChargeDescription, ChargeTypeCode, DiscountPercentage, IsRefundable, LegNumber, PaxGroupId, ReservationNumber, TaxConfigId
are all retrieved for theGetChargeOptions
response- When adding a default amelia charge, the
ChargeTypeCode
is not required - The
Amount
can only be modified if the user has the proper permission to do so - The
IsRefundable
flag can only be overridden if the user has the proper permission to do so - A Discount can only be applied if the user has the proper permission to do so
- The
DiscountPercentage
must be one of the discount options returned byGetChargeOptions
Add Charge to All Passengers
The following is an example of an AddReservationCharge
request adding a pre-existing amelia charge to all passengers on a reservation:
<soapenv:Body> <tem:AddReservationCharge> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:Query> <int1:AllPax>true</int1:AllPax> <int1:Amount>500000</int1:Amount> <int1:ChargeDescription>10kg Exceed Domestic</int1:ChargeDescription> <int1:ChargeNotes>Some notes.</int1:ChargeNotes> <int1:ChargeTypeCode>BA</int1:ChargeTypeCode> <int1:DiscountPercentage>0.3</int1:DiscountPercentage> <int1:IsRefundable>true</int1:IsRefundable> <int1:LegNumber>1</int1:LegNumber> <int1:PaxGroupId>-1</int1:PaxGroupId> <int1:ReservationNumber>12345678</int1:ReservationNumber> <int1:TaxConfigId>1</int1:TaxConfigId> </int:Query> </tem:request> </tem:AddReservationCharge> </soapenv:Body>
Things to consider
- When adding a charge to all passengers, the
AllPax
flag must be set to true - When
AllPax
is set to true,PaxGroupId
is not required. It can be left out completely, or passed a -1 The
Amount, ChargeDescription, ChargeTypeCode, DiscountPercentage, IsRefundable, LegNumber, PaxGroupId, ReservationNumber, TaxConfigId
are all retrieved for theGetChargeOptions
response- When adding a default amelia charge, the
ChargeTypeCode
is not required - The
Amount
can only be modified if the user has the proper permission to do so - The
IsRefundable
flag can only be overridden if the user has the proper permission to do so - A Discount can only be applied if the user has the proper permission to do so
- The
DiscountPercentage
must be one of the discount options returned byGetChargeOptions
Add a "Custom" Charge
The following is an example of an AddReservationCharge
request adding a charge that is not a default amelia charge:
<soapenv:Body> <tem:AddReservationCharge> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:Query> <int1:AllPax>false</int1:AllPax> <int1:Amount>400000</int1:Amount> <int1:ChargeDescription>Extra Fee</int1:ChargeDescription> <int1:ChargeNotes/> <int1:ChargeTypeCode>AM</int1:ChargeTypeCode> <int1:DiscountPercentage>0</int1:DiscountPercentage> <int1:IsRefundable>true</int1:IsRefundable> <int1:LegNumber>1</int1:LegNumber> <int1:PaxGroupId>1245</int1:PaxGroupId> <int1:ReservationNumber>12345678</int1:ReservationNumber> <int1:TaxConfigId>1</int1:TaxConfigId> </int:Query> </tem:request> </tem:AddReservationCharge> </soapenv:Body>
Things to consider
- When adding a "custom" charge, the charge description must not match any of the pre-existing amelia charges
ChargeTypeCode
is required- The
Amount
can only be modified if the user has the proper permission to do so - A Discount can only be applied if the user has the proper permission to do so
- The
DiscountPercentage
must be one of the discount options returned byGetChargeOptions
It is also possible to add a negative charge in this manner. The charge would be added the same as described above, with a negative value passed as the Amount
(i.e. -400000).
AddReservationCharge Response
The AddReservationCharges
response is simply an updated list of reservation charges.
ChangeReservationPassenger
ChangeReservationPassenger Request
The following is an example of a ChangeReservationPassenger
request:
<tem:ChangeReservationPassenger> <tem:request> <int:SessionToken>${#Project#SessionToken}</int:SessionToken> <int:PaxProfile> <int1:AeroplanNumber/> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:BusinessContact> <int1:Email/> <int1:Extension/> <int1:Fax/> <int1:Mobile/> <int1:Name/> <int1:SpecialNeeds/> <int1:Telephone/> </int1:BusinessContact> <int1:CategoryID>-1</int1:CategoryID> <int1:DateOfBirth>1989-05-05T00:00:00</int1:DateOfBirth> <int1:EmployeeNumber>111</int1:EmployeeNumber> <int1:Firstname>John</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:GeneralNumber1>0</int1:GeneralNumber1> <int1:GeneralNumber2>0</int1:GeneralNumber2> <int1:HomeAddress> <int1:City/> <int1:Country> <int1:Code/> <int1:Id>-1</int1:Id> <int1:Name/> </int1:Country> <int1:Line1/> <int1:Line2/> <int1:PostalCode/> <int1:Province> <int1:Code>CDN</int1:Code> <int1:Id>1</int1:Id> <int1:Name/> </int1:Province> </int1:HomeAddress> <int1:HomeContact> <int1:Email/> <int1:Extension/> <int1:Fax/> <int1:Mobile/> <int1:Name/> <int1:SpecialNeeds/> <int1:Telephone/> </int1:HomeContact> <int1:IsActive>true</int1:IsActive> <int1:Lastname>Doe</int1:Lastname> <int1:LoyaltyId/> <int1:LoyaltyPoints>0</int1:LoyaltyPoints> <int1:Middlename>g</int1:Middlename> <int1:Notes/> <int1:Passport> <int1:CountryCode></int1:CountryCode> <int1:ExpiryDate>2018-01-01T00:00:00</int1:ExpiryDate> <int1:IssueCity/> <int1:IssueDate>1900-01-01T00:00:00</int1:IssueDate> <int1:Nationality/> <int1:Number/> </int1:Passport> <int1:PaxID>-1</int1:PaxID> <int1:PreBoard>false</int1:PreBoard> <int1:SpecialNeeds/> </int:PaxProfile> <int:ResPaxId>12345</int:ResPaxId> </tem:request> </tem:ChangeReservationPassenger>
Things to consider
- The following fields are mandatory for the request to succeed:
- AgeCategory
- DateOfBirth
- FirstName
- Gender
- IsActive
- Lastname
- ResPaxId
- In order to get the
ResPaxId
you must runGetReservationList
providing a valid reservation number. TheResPaxId
will be located in the response. - A passengers name cannot be changed once travel has begun.
Related articles