Integration guide

TripCreator can rather quickly integrate with any content provider if it provides the following means to access static and live data.

 

This integration guide briefly specifies the anticipated minimal partner API required for TripCreator to operate. TripCreator can process and display much more data than is specified in this document.

The anticipated partner API can be divided into two major parts: static data and real-time operations.

  1. Static DataTripCreator builds a static data index of all partner items locally. Simply put this index is a local cache that only includes static item information like title, description, location, images, etc. It is used whenever a quick lookup of item attributes is required. For example, the local cache will be accessed whenever user opens the image gallery for the item or uses item on the map.TripCreator performs regular updates of local cache to keep it in sync with partner inventory. This usually happens during the quiet period when the traffic is at its lowest. Optionally, partner can push update notifications to TripCreator to keep local cache as up to date as possible.ImagesTripCreator will fetch partner images only once when the image is requested by the end-user for the first time. TripCreator will download the image, resize it and cache it on the content delivery network. All subsequent user requests will be served from that cache bypassing the partner servers. If original image url changes the cache will be invalidated and new replica will be made.

  2. Real-Time DataAvailability/pricing caching is kept to the minimum to ensure correct status and real-time feeling of each item. Whenever a new itinerary is being created or an item is added to the trip TripCreator will fetch the latest availability and pricing from the partner. Also TripCreator will perform regular availability refresh for older trips to ensure that user is seeing the latest status and price.

Static DataTripCreator builds a static data index of all partner items locally. Simply put this index is a local cache that only includes static item information like title, description, location, images, etc. It is used whenever a quick lookup of item attributes is required. For example, the local cache will be accessed whenever user opens the image gallery for the item or uses item on the map.TripCreator performs regular updates of local cache to keep it in sync with partner inventory. This usually happens during the quiet period when the traffic is at its lowest. Optionally, partner can push update notifications to TripCreator to keep local cache as up to date as possible.ImagesTripCreator will fetch partner images only once when the image is requested by the end-user for the first time. TripCreator will download the image, resize it and cache it on the content delivery network. All subsequent user requests will be served from that cache bypassing the partner servers. If original image url changes the cache will be invalidated and new replica will be made.

Real-Time DataAvailability/pricing caching is kept to the minimum to ensure correct status and real-time feeling of each item. Whenever a new itinerary is being created or an item is added to the trip TripCreator will fetch the latest availability and pricing from the partner. Also TripCreator will perform regular availability refresh for older trips to ensure that user is seeing the latest status and price.

Accommodations

  1. API methods to crawl and cache all static accommodation content regularlyTripCreator needs to build a local search index to assure quick and flexible access to static data. The required static accommodation fields:FieldTypeTitle*TextDescriptionTextImageURLTypeEnumerationRank*NumberCoordinates*(Latitude, Longitude)FacilitiesTextAccommodation type must specify the type of facility such as Hotel, Hostel, Apartment, etc. TripCreator will map partner type to the internal enumeration to allow user to filter accommodations by type.A note about rank: TripCreator is rather flexible on this field. It might be ok to have hotel stars or rating or review score or something similar that would allow to sort all accommodations from the best to the worst.

  2. API method to query availability by idThis can be one API call.API method to query generic availability by idTripCreator will filter and pick accommodations from local search index based on user actions. Once a set of accommodation ids is selected TripCreator needs to query availability for each accommodation. This happens in real-time whenever user interacts with accommodations on the map.API method to query room availability by idTripCreator will show room availability in details view of the available accommodation.FieldTypeTitle*TextImageUrlCapacity*NumberPrice*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.FacilitiesTextRoom availability API must allow to fetch data for multiple accommodations at the same time.

  3. API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

API methods to crawl and cache all static accommodation content regularlyTripCreator needs to build a local search index to assure quick and flexible access to static data. The required static accommodation fields:FieldTypeTitle*TextDescriptionTextImageURLTypeEnumerationRank*NumberCoordinates*(Latitude, Longitude)FacilitiesTextAccommodation type must specify the type of facility such as Hotel, Hostel, Apartment, etc. TripCreator will map partner type to the internal enumeration to allow user to filter accommodations by type.A note about rank: TripCreator is rather flexible on this field. It might be ok to have hotel stars or rating or review score or something similar that would allow to sort all accommodations from the best to the worst.

API method to query availability by idThis can be one API call.API method to query generic availability by idTripCreator will filter and pick accommodations from local search index based on user actions. Once a set of accommodation ids is selected TripCreator needs to query availability for each accommodation. This happens in real-time whenever user interacts with accommodations on the map.API method to query room availability by idTripCreator will show room availability in details view of the available accommodation.FieldTypeTitle*TextImageUrlCapacity*NumberPrice*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.FacilitiesTextRoom availability API must allow to fetch data for multiple accommodations at the same time.

API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

*Required fields

Tours & Activities

  1. API methods to crawl and cache all static tour & activity content regularlyTripCreator needs to build a local search index to assure quick and flexible access to static data. The required static tour & activity fields:FieldTypeTitle*TextDescriptionTextImageUrlDeparture Point*(Latitude, Longitude)Duration*NumberAvailability Period (Seasonality)*TimeframeA note about availability period: TripCreator requires preliminary availability information to cache. For example, if some tour is available all year round, during winter months or during Christmas period. This is used to make a quick decision whether it is worth to try to schedule some tour during the trip period.

  2. API method to query tour & activity availability by idThis can be one API call.API method to query available start times per dayTripCreator will query the API when trying to build an itinerary for the user. The availability response should include the following required fields:FieldTypeDeparture Date*DateDeparture Time*TimeSeats Available*NumberPrice Per Seat*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.Optionally TripCreator can support different seat prices per age interval. The partner can provide seat prices per age interval but at any case, age interval must be of a strict structure that is possible to parse.API method to query available days per periodTripCreator will query available days API when suggesting alternative days for a particular tour.

  3. API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

API methods to crawl and cache all static tour & activity content regularlyTripCreator needs to build a local search index to assure quick and flexible access to static data. The required static tour & activity fields:FieldTypeTitle*TextDescriptionTextImageUrlDeparture Point*(Latitude, Longitude)Duration*NumberAvailability Period (Seasonality)*TimeframeA note about availability period: TripCreator requires preliminary availability information to cache. For example, if some tour is available all year round, during winter months or during Christmas period. This is used to make a quick decision whether it is worth to try to schedule some tour during the trip period.

API method to query tour & activity availability by idThis can be one API call.API method to query available start times per dayTripCreator will query the API when trying to build an itinerary for the user. The availability response should include the following required fields:FieldTypeDeparture Date*DateDeparture Time*TimeSeats Available*NumberPrice Per Seat*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.Optionally TripCreator can support different seat prices per age interval. The partner can provide seat prices per age interval but at any case, age interval must be of a strict structure that is possible to parse.API method to query available days per periodTripCreator will query available days API when suggesting alternative days for a particular tour.

API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

*Required fields

Car Rental

  1. API method to crawl and cache all possible pickup/dropoff locations regularlyTripCreator needs to build a local search index of all possible pickup/dropoff locations to assist the user with nearby locations. Each location must provide the following required fields:FieldTypeTitleTextCoordinates(Latitude, Longitude)TripCreator needs to build a local search index of all possible pickup/dropoff locations to assist the user with nearby locations. Whenever a user tries to add a car TripCreator will automatically suggest the nearest pickup location based on the traveler position at that time.

  2. API method to query available cars by given pickup and dropoff locationsTripCreator will query available cars every time user tries to add a new car. The availability response must include car description and pricing information. The required fields:FieldTypeTitle (Model)*TextImageUrlAcriss code*NumberMax Passengers*TextTransmission*TextAir Conditioning*BooleanPrice*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.Static car type information (Title, Max Passengers, etc) can also be provided together with rental car locations or another API call.

  3. API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

API method to crawl and cache all possible pickup/dropoff locations regularlyTripCreator needs to build a local search index of all possible pickup/dropoff locations to assist the user with nearby locations. Each location must provide the following required fields:FieldTypeTitleTextCoordinates(Latitude, Longitude)TripCreator needs to build a local search index of all possible pickup/dropoff locations to assist the user with nearby locations. Whenever a user tries to add a car TripCreator will automatically suggest the nearest pickup location based on the traveler position at that time.

API method to query available cars by given pickup and dropoff locationsTripCreator will query available cars every time user tries to add a new car. The availability response must include car description and pricing information. The required fields:FieldTypeTitle (Model)*TextImageUrlAcriss code*NumberMax Passengers*TextTransmission*TextAir Conditioning*BooleanPrice*NumberCurrencyUSD, EUR, CAD, AUD, ISK, etc.Static car type information (Title, Max Passengers, etc) can also be provided together with rental car locations or another API call.

API method to book and charge on behalf of TripCreatorTripCreator will send the customer credit card data to the API provider. The API provider is responsible for charging the customer credit card.

*Required fields

Booking

TripCreator will forward customer profile and credit card details alongside the item being booked. The API provider is responsible for charging the customer credit card and making sure that the reservation actually happens. TripCreator will expect at least the following fields for the booking response:

FieldTypeBooking Reference*TextBooking status*EnumerationVoucherText

TripCreator is rather flexible on voucher structure. This can be anything from pdf ticket to url on the partner website. Voucher will be presented to the user as a proof that booking has been made.

*Required fields

The information above represents the information we need to for a quick/best case scenario for TripCreator and how the integration effort can be minimized.

We can of course adapt to different APIs given a bit more time and find solutions that fit your and our needs.