Supplier API

Manage Product Content, Fare Pricing, and Claim Vouchers

Introduction

Environments

Test
https://apitest.websitetravel.com
Production
https://api.websitetravel.com

Data Format

The API accepts requests and returns responses in JSON format only. All incoming requests must have an "Accept: application/json" header. An error message with a 406 HTTP status code will be returned if this is omitted.

Authentication

The Website Travel API uses OAuth2 authentication. To acquire a token, call POST /apiv1/supplier/token, including the client_id and client_secret in the body of the message.

This token should then be appended to every URI as the access_token parameter.

Products

Products are represented in the products database with two different entities - Products and ProductsDetails. Each Product has a unique identifier (the productId), and may have several ProductsDetails in different states. For example, a Product might have a Live ProductsDetail which agents can view and purchase, a Draft ProductsDetail reflecting changes that the supplier has just made to it, and a History ProductsDetail showing the previous version of the product.

All edits to Products are made to the Draft ProductsDetail, which will then go through an approval process before it becomes Live. Similarly, if you want to delete a Product from the system, this must go through the approval process.

The API provides support for:

  • Creating new Products using POST /apiv1/supplier/product.
  • Making edits to existing Products using PUT /apiv1/supplier/product/{productId}. These edits will be made to the Draft ProductsDetail, which will be created automatically if necessary.
  • Reverting all changes to the Draft ProductsDetail using POST /product/{productId}/abandonchanges
  • Submitting a Draft ProductsDetail for approval using POST /apiv1/supplier/product/{productId}/submit.
  • Requesting that a Product be deleted using DELETE /apiv1/supplier/product/{productId}. In some cases, the delete will not happen immediately. Instead, a separate Delete Pending ProductsDetail will be created, and once the request has been approved by Website Travel staff, the Product and all its ProductsDetails will be deleted.

The different product detail statuses are:

Status Name Status Code Status Description
LiveLThe ProductsDetail is visible to agents and can be purchased
HistoryHThe ProductsDetail shows a previous version of the product
DraftDThe ProductsDetail can be edited by supplier
CandidateCThe ProductsDetail has been submitted for approval, but has not yet been approved
ApprovedAThe ProductsDetail has been approved by Website Travel staff, and will become live on the next day
Delete PendingXThe supplier has requested that the Product be deleted, but this has not yet been approved
Delete ApprovedYThe request to delete the Product has been approved by Website Travel staff, and it will be deleted on the next day

Product Creation Workflow

Basic steps for publishing a product by using the Supplier API.

Get a token

A token can be retrieved by posting a client_id and client_secret, this token must be included on all subsequent requests.

        POST /apiv1/supplier/token
        {
            "client_id": "MY_CLIENT_ID",
            "client_secret": "MY_PASSWORD_OR_HASH"
        }
    

Token Inclusion

It is required to include the authorisation token on each request, this can be done on the request header or as parameters on the URL (even when working with non GET requests).

Header method example:
        Accept: application/json, text/javascript, */*; q=0.01
        Authorization: Bearer MY_RETRIEVED_TOKEN
    
URL method example
        GET /apiv1/supplier/products?access_token=MY_RETRIEVED_TOKEN
    

Create a Draft Product

Create a draft product by doing a POST containing all the required fields.

Please note: You can create a draft product with less information than is required by the submit process.
Product teaser, images and fares are examples of required information that is required when submitting a product but not when creating a draft.

        POST /apiv1/supplier/product
        {
            "productName": "Taihape Gumboot Throwing",
            "country": "NZ",
            "productClassId": 525,
            "addressLineOne": "1234 State Highway 1",
            "addressPostcode": "123",
            "addressCity": "Taihape",
            "startLocation" : 19,
            "activityTypes" : [26],
            "mediaId":  1000001,
            "teaser" : "This is a test API test product",
            "description" : "and this is a small description for a test product",
            "voucherInformationContactDetailsBits" : 6
        }
    

Add Images

Add between 5 and 10 images to the draft product by doing a PUT containing an array of mediaIds.

        PUT /apiv1/supplier/product/{productId}/images
        {
            "mediaIds": [1000001,1000002,1000003,1000004,1000005]
        }
    

Add Fares

Add a fare to the draft product by doing a POST.
Please note: Multiple fares are added by doing multiple requests.

        POST /apiv1/supplier/product/{productId}/price
        {
            "fareName": "General",
            "currency": "NZD",
            "pax": 1,
            "duration": 1,
            "periodStart": "2015-10-01",
            "rrp": "110.00",
            "netRate": "100",
            "levy": "0"
        }
    

Submit Product

The final step of the process is to submit the product for approval, this is done by doing an empty POST to the provided route.

        POST /apiv1/supplier/product/{productId}/submit
    

Auto Approve

Products are created as drafts and must be submitted for approval. In the case where a product is already approved, updates can be auto approved provided some conditions are met.

1. The supplier is enabled for auto approval

2. No price margins were affected by the changes

If the above is satisfied, then updates to APPROVED OR LIVE status products/prices, will be sent to APPROVED immediately. Else, a DRAFT will be created and then submitted as CANDIDATE straight away.

Media

Suppliers can upload images to the Website Travel database through the API. Each image is assigned a unique ID, and can be associated with multiple Products. Because images are very important to our agents, it is compulsory to provide images for each Product, and no Product will be approved to go live unless it has at least 5 images.

Product Prices

A Product Prices Detail (often referred to as a "price") is the actual item which is available for agents to purchase on the Website Travel platform. It is only necessary to provide a price for the supplier's home currency, and this will be automatically converted into the agent's currency using the latest exchange rate. Alternatively, if you want to provide a fixed rate for overseas agents, you can set additional prices in other currencies.

Package Products

The "Package" product class can be used to create packages. Products with this product class may have one or more prices (just like other product classes). Each price must have multiple Package Options, each or which contains one or more Package Products. When purchasing the package, the customer will be able to choose one Package Product for each Package Option.

A package product may represent any fare in the Website Travel system which is sold in the package's currency. A Package Product also has a quantity (indicating how many of that fare will be added to the customer's order when they select the Package Product), and an RRP difference which can be used to apply an additional charge if the customer chooses that product rather than another product under the same option.

Product Categories

Each product can be tagged with a number of categories, which our agents use to search our database.

Product Class

A product can only have one product class, and this affects some of the other options that are available for the product. The different product classes are:

Note: You need the Product Class Id, not the Product Class Code in requests. To access the Product Class Ids, please refer to GET params/{paramType}
Product Class Id Product Class Name Product Class Code Product Description
525ActivityVActivity only Product
565MerchandiseMMerchandise
527AccommodationAAccommodation Product
597Tour ProductCDifferent Tour Products.
531TransportTTransportation

Accommodation, Activity and Transport Types

Some products can be tagged with categories which say what type of accommodation, activity or transport they provide. For example, there are categories for dorm and twin share accommodation, museum and kayaking activities, and coach and hire car transport.

Accommodation categories can be applied to A, C or U class products. Activity categories can be applied to V, U, S or C class products. Transport categories can be applied to U, S, C or T class products. Each product can be tagged with a maximum of three categories per category type.

Location Categories and Addresses

Another type of category deals with the location of your product. Location categories are hierarchical, with four levels - countries, states, regions and localities. API methods are provided for you to navigate the hierarchy of location categories and find the localities that best describe your product's location.

You can set your product's location by setting its start and end location properties. These should both be localities, and the product will automatically inherit the locality's parent categories.

As well as collecting the start and end location category, we also ask you to provide a full street address for your product. This is used to geocode the product and allows users to search for products by latitude and longitude.

Support

If you have any queries about this API, please contact api@websitetravel.com.

Download

HTML Documentation

Documentation

  • Version 1

    • Agents

        • GET /apiv1/supplier/agentFathers

          • Fetch a list of agent fathers the authenticated supplier has access to.

          Documentation

          Fetch a list of agent fathers

          Fetch a list of agent fathers the authenticated supplier has access to.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          agentFatherIdnIntegerAgent Father identifer.
          agentFatherNamenStringAgent Father name.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          500
          • Internal error.
        • GET /apiv1/supplier/agents

          • Fetch a list of agents the authenticated supplier has access to.

          Documentation

          Fetch a list of agents

          Fetch a list of agents the authenticated supplier has access to.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          agentIdnIntegerAgent identifer.
          agentFatherIdnIntegerAgent Father identifer.
          agentCodenStringThree-letter Agent identifier.
          namenStringAgent name.
          emailAccountsyStringAgent accounts email address.
          businessNumberyStringAgent business number.
          street1nStringStreet address of Agent.
          street2yStringSecondary street address of Agent.
          suburbnStringAgent suburb.
          stateyStringAgent state.
          postcodeyStringAgent postcode.
          countrynStringAgent Country.
          workPhonenStringAgent work phone number.
          currencynObjectCurrency object.

          Currency Object

          Field name Nullable Type Description
          isoCodenStringAgent's currency code (ISO-4217 three-character code).

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          500
          • Internal error.
    • Authentication

        • POST /apiv1/supplier/token

          • Grants an OAuth token

          Documentation

          Grants an OAuth token

          Grants an OAuth token to be used when querying the Website Travel API. This token should be provided as the access_token parameter to all other API calls.

          Parameters

          Parameter Type Required? Description
          client_id String true Client ID.
          client_secret String true Client secret.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
    • Cancellation Fee Policies

        • GET /{supplierapi}/cancellationpolicies

          • Get all cancellation fee policies for this supplier

          Documentation

          Get all cancellation fee policies

          Retrieves information about all of the supplier's cancellation fee policies. Output as for GET /cancellationpolicy/{cancellationFeePolicyId}.

          Requirements

          Name Type Description
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          500
          • Internal error.
        • POST /{supplierapi}/cancellationpolicy

          • Create a new cancellation fee policy

          Documentation

          Create a new cancellation fee policy

          Creates a new cancellation fee policy based on the JSON array of data provided.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          cancellationFeePolicyIdnIntegerID of the new cancellation fee policy.

          Requirements

          Name Type Description
          supplierapi

          Parameters

          Parameter Type Required? Description
          policyName String true Name of the cancellation fee policy.
          policyDescription String false Additional description information.
          usePercentMode Boolean true Whether the policy is in percent mode (true) or dollar mode (false).
          isDefault Boolean false Whether this policy should become the default cancellation fee policy for this supplier.
          cancellationFeeRules Array false Array of CancellationFeeRule objects.
          cancellationFeeRule.daysBeforeTravelDate Integer true Duration before travel date that this rule will be in effect.
          cancellationFeeRule.feeAmount Float true Amount of cancellation fee when rule applies (a percentage value when policy is in percent mode, or a monetary amount when in dollar mode).

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          500
          • Returned when fatal issues are encountered.
        • DELETE /{supplierapi}/cancellationpolicy/{cancellationFeePolicyId}

          • Delete a cancellation fee policy

          Documentation

          Delete a Cancellation Fee Policy

          Deletes the cancellation fee policy with the given and Cancellation Fee Policy ID.

          Requirements

          Name Type Description
          supplierapi
          cancellationFeePolicyId

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          404
          • Cancellation fee policy not found
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/cancellationpolicy/{cancellationFeePolicyId}

          • Get information about a cancellation fee policy

          Documentation

          Get information about a cancellation fee policy

          Retrieves information about the given cancellation fee policy.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          cancellationFeePolicyIdnIntegerID of this cancellation fee policy.
          policyNamenStringName of the cancellation fee policy.
          policyDescriptionyStringDescription of cancellation fee policy.
          usePercentModenbooleanWhether the cancellation fee policy uses "percent mode" (true) or "dollar mode" (false).
          cancellationFeeRulesnarrayCollection of CancellationFeeRule objects.
          isDefaultnbooleanWhether this is the default cancellation fee policy for this supplier.

          CancellationFeeRule Object

          Field name Nullable Type Description
          daysBeforeTravelDatenIntegerDuration before voucher travel date that this rule will be in effect. For example, if there are two rules with daysBeforeTravelDate=2 and daysBeforeTravelDate=5, the first rule will be in effect if the voucher is cancelled within two days of travel, and the second rule will be in effect between three and five days before travel.
          feeAmountnFloatAmount of cancellation fee. This value is a percentage between 0 and 100 if the policy is in "percent mode", or a monetary amount in the applicable fare's currency if the policy is in "dollar mode".

          Requirements

          Name Type Description
          supplierapi
          cancellationFeePolicyId

          Status Codes

          Status Code Description
          200
          • Returned when successful
          403
          • Returned when the user is not authorized
          404
          • Cancellation fee policy not found
          500
          • Internal error
        • PUT /{supplierapi}/cancellationpolicy/{cancellationFeePolicyId}

          • Update a new cancellation fee policy

          Documentation

          Update a cancellation fee policy

          Update a cancellation fee policy. All fields are optional; you only need to pass in the fields that you want to change.

          Response

          201 response code on success.

          Requirements

          Name Type Description
          supplierapi
          cancellationFeePolicyId int

          Parameters

          Parameter Type Required? Description
          policyName String false Name of the cancellation fee policy.
          policyDescription String false Additional description information.
          usePercentMode Boolean false Whether the policy is in percent mode (true) or dollar mode (false).
          isDefault Boolean false Whether this policy should become the default cancellation fee policy for this supplier.
          cancellationFeeRules Array false Array of CancellationFeeRule objects.
          cancellationFeeRule.daysBeforeTravelDate Integer true Duration before travel date that this rule will be in effect.
          cancellationFeeRule.feeAmount Float true Amount of cancellation fee when rule applies (a percentage value when policy is in percent mode, or a monetary amount when in dollar mode).

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Cancellation fee policy not found
          500
          • Returned when fatal issues are encountered.
    • Categories

        • GET /{supplierapi}/categories/{name}

          • Get a list of IDs for Certain search type filters like location, activity type, accommodation type etc

          Documentation

          Get a list of categories of a given type

          Returns a list of IDs for the selected Category. Unlike Countries and productCategories the results can be filtered in hierarchies for example passing in the Country code for Australia to the state query will limit the returned states to just those in Australia. The same filtering works for region and locality and the transport activity and accommodation results. In the case of the latter three for example you can return all activities in a region by supplying the region(s) as an argument. Each hierarchy filter (except Country) can be applied multiple times with different values. For example by passing the State ID's for NSW and Queensland to the activities filter you can see all activities that are available in those two states. Note at this point you can not filter by the activity, transport or accommodation type this means you can not get all states that kayaking is available in.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          resultsnArray (Objects)Array of Category objects.

          Category Object

          Field name Nullable Type Description
          idnIntegerID of Category.
          textnStringName of Category.

          Requirements

          Name Type Description
          supplierapi
          name string The name of the Category to return. Can be ('countries', 'states', 'regions', 'locations', 'transport' (transport type), 'activities', 'accommodation').

          Filters

          Name Information
          term
          Datatype string
          Description Limit the returned results to those matching partially the term provided.
          countries
          Datatype integer
          Description Limit results to countryId.
          states
          Datatype string
          Description Limit results to localityIds comma delimited ID's (localities are towns and cities).
          regions
          Datatype string
          Description Limit results to regionIds comma delimited ID's (regions are geographic regions Eg. Whitsunday's.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned on an invalid request.
        • GET /{supplierapi}/category/{categoryIds}

          • Get categories by ID

          Documentation

          Get categories by ID

          Retrieves one or more categories by their ID.

          Requirements

          Name Type Description
          supplierapi
          categoryIds string Comma separated list of IDs of categories to return

          Parameters

          Parameter Type Required? Description
          categoryIds String true List of Category IDs to retrieve.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          404
          • No matching categories found.
          403
          • Returned when the user is not authorized.
          500
          • Internal error.
        • GET /{supplierapi}/params/{paramType}

          • Returns a list of all Product Categories and Fare Type categories

          Documentation

          Returns a list of all Product Categories and ID's

          Get the a list of Product Categories and their ID's. Note at this point it may return Product Categories that the logged in Agent has no Products in. Use the codes returned to limit search results to Products in those Categories. See documentation for /products.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          resultsnArray (Objects)Array of Category objects.

          Category Object

          Field name Nullable Type Description
          idnIntegerID of Category.
          textnStringName of Category.

          Requirements

          Name Type Description
          paramType string
          supplierapi

          Parameters

          Parameter Type Required? Description
          paramType string true One of
          productclasses - List of Product Class Ids
          faretypecategories - List of available Fare Type Category Ids

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
        • GET /{supplierapi}/productCategories/{productId}

          • Get a list of IDs for a Product

          Documentation

          Get list of categories used in the product

          Returns a list of IDs for the selected Product.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          resultsnArray (Objects)Array of Category objects.

          Category Object

          Field name Nullable Type Description
          categoryIdnIntegerID of Category.
          labelnStringName of Category.

          Requirements

          Name Type Description
          productId
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned on an invalid request.
    • Media

        • POST /{supplierapi}/media

          • Upload a image

          Documentation

          Upload a Image

          Files should be uploaded using the Content-Type: multipart/form-data HTTP header. Raw data is expected.

          Supported mime types are: image/jpg and image/jpeg. Maximum file size is 4Mb.

          All image are resized as thumbnails to suit the system. Unless "isLogo" is true, then images will also be resized in system defined "medium" and "large" sizes. Original image will always remain.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          mediaIdnIntegerMedia ID of the image.
          supplierIdnStringSupplier ID associated with image.
          captionyStringOptional image caption.
          pathnStringAbsolute URL path of original sized image.

          Requirements

          Name Type Description
          supplierapi

          Parameters

          Parameter Type Required? Description
          file String true Raw file data.
          caption String false Optional caption text.
          isLogo Boolean false If true, smaller sizes of image provided will not be created.

          Status Codes

          Status Code Description
          200
          • Returned when successful. Returns a media object.
          400
          • Returned when no file received.
          415
          • Returned when file type is invalid or size of file is too large.
          500
          • Internal error.
        • GET /{supplierapi}/media/thumbnails

          • Find all thumbnails for a Supplier

          Documentation

          Find all thumbnails for a Supplier

          The returned result is an array of images. If no images are found a 404 response will be returned.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          mediaIdnIntegerMedia ID of the image.
          pathnStringAbsolute URL path of image.
          originalNamenStringOriginal name of file.
          captionyStringOptional image caption.
          activeyNullUnused.
          mimeTypeyStringMime type of file.

          Requirements

          Name Type Description
          supplierapi

          Parameters

          Parameter Type Required? Description
          productId Integer false Optional Product ID to fetch. This is the same as calling `/supplier/product/123/images` with the size 'sm' argument.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when you do not have access to the requested Product.
          404
          • Returned when Product not found, or no images for the Product are found.
          500
          • Internal error.
        • DELETE /{supplierapi}/media/{mediaId}

          • Delete a given Media Image by ID

          Documentation

          Delete a Media Image by ID

          Using a specific Media ID delete the image associated.

          Warning: This removes the file from the filesystem entirely.

          Response

          See Status Codes

          Requirements

          Name Type Description
          mediaId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when image is still in use by a Product.
          403
          • Returned when you do not have access to the requested Image.
          404
          • Returned when Image not found.
          500
          • Internal error.
        • GET /{supplierapi}/media/{mediaId}

          • Find a given Media Image by ID

          Documentation

          Find a given Media Image by ID

          Using a specific Media ID fetch the image associated.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          mediaIdnIntegerMedia ID of the image.
          pathnStringAbsolute URL path of image.
          captionyStringOptional image caption.
          activeyNullUnused.

          Requirements

          Name Type Description
          mediaId
          supplierapi

          Parameters

          Parameter Type Required? Description
          size String false Optional size of images to fetch. Defaults to small (sm).

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          400
          • Returned when size requested does not match allowed sizes.
          403
          • Returned when you do not have access to the requested Image.
          404
          • Returned when Image not found.
          500
          • Internal error.
    • Packages

        • POST /{supplierapi}/package/{productPricesDetailId}/option

          • Add an option to a Package

          Documentation

          Add an option to a Package

          Adds an option to the Package based on the JSON array of data provided.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          optionIdnIntegerID of the newly created Package Option.

          Requirements

          Name Type Description
          productPricesDetailId
          supplierapi

          Parameters

          Parameter Type Required? Description
          label String true Label for the Package Option.
          ordering Integer true Sort ordering for the Package Option. The ordering for other Options will be adjusted as necessary to accommodate the new Option's ordering.

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail is not found
          500
          • Returned when fatal issues are encountered.
        • DELETE /{supplierapi}/package/{productPricesDetailId}/option/{optionId}

          • Remove an option from a Package

          Documentation

          Delete an Option from a Package

          Deletes the Option with the given ID.

          Requirements

          Name Type Description
          productPricesDetailId
          optionId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail or PackageOption is not found
          500
          • Returned when fatal issues are encountered.
        • PUT /{supplierapi}/package/{productPricesDetailId}/option/{optionId}

          • Update a Package Option

          Documentation

          Update a Package Option

          Update a Package Option. All fields are optional; you only need to pass in the fields that you want to change.

          Response

          204 on success

          Requirements

          Name Type Description
          productPricesDetailId
          optionId
          supplierapi

          Parameters

          Parameter Type Required? Description
          label String false Label for the Package Option.
          ordering Integer false Sort ordering for the Package Option. The ordering of other Options will be adjusted as needed to accommodate this.

          Status Codes

          Status Code Description
          204
          • Returned when update was successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail or PackageOption is not found
          500
          • Returned when fatal issues are encountered.
        • POST /{supplierapi}/package/{productPricesDetailId}/option/{optionId}/product

          • Add a product to the Package Option

          Documentation

          Adds a product to a Package Option

          Adds a product to the given Package Option.

          Response

          201 on success

          Top Level Result Object

          Field name Nullable Type Description
          packageProductIdnIntegerID of the newly created Package Product.

          Requirements

          Name Type Description
          productPricesDetailId
          optionId
          supplierapi

          Parameters

          Parameter Type Required? Description
          productPricesDetailId Integer true ProductPricesDetail to be linked to the PackageProduct.
          quantity Integer false Quantity of the ProductPricesDetail to be included. Defaults to 1.
          ordering Integer true Sort ordering for the PackageProduct. The ordering for other PackageProducts will be adjusted as necessary to accommodate the new PackageProduct's ordering
          rrpDifference Float false Amount to add onto package's base RRP if this Package Product is selected. If null, the difference between the RRP for this product and the RRP for the cheapest product in the option will be used. Must be null for the cheapest product in this package option.

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail or PackageOption is not found
          500
          • Returned when fatal issues are encountered.
        • DELETE /{supplierapi}/package/{productPricesDetailId}/option/{optionId}/product/{packageProductId}

          • Delete a package product

          Documentation

          Delete a Package Product

          Deletes the given Package Product

          Requirements

          Name Type Description
          productPricesDetailId
          optionId
          packageProductId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail or PackageOption is not found
          500
          • Returned when fatal issues are encountered.
        • PUT /{supplierapi}/package/{productPricesDetailId}/option/{optionId}/product/{packageProductId}

          • Edit a package product

          Documentation

          Edit a Package Product

          Edits the given Package Product

          Response

          204 on success

          Requirements

          Name Type Description
          productPricesDetailId
          optionId
          packageProductId
          supplierapi

          Parameters

          Parameter Type Required? Description
          productPricesDetailId Integer false ProductPricesDetail to linked to the PackageProduct.
          quantity Integer false Quantity of the ProductPricesDetail to be included. Defaults to 1.
          ordering Integer false Sort ordering for the PackageProduct. The ordering for other PackageProducts will be adjusted as necessary to accommodate the new PackageProduct's ordering
          rrpDifference Float false Amount to add onto package's base RRP if this Package Product is selected. If null, the difference between the RRP for this product and the RRP for the cheapest product in the option will be used. Must be null for the cheapest product in this package option.

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the ProductPricesDetail or PackageOption is not found
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/package/{productPricesDetailId}/options

          • Get information about a Package's options

          Documentation

          Get information about a package

          Retrieves information about the given package.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          optionIdnIntegerID of the Package Option.
          labelnStringLabel for the Package Option.
          orderingnIntegerSort order for the Package Option (affects order shown in UI).
          packageProductsnArrayArray of Package Product objects.

          PackageProduct Object

          Field name Nullable Type Description
          packageProductIdnIntegerID of the Package Product.
          productPricesDetailIdnIntegerID of the ProductPricesDetail.
          orderingnIntegerSort order for the Package Product (affects order shown in UI).
          quantitynIntegerQuantity of the ProductPricesDetail to be included in the package.
          rrpDifferenceyFloatAmount to add onto package's base RRP if this Package Product is selected. If null, the difference between the RRP for this product and the RRP for the cheapest product in the option will be used. Must be null for the cheapest product in this package option.

          Requirements

          Name Type Description
          productPricesDetailId
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful
          403
          • Returned when the user is not authorized
          404
          • Returned when the ProductPricesDetail is not found
          500
          • Internal error
    • Product Prices

        • POST /{supplierapi}/product/{productId}/price

          • Add a price to a Product

          Documentation

          Add a price to a Product

          Adds a price to the Product based on the JSON array of data provided.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          productPricesDetailsIdnIntegerID of the newly created Product Prices Detail.

          Requirements

          Name Type Description
          productId integer
          supplierapi

          Parameters

          Parameter Type Required? Description
          fareName String true Name of the Fare Type.
          fareTypeCategoryId Integer true ID of Fare Type Category.
          numAdults Integer false Number of adults who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          numChildren Integer false Number of children who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          childMinAge Integer false Minimum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          childMaxAge Integer false Maximum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          earlyBirdLeadDays Integer false Lead time (in days) that the fare must be booked in advance (applies to early bird fares only).
          currency String true Currency code.
          pax Integer true Number of people the price covers.
          fareQtyRestrictions Integer false Total quantity (or multiples of) this fare that agents must select when purchasing this fare.
          duration Integer true Duration of the tour in days.
          durationNights Integer false Duration of the tour in nights.
          periodStart String true Start date of the active period.
          periodEnd String false End date of the active period.
          travelStart String false Start date of the travel period.
          travelEnd String false End date of the travel period.
          productPriceSequence Integer false Sequence of this price.
          rrp Float true Recommended retail price.
          netRate Float true Net or wholesale price.
          levy Float true Any levy charged on top of RRP at point of travel.
          levyDescription string false Description of levy.
          agents array false Ids of the agents that have access to this price.
          packageOnlyFare Boolean false Is this a Package only fare?
          allowOpenDated Boolean false Allow open dated bookings?
          defaultFare Boolean false Is this the default fare for the Product?
          cancellationFeePolicyId integer false ID of product's cancellation fee policy (not applicable if noRefunds is turned on for product).
          allowEmptyRedeemerDetails Boolean false Allow empty redeemer details
          allowFreeSell Boolean false Allow freelance sell
          note String false Any special comments made by Supplier.
          bookingSystemMapping array false Fields used to map product to an external reservation system. Required fields vary according to booking system used; please contact Website Travel for more information.

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/product/{productId}/price/{productPricesDetailId}

          • Get information about a Price

          Documentation

          Get information about a price

          Retrieves information about the given Product Price.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          productPricesDetailsIdnIntegerID of this Price.
          fareNamenStringName of the Fare Type.
          fareTypeCategoryyIntegerID of the Fare Type Category.
          numAdultsyIntegerNumber of adults who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          numChildrenyIntegerNumber of children who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          minChildAgeyIntegerMinimum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          maxChildAgeyIntegerMaximum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          earlyBirdLeadDaysyIntegerLead time (in days) that the fare must be booked in advance (applies to early bird fares only).
          statusnStringCurrent status (e.g. 'Draft', 'History', 'Live').
          currencynStringISO 4217 currency code.
          agentPricingGroupIdnIntegerAgent pricing group ID.
          rrpnFloatRecommended retail price.
          netRatenFloatNet or wholesale price.
          levynFloatAny levy charged on top of RRP at point of travel.
          levyDescriptionnStringDescription of levy.
          periodStartnStringStart date of the active period in format YYYY-MM-DD.
          periodEndnStringEnd date of the active period in format YYYY-MM-DD.
          travelStartnStringStart date of the travel period in format YYYY-MM-DD.
          travelEndnStringEnd date of the travel period in format YYYY-MM-DD.
          paxnIntegerNumber of people the price covers.
          fareQtyRestrictionsnIntegerTotal quantity (or multiples of) this fare that agents must select when purchasing this fare
          durationnIntegerDuration of the tour in days.
          durationNightsnIntegerDuration of the tour in nights.
          packageOnlyFarenBooleanIs this a Package only fare?
          allowOpenDatednBooleanAllow open dated bookings?
          cprFarenBooleanDenotes Control Panel Rate where Agent Pricing Group in use.
          allowEmptyRedeemerDetailsnBooleanAllow empty redeemer details
          allowFreeSellnBooleanAllow freelance sell
          notenStringAny special comments made by Supplier.
          deletePendingnBooleanThis same fare has a delete request pending
          bookingSystemMappingyArrayFields used to map product to an external reservation system. Fields vary according to booking system used; please contact Website Travel for more information.

          Requirements

          Name Type Description
          productId int Product ID.
          productPricesDetailId int Product Prices Details ID.
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful
          400
          • Product or product price not found
          403
          • Returned when the user is not authorized
          500
          • Internal error
        • DELETE /{supplierapi}/product/{productId}/price/{productPricesDetailsId}

          • Remove a price from a Product

          Documentation

          Delete a Price from a Product

          Deletes the Price with the given Product ID and Product Prices Details ID.

          Requirements

          Name Type Description
          productId int Product ID.
          productPricesDetailsId int Prices Details ID.
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • PUT /{supplierapi}/product/{productId}/price/{productPricesDetailsId}

          • Update a Price

          Documentation

          Update a Price

          Update a Price. All fields are optional; you only need to pass in the fields that you want to change. When editing a live price, a copy will be made of the price in draft status, and the ID of this new price will be returned in the response body. This means that the existing live price will remain in effect until the new draft price has gone through our product approval process. On the other hand, edits to draft prices and to MarketPlace prices which have been directly negotiated between supplier and agent will be made to the existing Price, and no response body will be returned.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          productPricesDetailsIdnIntegerID of new Price (if any).

          Requirements

          Name Type Description
          productId int Product ID.
          productPricesDetailIds
          supplierapi string Part of the path to this route (eg \"supplier\" or \"apiv1/supplier\")
          productPricesDetailsId int

          Parameters

          Parameter Type Required? Description
          fareName String false Name of the Fare Type.
          fareTypeCategoryId Integer true ID of Fare Type Category.
          numAdults Integer false Number of adults who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          numChildren Integer false Number of children who are eligible to travel on this fare (applies to fares with family Fare Type Category only).
          childMinAge Integer false Minimum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          childMaxAge Integer false Maximum age for children to be eligible for this fare (applies to fares with child or family Fare Type Category only).
          earlyBirdLeadDays Integer false Lead time (in days) that the fare must be booked in advance (applies to early bird fares only).
          pax Integer false Number of people the price covers.
          fareQtyRestrictions Integer false Total quantity (or multiples of) this fare that agents must select when purchasing this fare
          duration Integer false Duration of the tour in days.
          durationNights Integer false Duration of the tour in nights.
          periodStart String false Start date of the active period.
          periodEnd String false End date of the active period.
          travelStart String false Start date of the travel period.
          travelEnd String false End date of the travel period.
          rrp Float false Recommended retail price.
          netRate Float false Net or wholesale price.
          levy Float false Any levy charged on top of RRP at point of travel.
          levyDescription String false Description of levy.
          packageOnlyFare Boolean false Is this a Package only fare?
          allowOpenDated Boolean false Allow open dated bookings?
          defaultFare Boolean false Is this the default fare for the Product?
          cancellationFeePolicyId integer false ID of product's cancellation fee policy (not applicable if noRefunds is turned on for product).
          allowEmptyRedeemerDetails Boolean false Allow empty redeemer details
          note String false Any special comments made by Supplier.
          bookingSystemMapping array false Fields used to map product to an external reservation system. Required fields vary according to booking system used; please contact Website Travel for more information.
          agents array false Ids of the agents that have access to this price.

          Status Codes

          Status Code Description
          201
          • Returned when new draft price created successfully.
          204
          • Returned when existing draft price updated successfully.
          403
          • Returned when the user is not authorized.
          400
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • POST /{supplierapi}/product/{productId}/price/{productPricesDetailsId}/makedraft

          • Create a draft version of the product price

          Documentation

          Create a draft version of the product price

          Creates a draft version of the product price which can be used to make further edits. While the main route to PUT changes to a product price will automatically create a new draft when necessary and return the new ID, some other routes (e.g. to manage package options) do not.

          The exact behaviour depends on the current status of the product prices detail passed in:

          • If it's already in Draft state no action will be taken
          • If it's in Candidate or Approved state, it will be reverted to Draft state
          • If it's in Live or History state, a duplicate Draft version of the price will be created
          • If it's in Delete Pending or Delete Approved state, an 422 error will be returned

          Requirements

          Name Type Description
          productId
          productPricesDetailsId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when the product or price is not found.
          422
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/product/{productId}/prices

          • Get all prices for a Product

          Documentation

          Get all prices for a Product

          Retrieves information about all Product prices for the Product. Output as for GET product/{productId}/price/{productPricesDetailId} as above.

          Requirements

          Name Type Description
          productId int Product ID.
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          400
          • Product or product price not found.
          403
          • Returned when the user is not authorized.
          500
          • Internal error.
    • Products

        • POST /{supplierapi}/product

          • Create a Product

          Documentation

          Create a Product

          Creates a new Product with the details provided.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          productIdnIntegerID of the newly created Product.

          Note that HTML text fields support a very limited subset of HTML - <p>, <ol>, <ul>, <li> and <br> elements only are permitted, and no attributes may be used on any of these elements. This helps us to prevent malicious content and ensure a consistent visual presentation for all products in our TravelDesk™ system.


          Requirements

          Name Type Description
          supplierapi

          Parameters

          Parameter Type Required? Description
          productName String true Name of the Product.
          mediaId Integer false ID of the Media Image use as Product thumbnail.
          country String true 2-character Country code.
          timezone String false String (e.g. 'Australia/Sydney') representing products timezone. If left empty, will default to Suppliers timezone. Based on timezone database @ https://www.iana.org/time-zones
          productClassId Integer true ID of Product Class (see output from /categories/productclasses).
          apiProviderId Integer false Internal use only, if you've been given a value to use for this property then please do so here.
          externalId Integer false Internal use only, if you've been given a value to use for this property then please do so here.
          rating Decimal false Valid only for Accommodation products. A 'star' rating in the range of 1-5 and accepting of half values e.g. '3.5'.
          teaser String false Brief product description (up to 300 characters).
          description String false Longer product description.
          itineraryDetails Array (Objects) false Array of itinerary details in objects. Example itinerary object: 'itineraryTitle':Day1,'itineraryBreakfast':0, 'itineraryLunch':1, 'itineraryDinner':0, 'itineraryDescription':'Day1 itinerary details'. For itineraryBreakfast/itineraryLunch/itineraryDinner:1 represents included meal, 0 means no meal provided.
          departuresPickups String false Information about departures or pickups.
          extras String false Information about extras which are not included in product price - eg airport transfers, meals.
          voucherInstructions String false Information for customer, including phone numbers and confirmation instructions etc. Has to be more than 20 characters, if not system automatically assign default voucher instruction that is 'Open date tickets are subject to availability, please give 7-14 days notice to book. All bookings must be reconfirmed 24-48 hours in advance. Operator terms & conditions applies.'
          voucherInformationContactDetailsBits Integer false Combined bitwise value of address contact details to be printed on voucher. Depending on your supplier setup this will either be the details of your supplier account or contact details specific to this product. Combination of: Work phone = 1, Fee phone = 2, Address line one = 4, Address line two = 8, Suburb/city = 16, State = 32, Postcode = 64, Cuntry = 128. For example, to display free phone, state and country on vouchers for this product, you would send a value of (2 | 32 | 128) 162. At least one phone number (work phone|free phone) is required.
          agentInstructions String false Additional information for the agent.
          noRefunds Boolean false Disables refunds for the product.
          noRefundsMessage String false Message explaining why refunds are not available.
          cancellationFeePolicyId integer false ID of product's cancellation fee policy (not applicable if noRefunds is turned on).
          contactPhone String false Contact phone number.
          contactEmail String false Contact email address.
          addressLineOne String true First line of Product Address.
          addressLineTwo String false Second line of Product Address.
          addressSuburb String false Suburb of Product Address.
          addressCity String true City of Product Address.
          addressState String false State of Product Address.
          addressPostcode String true Postcode of Product Address.
          startLocation Integer true Category ID of Product start location.
          secondaryLocation Integer false Category ID of Product's secondary location. The use of this field implies that the start location is also the end location; if not, the endLocation field should be specified instead.
          endLocation Integer false Category ID of end location.
          activityTypes Array false Array of Category ID's (Integers) of activity type. Applies to activity, combo tour, day tour and multi-day tour Product classes only.
          accommodationTypes Array false Array of Category ID's (Integers) of accommodation types. Applies to accommodation, combo tour, day tour and multi-day tour Product classes only.
          transportTypes Array false Array of Category ID's (Integers) of transport types. Applies to transport, combo tour, day tour and multi-day tour Product classes only.
          minAgeRecommendation Integer false Minimum recommended age.
          maxAgeRecommendation Integer false Maximum recommended age.
          ageRestriction String false Description of any age restrictions (e.g. for an R18 hostel).
          fitnessRequirements String false Description of fitness requirements.
          minGroupSize Integer false Minimum group size.
          maxGroupSize Integer false Maximum group size.
          dietaryRequirements String false Description of dietary requirements.
          luggageRequirements String false Description of luggage requirements.
          includedItems Array false Array of items included in the fare.
          bringItems Array false Array of items that guest is expected to bring.
          voucherTerms String false Description of terms and conditions, disclaimers etc.
          weekDays Array false Array of days of week that trip departs.. This field is 'Deprecated', recommended to use 'departureDates' field.
          departureDates String false Comma-separated tour departure dates
          recurrenceDate String false Frequency of departure recurrence (e.g. 'Weekly' or 'Monthly'). This field is 'Deprecated', recommended to use 'departureDates' field.
          specialCircumstanceDate String false Description of special dates which affect departure info (e.g. Christmas Day).. This field is 'Deprecated', recommended to use 'departureDates' field.
          operatingPartner String false Operating partner.
          tourCode String false Tour code.
          mandatoryFieldCheckout Array false Array of customer fields absolutely necessary to make the booking. Customer field names: title, phone, emailAddress, dateOfBirth, redeemerCountry, postcode.

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • PUT /{supplierapi}/product/abandonchanges/{productId}

          • Abandon all edits to a product

          Documentation

          Abandon Changes to a Product

          Abandons all changes to a product including products in Candidate, approved, Delete_Pending and Delete_Approved

          Requirements

          Name Type Description
          productId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when no matching record found.
          500
          • Returned when fatal issues are encountered.
        • DELETE /{supplierapi}/product/{productId}

          • Delete a Product

          Documentation

          Delete a Product

          Marks the specified Product for delete. The behaviour of this API method depends on the current state of the Product's ProductsDetails. In some cases it will not be deleted straight away, but a request for the Product to be deleted will be lodged with the Website Travel product management team.

          Requirements

          Name Type Description
          productId
          supplierapi

          Parameters

          Parameter Type Required? Description
          reason String true Required reason for deleting this product.

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when no matching record found.
          500
          • Returned when fatal issues are encountered.
        • PUT /{supplierapi}/product/{productId}

          • Update a Product

          Documentation

          Update a Product

          Updates a product with the details provided. Changes will be made to the Draft ProductsDetail - a new Draft ProductsDetail will be created if the product does not already have one. The draft must be submitted using the POST /product/{productId}/submit method and go through an approval process before the changes take effect. All fields are optional - only pass in the ones which you wish to change.

          Requirements

          Name Type Description
          supplierapi
          productId

          Parameters

          Parameter Type Required? Description
          productName String false Name of the Product.
          mediaId Integer false ID of the Media Image use as Product thumbnail.
          country String false 2-character Country code.
          timezone String false String (e.g. 'Australia/Sydney') representing products timezone. If left empty, will default to Suppliers timezone. Based on timezone database @ https://www.iana.org/time-zones
          productClassId Integer false ID of Product Class (see output from /categories/productclasses).
          rating Decimal false Valid only for Accommodation products. A 'star' rating in the range of 1-5 and accepting of half values e.g. '3.5'.
          teaser String false Brief product description (up to 300 characters).
          description String false Longer product description.
          itineraryDetails Array (Objects) false Array of itinerary details in objects. Example itinerary object: 'itineraryTitle':Day1,'itineraryBreakfast':0, 'itineraryLunch':1, 'itineraryDinner':0, 'itineraryDescription':'Day1 itinerary details'. For itineraryBreakfast/itineraryLunch/itineraryDinner:1 represents included meal, 0 means no meal provided.
          departuresPickups String false Information about departures or pickups.
          extras String false Information about extras which are not included in product price - eg airport transfers, meals.
          voucherInstructions String false Information for customer, including phone numbers and confirmation instructions etc. Has to be more than 20 characters, if not system automatically assign default voucher instruction that is 'Open date tickets are subject to availability, please give 7-14 days notice to book. All bookings must be reconfirmed 24-48 hours in advance. Operator terms & conditions applies.'
          voucherInformationContactDetailsBits Integer false Combined bitwise value of address contact details to be printed on voucher. Depending on your supplier setup this will either be the details of your supplier account or contact details specific to this product. Combination of: Work phone = 1, Fee phone = 2, Address line one = 4, Address line two = 8, Suburb/city = 16, State = 32, Postcode = 64, Cuntry = 128. For example, to display free phone, state and country on vouchers for this product, you would send a value of (2 | 32 | 128) 162. At least one phone number (work phone|free phone) is required.
          agentInstructions String false Additional information for the agent.
          noRefunds Boolean false Disables refunds for the product.
          noRefundsMessage String false Message explaining why refunds are not available.
          cancellationFeePolicyId integer false ID of product's cancellation fee policy (not applicable if noRefunds is turned on).
          contactPhone String false Contact phone number.
          contactEmail String false Contact email address.
          addressLineOne String false First line of Product Address.
          addressLineTwo String false Second line of Product Address.
          addressSuburb String false Suburb of Product Address.
          addressCity String false City of Product Address.
          addressState String false State of Product Address.
          addressPostcode String false Postcode of Product Address.
          startLocation Integer false Category ID of Product start location.
          secondaryLocation Integer false Category ID of Product's secondary location. The use of this field implies that the start location is also the end location; if not, the endLocation field should be specified instead.
          endLocation Integer false Category ID of end location.
          activityTypes Array false Array of category ID's (Integers) of activity type. Applies to activity, combo tour, day tour and multi-day tour Product classes only.
          accommodationTypes Array false Array of category ID's (Integers) of accommodation types. Applies to accommodation, combo tour, day tour and multi-day tour Product classes only.
          transportTypes Array false Array of category ID's (Integers) of transport types. Applies to transport, combo tour, day tour and multi-day tour Product classes only.
          minAgeRecommendation Integer false Minimum recommended age.
          maxAgeRecommendation Integer false Maximum recommended age.
          ageRestriction String false Description of any age restrictions (e.g. for an R18 hostel).
          fitnessRequirements String false Description of fitness requirements.
          minGroupSize Integer false Minimum group size.
          maxGroupSize Integer false Maximum group size.
          dietaryRequirements String false Description of dietary requirements.
          luggageRequirements String false Description of luggage requirements.
          includedItems Array false Array of items included in the fare.
          bringItems Array false Array of items that guest is expected to bring.
          voucherTerms String false Description of terms and conditions, disclaimers etc.
          weekDays Array false Array of days of week that trip departs.. This field is 'Deprecated', recommended to use 'departureDates' field.
          departureDates String false Comma-separated tour departure dates.
          recurrenceDate String false Frequency of departure recurrence (e.g. 'Weekly' or 'Monthly'). This field is 'Deprecated', recommended to use 'departureDates' field.
          specialCircumstanceDate String false Description of special dates which affect departure info (e.g. Christmas Day).. This field is 'Deprecated', recommended to use 'departureDates' field.
          operatingPartner String false Operating partner.
          tourCode String false Tour code.
          mandatoryFieldCheckout Array false Array of customer fields absolutely necessary to make the booking. Customer field names: title, phone, emailAddress, dateOfBirth, redeemerCountry, postcode.

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          400
          • Returned when there is an issue with the data provided.
          500
          • Returned when fatal issues are encountered.
        • DELETE /{supplierapi}/product/{productId}/images

          • Delete Product Images

          Documentation

          Delete Product Images

          Deletes images from being associated with a Product. Does NOT remove the file entirely.

          Response

          See Status Codes

          Requirements

          Name Type Description
          productId
          supplierapi

          Parameters

          Parameter Type Required? Description
          mediaIds String true List of Media ID's associated with a product to remove.

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • No Media ID's were received.
          403
          • Returned when you do not have access to the requested Product.
          404
          • Returned when Product not found or Media ID's supplied were not found.
          500
          • Internal error.
        • GET /{supplierapi}/product/{productId}/images

          • Find Product images for a given Product ID

          Documentation

          Find Product images for a given Product ID

          The returned result is an array of images. If no images are found a 404 response will be returned.

          Example

          /supplier/product/554/images will return any gallery images attached to the product with ID 554.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          mediaIdnIntegerMedia ID of the image.
          pathnStringAbsolute URL path of image.
          captionyStringOptional image caption.
          activeyBooleanTrue on first image in set.

          Requirements

          Name Type Description
          productId
          supplierapi

          Parameters

          Parameter Type Required? Description
          size String false Optional size of images to fetch. Defaults to largest size available.

          Status Codes

          Status Code Description
          200
          • Returned when successful.
          403
          • Returned when you do not have access to the requested Product.
          404
          • Returned when Product not found, or no images for the Product are found.
          500
          • Internal error.
        • PUT /{supplierapi}/product/{productId}/images

          • Set Product Images

          Documentation

          Set Product Images

          Associates already uploaded images to a Product.

          Response

          See Status Codes

          Requirements

          Name Type Description
          productId
          supplierapi

          Parameters

          Parameter Type Required? Description
          mediaIds String true Maximum of 10 per product. If some images were already set, then only the first X will be used to fill the remaining spaces.

          Status Codes

          Status Code Description
          201
          • Returned when successful.
          204
          • Returned when Media ID's supplied matched existing ID's set against Product (no-change).
          400
          • No Media ID's were received.
          403
          • Returned when you do not have access to the requested Product.
          404
          • Returned when Product not found or Media ID's supplied were not found.
          413
          • Returned when maximum number of Product images has already been set.
          500
          • Internal error.
        • POST /{supplierapi}/product/{productId}/submit

          • Submit a draft ProductsDetail for approval

          Documentation

          Submit a draft for approval

          Submits the draft ProductsDetail to be made available for agents to purchase. When this request is made the draft will be moved to candidate status, and then to approved status and finally live status as it moves through the Website Travel approval process.

          Requirements

          Name Type Description
          productId
          supplierapi

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          403
          • Returned when the user is not authorized.
          404
          • Returned when no draft productsdetail is found.
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/product/{productId}/{productStatusCode}

          • Get information about the given ProductsDetail

          Documentation

          Get information about a ProductsDetail

          Retrieves information about the given ProductsDetail

          Response

          Top Level Result Object

          Field name Nullable Type Description
          productIdnIntegerProduct ID
          productStatusCodenstringOne-character product status code
          productStatusnStringProduct status name
          productNamenStringProduct name
          productCountrynString2-character ISO 3166 Country code
          productTimezoneyStringString (e.g. 'Australia/Sydney') representing products timezone. Based on timezone database @ https://www.iana.org/time-zones
          productClassIdnIntegerProduct class ID
          ratingyDecimalValid only for Accommodation products. A 'star' rating in the range of 1-5.
          productClassnStringName of product class
          teasernStringShort product description
          descriptionnStringLong product description
          itineraryDetailsyArray (Object)Array of itineraryDetails Objects. Example:

          "itineraryDetails": [
           {
               "itineraryTitle": "day1",
               "itineraryBreakfast": 0,
               "itineraryLunch": 1,
               "itineraryDinner": 0,
               "itineraryDescription": "day1 details"
           },
           {
               "itineraryTitle": "day2",
               "itineraryBreakfast": 1,
               "itineraryLunch": 0,
               "itineraryDinner": 0,
               "itineraryDescription": "day2 details"
           }
          ]
          For itineraryBreakfast / itineraryLunch / itineraryDinner: 1 - meal provided, 0 - not provided.
          departuresPickupsnStringInformation about pickups, departures or opening hours
          extrasnStringInformation about extras which can be added to the product
          voucherInstructionsnStringInstructions to be printed on the voucher
          voucherInformationContactDetailsBitsnInteger Combined bitwise value of address contact details to be printed on voucher. Depending on your supplier setup this will either be the details of your supplier account or contact details specific to this product. Combination of:

          Work phone = 1
          Free phone = 2
          Address line one = 4
          Address line two = 8
          Suburb/city = 16
          State = 32
          Postcode = 64
          Country = 128
          agentInstructionsnStringInstructions to be made available to agents when placing orders
          noRefundsnBooleanWhether refunds should be permitted for this product. Default value is true.
          noRefundsMessagenStringMessage to be displayed when an attempt is made to get a refund for a no-refunds product
          contactEmailyStringContact email address set for product
          contactPhoneyStringContact phone number set for product
          addressLineOnenStringFirst line of product address
          addressLineTwonStringSecond line of product address
          addressSuburbnStringSuburb line of product address
          addressCitynStringcity line of product address
          addressStatenStringState line of product address
          addressPostcodenStringPostcode of product address
          mediaPathnArrayPath to product's thumbnail image
          mediaIdnIntegerMedia ID of product's thumbnail image
          countriesnArrayList of IDs of countries associated with this product
          statesnArrayList of IDs of states associated with this product
          regionsnArrayList of IDs of regions associated with this product
          locationsnArrayList of IDs of locations associated with this product
          accommodationnArrayList of IDs of accommodation categories associated with this product
          activitiesnArrayList of IDs of activity categories associated with this product
          transportnArrayList of IDs of transport categories associated with this product
          startLocationyIntegerLocation ID of product start location
          endLocationyArrayLocation ID of product end location
          minAgeRecommendationnIntegerMinimum recommended age.
          maxAgeRecommendationnIntegerMaximum recommended age.
          ageRestrictionnStringDescription of any age restrictions (e.g. for an R18 hostel).
          fitnessRequirementnStringDescription of fitness requirements.
          minGroupSizenIntegerMinimum tour group size.
          maxGroupSizenIntegerMaximum tour group size.
          dietaryRequirementsnIntegerDietary requirements.
          luggageRequirementsnStringLuggage requirements.
          includedItemsnArray(String)Description of items included in fare.
          bringItemsnArray(String)Description of items the guest is expected to bring.
          voucherTermsyStringDescription of terms and conditions, disclaimers etc.
          weekDaysyArray(String)Comma-separated list of days of the week that trip departs. This field is "Deprecated", recommended to use "departureDates" field.
          departureDatesyStringComma-separated tour departure dates.
          recurrenceDateyStringFrequency of departure recurrence (e.g. "Weekly", "Daily", "Monthly"). This field is "Deprecated", recommended to use "departureDates" field.
          specialCircumstanceDateyStringDescription of special dates which affect departure info (e.g. Christmas Day).. This field is "Deprecated", recommended to use "departureDates" field.
          operatingPartneryStringOperating partner.
          tourCodeyStringTour code.
          mandatoryFieldCheckoutyArrayArray of customer fields absolutely necessary to make the booking. Customer field names: title, phone, emailAddress, dateOfBirth, redeemerCountry, postcode.

          itineraryDetails Object

          Field name Nullable Type Description
          itineraryTitleyStringitinerary Title Example day 1
          itineraryBreakfastyInteger1 - meal provided. 0 - not provided
          itineraryLunchyInteger1 - meal provided. 0 - not provided
          itineraryDinneryInteger1 - meal provided. 0 - not provided
          itineraryDescriptionyStringDetails of the specific day

          Requirements

          Name Type Description
          productId
          productStatusCode
          supplierapi

          Status Codes

          Status Code Description
          200
          • Returned when successful
          403
          • Returned when the user is not authorized
          500
          • Internal error
        • POST /{supplierapi}/product/{productId}/{productStatusCode}/message

          • Send a message about a ProductsDetail

          Documentation

          Send a message about a ProductsDetail

          Allows you to send a message to the WT team about a specific ProductsDetail record.

          Requirements

          Name Type Description
          productId
          productStatusCode
          supplierapi

          Parameters

          Parameter Type Required? Description
          message String true Message to send.

          Status Codes

          Status Code Description
          204
          • Returned when successful.
          400
          • Returned when there is an issue with the data provided.
          403
          • Returned when the user is not authorized.
          404
          • Returned when no matching record found.
          500
          • Returned when fatal issues are encountered.
        • GET /{supplierapi}/products

          • Get information about the supplier's products

          Documentation

          Get information about the supplier's products

          Retrieves information about the products that belong to the logged-in supplier. Note that the records returned are "productdetails", not products, so there may be multiple records in different statuses with the same product ID.

          Response

          Top Level Result Object

          Field name Nullable Type Description
          fetchedRecordsnIntegerNumber of records returned in this response.
          totalMatchingRecordsnIntegerTotal number of matching records found.
          resultsnArrayList of ProductsDetails objects.

          ProductsDetails Object

          Field name Nullable Type Description
          productIdnIntegerProduct ID
          productNamenStringProduct name
          productStatusCodenCharacterProduct status code
          productStatusnStringProduct status name
          deletePendingnBooleanThis product has a delete request pending

          Requirements

          Name Type Description
          supplierapi

          Filters

          Name Information
          productId
          Datatype Integer
          Required false
          Readonly false
          Description Only return productsdetails for the product with this ID.
          productName
          Datatype String
          Required false
          Readonly false
          Description Only return productsdetails that partially match this name.
          productStatusCode
          Datatype String
          Format One-character product status code
          Required false
          Readonly false
          Description Only return productsdetails that are in this status.
          sortBy
          Datatype String
          Required false
          Readonly false
          Format (bookingId|bookingDate|createdDate|cancelledDate) default bookingId
          Description Sort the results by this field.
          sortDirection
          Datatype String
          Required false
          Readonly false
          Format (asc|desc) default desc
          Description Sort the results in this direction.
          recordsStart
          Datatype Integer
          Required false
          Readonly false
          Format Default 0
          Description Position of first result to return.
          recordsLength
          Datatype Integer
          Required false
          Readonly false
          Format Default 50
          Description Number of results to return.

          Status Codes

          Status Code Description
          200
          • Returned when successful
          403
          • Returned when the user is not authorized
          500
          • Internal error

Example

POST /apiv1/token
Source an authentication token

Request
{"client_id": "333_YourAgent", "client_secret": "9ak0onc2ccw8wwo0c8ww84s4cokowk4wk4coog4ko0ocswok0"}
Response
{"access_token":"MGZhMTQ0NmNkMGJhOGExMWYyMTU0NjJiYjljY2MzOWEwZjRhNmNmMjRkMDcwMTMyMzA3YzVhYWI4MTIzZWI3MA","expires_in":3600,"token_type":"bearer","scope":"api"}