Skip to main content
Skip table of contents

The Holibob API - Product & ProductList

Fetch Product List - Pagination

All queries accept pagination parameters.

When not specified, the default is to return 20 records.

The following parameters can be specified:

pageSize - the number of records returned in a single page (max 5,000).

page - the page number to be returned (min 1).

You can also request that the query return the following nodes to assist with pagination UI:

totalRecords - the number of records available for the given query.

unfilteredRecords - the total number of records that would have been available if the filters were not applied

pages - the total number of pages available (the totalRecords / pageSize).

nextPage - the next page if available.

previousPage - the previous page if available.

$.store.books[*].author

123.5 kilobytes

123.5 kilobytes

123.5 kilobytes

123.5 kilobytes

Fetch Product List - Product Content List

The productList query can return a contentList

Fields include:

type - an enumeration stating the type of content and typically used to split the list and render different content in sections within the UI

name - a short name for the item (some content types will only return name)

description - a text description

desctiptionHtml - same as description but including sanitized HTML tags such as <em>, <i> and <br/>.

ordinalPosition - a sequence number in the contect of the type, typically used to control the order in which items are rendered.

Fetch Product List - Trees

The productList query is used to obtain a filtered list of product.

In this example the most basic form of search filter has been used. A more complex query may pass additional filters as lists of CITY, CATEGORY, ATTRIBUTE and more. See the full docs for the filter types available.

In the response, each product will contain the fileds that have been requested in the query.

ALL PRODUCT and indeed all entities of any type are returned with a unique 36 character UUID that may be used in subsequent queries to get more details or to reference the object when, for instance, adding to a booking.

If you are operating in sandbox mode: Setting the search string to "holibob" will return only test product that can be used to explore different product types and the related availability and booking API calls required to complete a booking.

Try changing the search string to 'paris' to return all product matching that term.

The importance of availabilityType

The availabilityType returned by this query is important when understanding how to proceed.

types include

DATE - The product availability will be per day and must be booked for a specific date.

DATE_TIME - The product may return multiple availabilities per day and must be booked for a specific time slot.

PASS - the product is a pass and will be purchased on the date of booking and be available for consumption up to the given expiry date. A pass will not accept an availability date wen being added to a booking and will allways be valid from the date of purchase.

Guide Prices

The guidePrice returned on a product must be read in conjunction with the guidePriceCurrency.

This price will be an APPROXIMATE Adult price for the next near availability of the product and is provided only as a guide and a from price. The true price of a product may vary by date and other criteria and will be returned only when a call is made to the availabilityList query.

Product images

Generally, each product will have a single previewImage and may also have a collection of galleryImages These are supplied with a URL that may be used to present the image to the viewer.

Fetch Product List - by Search

A generic filter of search can be used to find all product that contain the given search term in any of the name, description or keywords for the product.

In this example the search filter has been used. A more complex query may pass additional filters as placeIds, categoryIds, attributeIds and more.

Fetch Product List - by Place

Filtering the productList by place is one of the most common filters to apply.

A place may be any of:

a City - e.g. Edinburgh, London, New York, Perth - (City is inclusive of town and village)

a Country - e.g. Scotland, England, USA

a Region - e.g.

"Corfu" - the island as distinct from Corfu the town,

"Umbria" - a region of central Italy

"Greater London" - London city and the surrounding area

You can pass either:

placeId - the identifier for the place.

placeName - an exact match for the place name.

It is recommended that you ALWAYS use an ID rather than a name. This is because there are many places around the world that share a name.

For example a filter using placeName for "Perth" will return product in both Perth, Scotland and Perth, Australia whilst filtering by the placeId will ensure the unique identification of the place.

Please see the documentation of the SearchBar for a convenient query to enable users to search by place names of all types and return the appropriate ID.

Fetch Product List - by isFeatured

It is possible to set manual and rule based featuring of product.

A filter can be used to retrun only the featured product. This filter can be combined with other for instance to return only the featured products for a given place.

In the example the filter will return only the features product for the named place.

Fetch Product List - by Geo Circle

Fetch Product List - by Geo Rectangle

Fetch Product List - by Geo Circle

Filtering the productList by place is one of the most common filters to apply.

A place may be any of:

a City - e.g. Edinburgh, London, New York, Perth - (City is inclusive of town and village)

a Country - e.g. Scotland, England, USA

a Region - e.g.

"Corfu" - the island as distinct from Corfu the town,

"Umbria" - a region of central Italy

"Greater London" - London city and the surrounding area

You can pass either:

placeId - the identifier for the place.

placeName - an exact match for the place name.

It is recommended that you ALWAYS use an ID rather than a name. This is because there are many places around the world that share a name.

For example a filter using placeName for "Perth" will return product in both Perth, Scotland and Perth, Australia whilst filtering by the placeId will ensure the unique identification of the place.

Please see the documentation of the SearchBar for a convenient query to enable users to search by place names of all types and return the appropriate ID.

Fetch Product List - by Geo Rectangle

Filtering the productList by place is one of the most common filters to apply.

A place may be any of:

a City - e.g. Edinburgh, London, New York, Perth - (City is inclusive of town and village)

a Country - e.g. Scotland, England, USA

a Region - e.g.

"Corfu" - the island as distinct from Corfu the town,

"Umbria" - a region of central Italy

"Greater London" - London city and the surrounding area

You can pass either:

placeId - the identifier for the place.

placeName - an exact match for the place name.

It is recommended that you ALWAYS use an ID rather than a name. This is because there are many places around the world that share a name.

For example a filter using placeName for "Perth" will return product in both Perth, Scotland and Perth, Australia whilst filtering by the placeId will ensure the unique identification of the place.

Please see the documentation of the SearchBar for a convenient query to enable users to search by place names of all types and return the appropriate ID.

Error: Couldn't connect to server

0 bytes

0 bytes

Fetch Search Bar

This would typically be used to return a small number of options to a UI where the user is entering an initial search at the root of a product discovery page.

The result includes multiple types of record each with an ID and Name. The type of record returned may be any of COUNTRY, REGION, CITY, CATEGORY, PRODUCT

The result can then be presented to the viewer and the corresponding IDs user in the filter node of the ProductList query.

In the example london is passed as the searchTerm.

We can see in the response that three CITY are matched and then followed with a number of PRODUCT.

Cities

Londonderry, Northern Ireland

London, England

New London, United States

Products

London Showboat dinner cruise

London Eye tickets

Big Ticket: London Eye + Sea Life London + Madame Tussauds

London In One Day Tour with Changing of the Guard And London Eye

Lunch Cruises in London

Fetch Suggested Products for Product/ProductList

The product and productList query can return a suggestedProductList

isMandated - a flag that causes the suggestion to cary more force when rendered to the consumer

product -The full productType object that has all the available fields as the parent, except for suggestedProductList type

product & productList queries
CODE
query ProductList {
  productList {
    nodes {
      id
      name
      suggestedProductList {
        nodes {
          isMandated
          product {
            id
            ...other product fields
          }
        }
      }
    }
  }
}

query Product($productId: String) {
  product(id: $productId) {
    id
    name
    suggestedProductList {
      nodes {
        isMandated
        product {
          id
          ...other product fields
        }
      }
    }
  }
}

Rate Limits

Your holibob API key is associated with a usage plan that provides rate limits and quota to protect you and us from runaway code.

If you receive a “Limit Exceeded” error and believe this to be an error then you may contact holibob and request a rate limit increase.

The default limits are:

  • 2 requests per second with a burst capability to 10 requests per second

  • 2,500 requests per day

Sandbox mode

The credentials initially supplied will be valid for the production environment but limited to the sandbox mode. We strongly encourage you to do all initial development against the production URL as detailed above.

In the API this can be confirmed by examination of the response from the welcome query as the isSandbox flag will be set to true.

On white label and agent portals, you will also see an info icon on your account button.

Whilst in this mode, you are free to use the production API and portals for all testing activities including the creation and confirmation of bookings. These bookings will automatically be sandboxed and as such, they will not be confirmed with suppliers and you will not incur any charge for the bookings. All functionality is available in this state and you will be gaining access to production product and live availabilities.

All testing is therefore done against the production system ensuring that all code you write is immediately production ready.

Once you have completed initial integrations you will be able to apply to the holibob commercial team to have the credentials upgraded to allow live bookings. Once updated, all bookings confirmed on the production API will be live, you will be charged and the booking will be confirmed with the supplier.

You will be able to see all bookings within the holibob hub when logged in with credentials linked to your partner account. When using hub you can switch between viewing sandboxed or live bookings.

There is an additional API endpoint available that is simply an alias against the production API, however, this API will enforce sandbox mode regardless of the state of your account

The sandbox API is available at: https://api.sandbox.holibob.tech/graphql

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.