openapi: 3.2.0 info: version: 2.0.0 title: Trip Ninja API Documentation Super Trip API description: "

Introduction

\nTrip Ninja uses a REST API with requests and responses in JSON format. For development and testing, the pre-production servers\nare to be used. Once ready for live use, access to the production servers will be provided. All search endpoints have both production\nand pre-production endpoints - these correspond to the GDS’s production and pre-production services, and can be used as desired.
\n

Trip Ninja API URLs

\n\nPre-Production: https://preprodapi.tripninja.io\n\nFor security, Trip Ninja’s servers are only accessible from whitelisted IPs. Please contact your account manager to whitelist IPs you\nwill be using.\n\nBefore you start ensure that:
\n - IP addresses have been provided to be whitelisted for our servers.
\n - PCC / OfficeID emulation via Trip Ninja’s PCC/OfficeID has been set up.
\n - API username and password have been provided by Trip Ninja.
\n\n

Workflow

\nThe following diagram shows the typical data flow of API calls to Trip Ninja for a FareStructure integration with both a partner website\nand metasearch as sources.\n\n![Workflow diagram](https://s3.amazonaws.com/tn-api-docs/FlowChart1-01.png)\n\nNote: the following three endpoints (Price Confirmation, PNR Creation, Ticket Issuance) are simply to report to us that you have done these API calls to your GDS.\nPrice Confirmation, PNR creation, and Ticket Issuance should follow your existing process (as per the following diagram).\n\n![Workflow diagram](https://s3.amazonaws.com/tn-api-docs/FlowChart1-02.png)\n\n

Authentication

\nTrip Ninja uses Basic Authentication standards. Simply encode your username and password string using base64 and pass it in the\nauthorization headers. See the python example below on how this is done. In the example, the payload and API endpoint url are not\nshown.\n\nPython Example:\n\n
\nimport base64\nauth = base64.b64encode(\"USERNAME:PASSWORD\")\nheaders = {\n    'authorization': \"Basic \"+ auth,\n}\nresponse = requests.post(url, headers=headers, data=json.dumps(payload))\n
\n\n# Error Codes\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
IE01Need minimum 2 destinations
IE02Duplicate city in list
IE09Can't run any queries for flight dates in the past
IE10Incorrect city_type, expected one of ['C', 'A']
IE16Please provide a PCC
IE17Invalid carrier
IE19Incorrect region, expected one of 'emea', 'apac', 'americas'
IE20Incorrect provider, expected one of '1V','1G','1P','1A'
IE21Wrong currency
IE22Not a valid cabin option. expected one of 'E' , 'PE', 'SE', 'BC','FC', 'PFC'
IE23Not a valid alliance. Expected one of *A, *S, *O
IE24Travellers Type does not meet expected criteria. Should be a list having between 0 and 10 values
IE26Exclude_carriers, alliance and permitted_carriers are mutually exclusive - please choose one
IE27Num_results should be an integer between 50 and 250
IE28Refundable parameter must be boolean value true or false
IE29Invalid Traveller type
IE30Incorrect value for single_pnr, must be boolean
IE31LCC token not associated with user
IE32Incorrect value for include_itineraries, must be boolean
IE33Stops must be one of 'any', 'direct', '1', '2'
IE34Incorrect value for no_overnight_layovers, must be boolean
IE36Invalid LCC name
\n" x-logo: url: https://s3.amazonaws.com/tn-api-docs/trip_ninja_logo.png altText: Trip Ninja logo href: https://www.tripninja.io/ servers: - url: https://preprodapi.tripninja.io description: Pre-Production server tags: - name: Super Trip paths: /super_trip/{id}/: put: parameters: - in: path name: id required: true schema: type: string description: Super Trip ID provided example: aksdhiywehe96wewe76 summary: Super Trip Nickname description: This can be used to add a nickname to a super trip operationId: SuperTrip requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperTripUpdateRequest' responses: 200: description: Success content: application/json: schema: type: object properties: message: type: string example: success 500: description: Unable to update the nickname content: application/json: schema: type: object properties: message: type: string example: Unable to update the nickname. Internal Error tags: - Super Trip /super_trip/{id}/part/: delete: parameters: - in: path name: id required: true schema: type: string description: Super Trip ID provided example: aksdhiywehe96wewe76 summary: Super Trip Nickname description: This can be used to remove flights/hotels/cars from a super trip operationId: SuperTripPartDeletion requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperTripPartDeletionRequest' responses: 200: description: Success content: application/json: schema: $ref: '#/components/schemas/SuperTripPartDeletionResponse' 500: description: Unable to update the nickname content: application/json: schema: type: object properties: message: type: string example: Unable to update the nickname. Internal Error tags: - Super Trip components: schemas: SuperTripPartDeletionRequest: type: object properties: part_type: type: string description: Super Trip Part Type example: itinerary enum: - itinerary - hotel - car part_id: type: string description: Super Trip Part ID. (itinerary_id, hotel_reservation_id, car_rental_id) example: hgasd65ashdg7a6w5 SuperTripUpdateRequest: type: object properties: nickname: type: string description: Super Trip Nick name example: My Super Trip SuperTripPartDeletionResponse: type: object properties: markup: type: number description: Only if part type is flight. Trip Ninja provided markup for all flights in this supertrip, updated based on the removed flight example: 20.0