CMS API Methods

API Next

API Next is Softrip's latest version of the CMS API, using new technologies and structures to publish your content for third-parties to display on their own websites.

Endpoint

Softrip's API Next exposes regions, destinations, TOCs, and packages through a JSON API. The root URL for all API calls is:

/api/

Structure

CMS content is organized into four nested levels:

  • Regions

    • Subregions

      • Destinations

        • TOCs (Tables of Content)

          • Packages

Required input parameters

Every CMS API call requires a input for "BrandID" that should be passed in the query string for your API call. Check with your Softrip subscriber to get their brand IDs for the content you wish to retrieve.

/api/cms/regions/?brandid=MYBRAND

CMS Calls

In order to pull all CMS and package content from the API, your code will have to run multiple calls to the API:

  1. Get all the regions ("Regions" API call) - The response contains all regions, subregions, destinations, and TOCs, and each TOC will have a list of packages.

  2. For each region, parse the subregion

  3. For each subregion, parse the destinations

  4. For each destination, parse the TOCs

  5. For each TOC, parse the packages and get their IDs to pull their details using the "Packages" CMS API call

  6. For each package, request its details ("Package" API call)

Regions

Regions represent groups of destinations, and reflect the organization of the main website. For example, there is a region for "Italy and Europe"
To get a list of all regions, use the API call:

/api/cms/regions/?brandid=[MYBRAND]

The JSON response contains a list of region objects. Each region object contains a list of destination objects, each destination object contains a list of TOCs, and each TOC contains a list of packages.

Subregions

Subregions represent a subdivision of the regions loaded in the system, and reflect the organization of the main website. For example, the "Italy and Europe" region has a "Italy and Sicily" subregion.

Destinations

Destinations represent groups of TOCs, and reflect the organization of the main website.
Destinations can be pulled from the "Regions" API call (for all regions and destinations), or on an individual basis:

The JSON response contains a list of TOC objects.

TOCs

TOCs represent groups of packages in a given destination, and reflect the organization of the main website.
TOCs can be pulled from the "Regions" API call (for all regions and destrinations), or on an individual basis:

The JSON response contains a list of Package objects.

Packages

Packages represent a particular offering for a given tour. This includes detailed itinerary, travel tips, departure dates, and prices.
Packages can be pulled using the "Package" API call:

Object definitions

Regions

Region members:

  • ID (string) - A globally unique ID for this Region object

  • Title (string) - The title or name of this Region

  • Description (string) - A short paragraph describing this Region

  • Subregions (array of Subregion objets) - The list of Subregions that belong to this Region object

Subregions

Subregion members:

  • ID (string) - A globally unique ID for this Subregion object

  • Title (string) - The title or name of this Subregion

  • Description (string) - A short paragraph describing this Subregion

  • Destinations (array of Destination objects) - The list of destinations that belong to this Subregion object

Destinations

Destination members:

  • ID (string) - A globally unique ID for this Destination object

  • Title (string) - The title or name of this Destination

  • Description (string) - A short paragraph describing this Destination

  • TOCs (array of TOC objects) - The list of TOCs that belong to this Destination object

TOCs

TOC members:

  • ID (string) - A globally unique ID for this TOC object

  • Title (string) - The title or name of this TOC

  • Description (string) - A short paragraph describing this TOC

  • Packages (array of Package objects) - The list of Packages that belong to this TOC object

Packages

Some package members are only exposed when requesting details on a specific package (e.g. /api/cms/packages/[PACKAGEID]), as opposed to the list of packages you would get from a Regions call (e.g. /api/cms/regions/).

Package members (always exposed):

  • ID (string) - A globally unique ID for this Package object

  • Title (string) - The title or name of this Package

  • Description (string) - A short paragraph describing this Package

  • LeadPriceLandOnly (numeric) - The lead price for this package when booked without flights

  • LeadPriceLandAndAir (numeric) - The lead price for this package when booked with flights

  • Season (string) - The departure date range for this package (e.g. "Feb - Dec '16")

  • Duration (integer) - The duration in number of days for this package

  • Countries (array of strings) - The list of countries visited on this package (e.g. "Italy", "Croatia")

  • PackageCategories (array of strings) - The array of categories this package belongs to (e.g. "Small Groups", "Adventure Travel")

  • URL (string) - The URL to the landing page for this package

Package members - only exposed with a Package details call (/api/cms/packages/[PACKAGEID]):

  • Images (array of Image objects) - The list of images/photo gallery that belong to this Package object

    • Title (string) - The title for this image

    • Description (string) - A short paragraph describing this image

    • Image (string) - The URL to the image resource for this image

    • Thumbnail (string) - The URL to the thumbnail resource for this image (if available)

  • Maps (array of Map objects) - The list of maps that belong to this Package object. Usually a map showing the itinerary for this package.

    • Title (string) - The title for this map

    • Description (string) - A short paragraph describing this map

    • Image (string) - The URL to the image resource for this map

    • Thumbnail (string) - The URL to the thumbnail resource for this map (if available)

  • MiscInfo (array of MiscInfo objects) - The list of additional information that belong to this Package object. Usually a paragraph detailing what is NOT included in the package.

    • Title (string) - The title for this MiscInfo

    • Description (string) - A short paragraph describing this MiscInfo

    • Image (string) - The URL to the image resource for this MiscInfo

    • Thumbnail (string) - The URL to the thumbnail resource for this MiscInfo (if available)

  • Highlights (array of Highlight objects) - The list of highlights that belong to this Package object. Usually an HTML-formatted description of the details and inclusions of this package

    • Title (string) - The title for this Highlight

    • Description (string) - An HTML-formatted paragraph describing this Highlight

    • Image (string) - The URL to the image resource for this Highlight

    • Thumbnail (string) - The URL to the thumbnail resource for this Highlight (if available)

  • ActivityInfo (array of ActivityInfo objects) - The list of Activity details for this package object. Usually a description of the level of activity (are there any difficult walks etc.)

    • Title (string) - The title for this ActivityInfo

    • Description (string) - A short paragraph describing this ActivityInfo

    • Image (string) - The URL to the image resource for this ActivityInfo

    • Thumbnail (string) - The URL to the thumbnail resource for this ActivityInfo (if available)

  • DepartureDateFrom (date) - The first departure date for this package

  • DepartureDateTo (date) - The last departure date for this package

  • BookingDateFrom (date) - The first date on which this package can be booked

  • BookingDateTo (date) - The last date on which this package can be booked

  • DateSpecific (boolean) - Indicates whether this package must be booked on specific dates, or if the package lets users book any date within a given date range

  • LandOnlyOK (boolean) - Indicates whether this package can be booked without flights

  • AirIncluded (boolean) - Indicates whether this package offers flights

  • ShareOK (boolean) - Indicates whether this package can be booked as a "Share". For example, an individual could book a "half-double" room, and be paired up with another individual traveler to share a room.

  • ProductCodes (array of strings) - The array of product codes that are tied to this package. For example, a given package could have different products for Monday vs. Wednesday departures. This is important to show the correct itinerary and pricing based on the selected departure date.

  • Itineraries (array of Itinerary objects) - The array of Itineraries associated with this package

    • ProductCode (string) - The product code for which this Itinerary is applicable (cf. ProductCodes array above)

    • ProductName (string) - The name of this product (e.g. "Monday Departures")

    • Title (string) - The title of this Itinerary object

    • Image (string) - The URL to the image resource for this Itinerary object

    • Description (string) - An HTML-formatted description of this Itinerary object

    • Map (string) - The URL to the map resource for this Itinerary

  • Optionals (array of Optional objects) - The array of optional additions for this package. Usually optional shore excursions or sightseeing tours.

    • SupplierID (string) - The ID of the supplier/provider for this optional service

    • ServiceID (string) - The ID of this optional service

    • ServiceType (string) - The type of service for this optional service. Common optional service types are:

      • TRF - Transfer

      • SST - Sightseeing Tour

      • MLS - Meal

    • Title (string) - The title/name of this optional service

    • Image (string) - The URL to the image resource for this optional service

    • Description (string) - A short paragraph describing this optional service

    • OnDay (integer) - The day number on which this optional service is bookable. For example, an optional service that is offered on the third day of the package's total duration would have an OnDay of "3".

    • Price (numeric) - The lead price for this optional service

  • PlanGroups (array of PlanGroup objects) - The list of plan groups representing pricing for this package

    • ProductCode (string) - The ProductCode tied to this PlanGroup object (cf. ProductCodes array above)

    • ProductName (string) - The name of this product (cf. ProductCodes array above) (eg. "Monday Departures")

    • Plans (array of Plan objects) - The array of plans tied to this PlanGroup

      • PlanDescription (string) - The description/name of this Plan object (e.g. "Luxury Class Hotels" or "Tourist Class Hotels")

      • Rates (array of Rate objects) - The list of pricing for this Plan object

        • SaleStatus (string) - The status of this departure (e.g. "Sold Out", "Open", "Closed")

        • DepartureDate (date) - The departure date for which this rate is applicable

        • PriceLandOnly (numeric) - The per-person package price for this package if booked without flights (if available), based on two adults sharing a room

        • PriceLandAndAir (numeric) - The per-person package price for this package if booked with flights (if available), based on two adults sharing a room

        • BookingDateFrom (date) - The first booking date on which this rate is applicable. Note that a departure date may appear multiple times in the rates if there are different prices based on the booking date (e.g. "Book by Dec 2016 and save")

        • BookingDateTo (date) - The last booking date on which this rate is applicable

      • Hotels (array of Hotel objects) - The list of hotels tied to this Plan object

        • SupplierID (string) - The ID of this hotel

        • SupplierName (string) - The name of this hotel

        • SupplierRating (numeric) - The rating of this hotel (in number of stars, e.g. "4.5")

        • Title (string) - The title for this hotel

        • Description (string) - A short paragraph describing this hotel and its location and features

        • Image (string) - The URL to the image resource for this hotel