How to connect rooms from Amadeus Hotel services - amadeus

So i have database where i store hotels and rooms to that hotels.
Now we are connecting Amadeus Hotel services with our database. There is no problem to connect hotel from Amadeus with our hotel. There is property code and Amadeus id.
The problem is with rooms. We can't find any tutorial about connecting rates (rooms) that are returned from MultiSingleAvailability with our rooms. We have in Amadeus response room_type, room_type_code, rate_plan_code but all of those codes can change as hotel is updating for example property code or doing other things. We need this connection as data that is returned about rooms is very poor and low quality.
Is there any safe way to connect rates with our rooms ?

room_type is returned to us from the hotel providers and corresponds to the type of the room, the quality varies depending on the provider behind.
Something that might help is the following field:
"typeEstimated": {
  "category": "ACCESSIBLE_ROOM",
  "beds": 1,
  "bedType": "QUEEN"
},
Here we are attempting to extract better information about the room by combining the room code with parsing the room description. Of course, we cannot guarantee that this information is 100% accurate.
rateCode: A rate code comes from the provider but is represented in an Amadeus format. It cannot be used to identify a room. In fact, the same room can be offered using multiple rate codes. 
For example: RAC is the public rate offered to everyone, while the hotel could for example offer a discounted price for government workers with the code GOV. A hotel offer is thus a combination of a room type and a rate code.
How are you building your database? What identifiers are you using? Where did you get them from?

Related

How should I design my RESTful API in this case?

I've got a DB with a lot of people of type (PLAYER, DOCTOR, TEACHER) where each person has an ID and location ID. There're some common fields like first name, last name but also some fields that are specific on person's occupation: number of injuries / the most serious injury type for PLAYER, number of patients for DOCTOR and can_teach_math for TEACHER.
I want to build an API to compute total compensation of all these people that accepts a list of IDs (optional), list of location IDs (optional). For example, if someone passes 3 personIDm API should return a response with an array where each row corresponds to a specific person. If someone passes locationIDs - API should return all people who are living in that area.
Originally, I was thinking I could just return people ID:
request = {..., person_id:[person-123, person-456], location_id = [location-1, location-2]}
response = {
[person_id:person-123, first_name=Alex, compensation=100],
[person_id:person-456, first_name=Alex2, compensation=102],
# anyone who lives in location-1, location-2
[person_id:person-13, first_name=Alex3, compensation=50],
[person_id:person-12, first_name=Alex4, compensation=52],
}
However UI engineer showed up and said they want to see
also some fields that are specific on person's occupation: number of injuries / the most serious injury type for PLAYER, number of patients for DOCTOR and can_teach_math for TEACHER.
in a response even though it makes API denormalized. That said, it makes sense to me since loading all the object info through GET persons/{ID} might take quite a long time. Without going too much of the details, let's see we don't care about speed -- is the proper way to design RESTful API is not to return
also some fields that are specific on person's occupation: number of injuries / the most serious injury type for PLAYER, number of patients for DOCTOR and can_teach_math for TEACHER.

How do I figure out hotelId for any hotel?

I am trying to get hotel specific details using the following api:
/shopping/hotel-offers/by-hotel
how do I figure out the hotelId parameter? For example I want to use the aforementioned api, to get information about Pendry San Diego hotel, what would be the hotelId for this hotel.
Appreciate any help.
The Hotel Search API comes with 3 different endpoints:
Get the list of hotels for a specific location.
Get the hotel and rooms information for a specific hotel (by its hotel id).
Confirm the price and availability before booking.
To get the hotel id, you need to use the first endpoint to find the list of hotels for a given location, then you can use this hotel id with the second endpoint.
As of today, you cannot directly search by a hotel name to get a hotel id. We have this in our backlog but not a specific delivery date yet.
FYI, I searched for hotels in San Diego and retrieved the hotel with the name Pendry San Diego:
"hotelId": "MNSANPSH",
"name": "Pendry San Diego LVX"

Are flight offers price, flight offers search, flight create orders using cache or live results?

I am a node js programming, testing the self-service api calls on amadeus website.
I am aware of the whole flow: Flight Offers Search -> Flight Offers Price -> Flight Create Orders. Just curious which api are returning cached results from servers, which return live results.
PS.How does 'create order' actually create flight orders? I do not see url link to book air ticket, like skyscanner's api. All I get is
"type": "flight-order",
"id": "eJzTd9f39vA0co4AAArzAk8=",
"associatedRecords": [
{
"reference": "KHI2CX",
"creationDate": "2020-01-09T07:51:00.000",
"originSystemCode": "GDS",
"flightOfferId": "1"
}
],
etc...
How can a customer book an air ticket from this info?
PPS: Is it possible to skip Flight Offers Price in the flow? If not, how long does response from Flight Offers Price stay valid as input for create orders?
Thanks in advance.
The 3 APIs have live results (no cache), so in theory, if you do a booking right after the search you could skip the price, but as it can take time to browse and select the flight to book it's better to perform the price to make sure the price didn't change and the seat(s) is still available.
Regarding the validity of the Price API: it's valid as long as the price doesn't change and the seat is still available.
Our Flight Create Orders API creates a booking reservation, it doesn't redirect to a website of a travel agency or an airline. You can find more information in our guide: Create a flight booking engine.
Do not hesitate to contact our support team if you want more information.

Sabre Instaflights Search API only pulling Basic Economy Fares

I am testing the Instaflights Search API to pull fare information for an airline. In this example, using Delta. When I pull the data, I only get the pricing for the Basic Economy and not for Main Cabin or First class. Is there a way to get access to these prices or we are limited to the lowest price? I compared the results with the Delta website and only the flights with Basic Economy seats matched between the API and the airline site.
InstaFligths, retrieves roundtrip or one-way flight itineraries with published fares and fare breakdowns for a given city pair and departure date. The API returns the 300 of the lowest-priced itineraries.
If looking to retrieve different Brands or Cabin Types, please look into Bargain Finder Max API.
https://developer.sabre.com/docs/read/rest_apis/air/search/bargain_finder_max

Amadeus Service 'No fare for booking code ' error in Fare_Informativebestpricing

I am working on to call the Amadeus Service and get the response for flight search and then book.
Amadeus service method _InformativeBestPricingWithoutPNR is giving following error
1) 'NO VALID FARE/RULE COMBINATIONS FOR PRICING'
2) 'NO FARE FOR BOOKING CODE-TRY OTHER PRICING OPTIONS'
3) 'No INTERLINE AGREEMENT - PRICE SEPARATELY'
Just to know that i am calling Fare_MasterPricerTravelBoard and then select one flight and call the Fare_InformativeBestpricingWithoutPNR , some of the flight is giving proper response in Fare_InformativeBestpricing but some of the are giving error,
Please help, i have read all the document provide by Amadeus extranet site and related document , there are no any solution provide for specific error.
If you haven't already read it, I'd definitely suggest you log in to webservices.amadeus.com and take a look at the Amadeus WBS Implementation Guide - Internet Booking Engine with Master Pricer.
Typically these errors occur because only a subset of the journey returned by Travel Board is being sent to Informative Bestpricing, and this subset is not valid for pricing on its own.
A typical case when this can occur is if you price each leg individually but the Fare Basis used may only apply for a round trip.
Could you please provide more information on the call you are making to Fare_InformativeBestpricingWithoutPNR?
The error says you are combining two different airlines that do not have interline agreements. So in this case you will have to price them separately. For example if you are flying american airlines for the outbound flight, then you cannot fly air france in the inbound flight and price them in one transaction. in this case, assuming American and Air France do not have interline agreements, you have to price them separately.