QuickStart - TripApi

Vamos iniciar com a sua primeira integração com o TripApi, para isso vamos precisar completar os seguintes passos:

0️⃣ Mercado de turismo

Caso você não tenha experiência alguma com o mercado de turismo, talvez seja interessante ler estes e-book antes de iniciar a integração:

https://www.envisiontecnologia.com.br/wp-content/uploads/2015/04/MERCADO-DE-TURISMO-EBOOK.pdf

1️⃣ Crie seu conta

Se você ainda não tem uma conta conosco, crie sua conta aqui. Após o rápido processo de setup, lembre-se de copiar o API-KEY gerado.

Caso você já tenha realizado um setup e não tem seu API-KEY em mãos, execute os seguintes passos:

  1. Efetue o login em sua conta no TripApi clicando aqui
  2. Acesse o menu Configurações -> Chaves de API
  3. Click no ícone de copia sua chave de api.

❗️

Guarde seu API-KEY com segurança

O API-KEY gerado terá acesso para efetuar reservas e emissões atreladas a sua conta, então, cuide para que ele seja armazenado com segurança. Não o compartilhe áreas publicas, como repositórios no github.


2️⃣ Obtenha um token de acesso

Antes de efetuar sua primeira busca de vôos, você precisa obter um token de acesso. O TripApi expõe suas chamadas via REST, então você poderá fazer o equivalente ao comando cURL abaixo, em qualquer linguagem de programação capaz de efetuar chamadas HTTP.

Não esqueça de substituir o texto "{{API-KEY}}" pelo API-KEY obtido no passo 1.

curl --location --request POST 'http://authservice.tripapi.com.br/Auth/GenerateToken' \
--header 'Authorization: {{API-KEY}}'

Este request deve retornar a seguinte resposta:

{
    "access_token": "xxxxxxxxxxxxnR5cCI6IkpXVCIsImtpZCI6Ik9rLU9sWmVVcnltMlltRG9DVkNsTCJ9.eyJpc3MiOiJodHRwczovL2Rldi1zZmg0Mjg4bnAzN2ZuajVmLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiIwY3J1VEpxQVpiNHNzVXU1VWZVaDZyWVlzcnppaFR1bEBjbGllbnRzIiwiYXVkIjoiUjNWcGJHaGxjbTFsUlc1MmFYTnBiMjVmTWpBeU16QTNNalF4TnpNMV9HVUlMSEVSTUVFTlZJU0lPTl8zOGVlZWQ0MS0xMDUyLTQ4MTUtYjg0Mi02MDA1ZmMzMTI2ZDEiLCJpYXQiOjE2OTI4NzgyMjksImV4cCI6MTY5Mjk2NDYyOSwiYXpwIjoiMGNydVRKcUFaYjRzc1V1NVVmVWg2cllZc3J6aWhUdWwiLCJzY29wZSI6InJlYWQ6bWVzc2FnZXMiLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMifQ.cD-N7XF6SQmHypfE-NTUXogEcBqE6E5LmTN2ZCQK2rOv8s3H3_BYErFWCorRyw7nVC852I_0DwN7kjVW04f2FFNc9gCfTNbpQpzrZ1628ZgH50mmwLZTEZrlj0WvRiFUGtr8L5-kZV9pLjO5ihup8YhvQLPSptZI40SDCzEOe9iZ2YYNfM8hdUTXzM-ZfaAkP78JrkD2nXuFYECz3pEpQYGuiQWZ1zFXX8mZhMIl00MTh6aHltvlpblQaMXKbjForEcNbd6XuIVprX4_89vuC6AnLbp4XKAAPRDfxQ-7FfzSnbNGXYOUIV_z9NrJG2nKfMeTewS-a9uuFZmf3CISTg",
    "expires_in": 86400,
    "token_type": "Bearer"
}

📘

API Reference

Authentication

Você sempre pode consultar mais detalhes sobre cada método da API, na seção API Reference. Lá, inclusive, você tem acesso a exemplos de chamada em diversas linguagens de programação e documentação completa sobre cada tipo de objeto trafegado

📘

Você também pode executar esta chamada utilizando o guia de utilização do TripApi no Postman acessando a página Postman

3️⃣ Faça sua primeira busca de vôos

Vamos efetuar uma busca do aerporto de GRU (Guarulhos) para o aeroporto de POA (Porto Alegre). As localidades no TripApi Air são orientadas aos seus IATAs. O JSON de request para efetuar uma busca como essa, seria como esse:

{
    "airParameters": {
        "responseGroupType": "Recommendations",
        "cityPairRequests": [
            {
                "originIATA": "GRU",
                "destinationIATA": "POA",
                "departureDate": "2023-11-20"
            },
            {
                "originIATA": "POA",
                "destinationIATA": "GRU",
                "departureDate": "2023-11-25"
            }

        ],
        "onlyDirectFlights": false,
        "baggageAllowance": "Indifferent"
    },
    "travellers": [
        {
            "ageGroup": "Adult",
            "age": 0
        }
    ]
}

O comando cURL correspondente para efetuar esta chamada seria (Não esqueça de substituir o access-token obtido no passo 2):

curl --location 'http://tripapi-air.tripapi.com.br/TripAPIAir/Search' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access-token}}' \
--data '{
    "useShoppingKey": true,
    "airParameters": {
        "responseGroupType": "Recommendations",
        "cityPairRequests": [
            {
                "originIATA": "SAO",
                "destinationIATA": "POA",
                "departureDate": "2023-11-20"
            },
            {
                "originIATA": "POA",
                "destinationIATA": "SAO",
                "departureDate": "2023-11-25"
            }

        ],
        "onlyDirectFlights": false,
        "baggageAllowance": "Indifferent"
    },
    "travellers": [
        {
            "ageGroup": "Adult",
            "age": 0
        }
    ]
}'

Que deve retornar um resultado como o abaixo:

{
    "airResponseData": {
        "priceMatrix": {
            "airCompanies": [
                {
                    "airCompanyCode": "",
                    "cellsByStops": [
                        {
                            "price": {
                                "value": 372070,
                                "currencyCode": "COP"
                            },
                            "numberOfStops": "NonStop"
                        }
                    ],
                    "cellsByAirport": [
                        {
                            "price": {
                                "value": 372070,
                                "currencyCode": "COP"
                            },
                            "airportIata": "BOG"
                        }
                    ]
                }
            ]
        },
        "flightGroups": [
            {
                "supplierSystem": "Avianca",
                "durationInMinutes": 59,
                "flights": [
                    {
                        "arrivalAirportId": 0,
                        "departureAirportId": 0,
                        "durationInMinutes": 59,
                        "layoverInMinutes": 0,
                        "arrivalDateTime": "2023-11-20T11:04:00Z",
                        "departureDateTime": "2023-11-20T10:05:00Z",
                        "cabinType": "FirstClass",
                        "airCompanyCode": "AV",
                        "flightNumber": "9270",
                        "classOfService": "",
                        "aircraftType": "320",
                        "arrivalAirportIATA": "MDE",
                        "departureAirportIATA": "BOG"
                    }
                ],
                "cityPairIndex": 0,
                "arrivalTime": "2023-11-20T11:04:00Z",
                "departureTime": "2023-11-20T10:05:00Z",
                "originIATA": "BOG",
                "destinationIATA": "MDE",
                "stops": 1,
                "loginInformationIdentifier": "1"
            },
            {
                // [Outros FlighGroups]
            }
        ],
        "flightsOptions": [
            {
                "flightGroupIndexes": [
                    0,
                    1
                ],
                "flightGroups": [],
                "brandedFares": [
                    {
                        "faresByFlightGroup": [
                            {
                                "baggagesIncluded": 0,
                                "brandedFareName": "XS",
                                "fareBasis": "SESB0BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PRIVATE FARE",
                                "loginInformationIdentifier": "1"
                            },
                            {
                                "baggagesIncluded": 0,
                                "brandedFareName": "XS",
                                "fareBasis": "SESB0BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PRIVATE FARE",
                                "loginInformationIdentifier": "1"
                            }
                        ],
                        "brandedFareName": "XS",
                        "adtAmounts": {
                            "originalFare": {
                                "value": 278800,
                                "currencyCode": "COP"
                            },
                            "fare": {
                                "value": 278800,
                                "currencyCode": "COP"
                            },
                            "taxes": {
                                "value": 93270,
                                "currencyCode": "COP"
                            },
                            "total": {
                                "value": 372070,
                                "currencyCode": "COP"
                            }
                        },
                        "exchangeFlightDetails": [],
                        "shoppingKey": "eyJmcyI6W3sic2tmcyI6MCwiZiI6eyJleCI6eyJUb2tlbk9mZmVyIjoie1wiT2ZmZXJJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS0xXCIsXCJSZXNwb25zZUlkXCI6XCJTUDFGLTE1MjE2ODQyOTU0MjQ5Njg1OTU5XCIsXCJPZmZlckl0ZW1zXCI6W3tcIk9mZmVySXRlbUlkXCI6XCJTUDFGLTE1MjE2ODQyOTU0MjQ5Njg1OTU5LTEtMVwiLFwiQWdlR3JvdXBcIjowfV0sXCJTZXJ2aWNlSWRcIjpudWxsfSJ9LCJiYWdpbiI6MCwiYmZuIjoiWFMiLCJmYiI6IlNFU0IwQlI5IiwiZmMiOlsiUyJdLCJjYWJ0IjpbMl0sIkZhcmVUeXBlIjowLCJzcyI6IkF2aWFuY2EiLCJhYyI6IlBSSVZBVEUgRkFSRSIsIkxvZ2luSW5mb3JtYXRpb25JZGVudGlmaWVyIjoiMSJ9fSx7InNrZnMiOjEsImYiOnsiZXgiOnsiVG9rZW5PZmZlciI6IntcIk9mZmVySWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTktMVwiLFwiUmVzcG9uc2VJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OVwiLFwiT2ZmZXJJdGVtc1wiOlt7XCJPZmZlckl0ZW1JZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS0xLTFcIixcIkFnZUdyb3VwXCI6MH1dLFwiU2VydmljZUlkXCI6bnVsbH0ifSwiYmFnaW4iOjAsImJmbiI6IlhTIiwiZmIiOiJTRVNCMEJSOSIsImZjIjpbIlMiXSwiY2FidCI6WzJdLCJGYXJlVHlwZSI6MCwic3MiOiJBdmlhbmNhIiwiYWMiOiJQUklWQVRFIEZBUkUiLCJMb2dpbkluZm9ybWF0aW9uSWRlbnRpZmllciI6IjEifX1dLCJpZCI6IjQifQ==",
                        "loginInformationIdentifier": "1",
                        "supplierSystemName": "Avianca"
                    },
                    {
                        "faresByFlightGroup": [
                            {
                                "baggagesIncluded": 1,
                                "brandedFareName": "M",
                                "fareBasis": "SESB2BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PUBLIC FARE",
                                "loginInformationIdentifier": "1"
                            },
                            {
                                "baggagesIncluded": 1,
                                "brandedFareName": "M",
                                "fareBasis": "SESB2BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PUBLIC FARE",
                                "loginInformationIdentifier": "1"
                            }
                        ],
                        "brandedFareName": "M",
                        "adtAmounts": {
                            "originalFare": {
                                "value": 478800,
                                "currencyCode": "COP"
                            },
                            "fare": {
                                "value": 478800,
                                "currencyCode": "COP"
                            },
                            "taxes": {
                                "value": 131270,
                                "currencyCode": "COP"
                            },
                            "total": {
                                "value": 610070,
                                "currencyCode": "COP"
                            }
                        },
                        "exchangeFlightDetails": [],
                        "shoppingKey": "eyJmcyI6W3sic2tmcyI6MCwiZiI6eyJleCI6eyJUb2tlbk9mZmVyIjoie1wiT2ZmZXJJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS00MDFcIixcIlJlc3BvbnNlSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTlcIixcIk9mZmVySXRlbXNcIjpbe1wiT2ZmZXJJdGVtSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTktNDAxLTFcIixcIkFnZUdyb3VwXCI6MH1dLFwiU2VydmljZUlkXCI6bnVsbH0ifSwiYmFnaW4iOjEsImJmbiI6Ik0iLCJmYiI6IlNFU0IyQlI5IiwiZmMiOlsiUyJdLCJjYWJ0IjpbMl0sIkZhcmVUeXBlIjowLCJzcyI6IkF2aWFuY2EiLCJhYyI6IlBVQkxJQyBGQVJFIiwiTG9naW5JbmZvcm1hdGlvbklkZW50aWZpZXIiOiIxIn19LHsic2tmcyI6MSwiZiI6eyJleCI6eyJUb2tlbk9mZmVyIjoie1wiT2ZmZXJJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS00MDFcIixcIlJlc3BvbnNlSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTlcIixcIk9mZmVySXRlbXNcIjpbe1wiT2ZmZXJJdGVtSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTktNDAxLTFcIixcIkFnZUdyb3VwXCI6MH1dLFwiU2VydmljZUlkXCI6bnVsbH0ifSwiYmFnaW4iOjEsImJmbiI6Ik0iLCJmYiI6IlNFU0IyQlI5IiwiZmMiOlsiUyJdLCJjYWJ0IjpbMl0sIkZhcmVUeXBlIjowLCJzcyI6IkF2aWFuY2EiLCJhYyI6IlBVQkxJQyBGQVJFIiwiTG9naW5JbmZvcm1hdGlvbklkZW50aWZpZXIiOiIxIn19XSwiaWQiOiI0In0=",
                        "loginInformationIdentifier": "1",
                        "supplierSystemName": "Avianca"
                    },
                    {
                        "faresByFlightGroup": [
                            {
                                "baggagesIncluded": 1,
                                "brandedFareName": "L",
                                "fareBasis": "SESB3BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PUBLIC FARE",
                                "loginInformationIdentifier": "1"
                            },
                            {
                                "baggagesIncluded": 1,
                                "brandedFareName": "L",
                                "fareBasis": "SESB3BR9",
                                "flightClasses": [
                                    "S"
                                ],
                                "cabinTypes": [
                                    "Economy"
                                ],
                                "fareType": "Public",
                                "supplierSystem": "Avianca",
                                "agreementCode": "PUBLIC FARE",
                                "loginInformationIdentifier": "1"
                            }
                        ],
                        "brandedFareName": "L",
                        "adtAmounts": {
                            "originalFare": {
                                "value": 538800,
                                "currencyCode": "COP"
                            },
                            "fare": {
                                "value": 538800,
                                "currencyCode": "COP"
                            },
                            "taxes": {
                                "value": 142670,
                                "currencyCode": "COP"
                            },
                            "total": {
                                "value": 681470,
                                "currencyCode": "COP"
                            }
                        },
                        "exchangeFlightDetails": [],
                        "shoppingKey": "eyJmcyI6W3sic2tmcyI6MCwiZiI6eyJleCI6eyJUb2tlbk9mZmVyIjoie1wiT2ZmZXJJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS04MDFcIixcIlJlc3BvbnNlSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTlcIixcIk9mZmVySXRlbXNcIjpbe1wiT2ZmZXJJdGVtSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTktODAxLTFcIixcIkFnZUdyb3VwXCI6MH1dLFwiU2VydmljZUlkXCI6bnVsbH0ifSwiYmFnaW4iOjEsImJmbiI6IkwiLCJmYiI6IlNFU0IzQlI5IiwiZmMiOlsiUyJdLCJjYWJ0IjpbMl0sIkZhcmVUeXBlIjowLCJzcyI6IkF2aWFuY2EiLCJhYyI6IlBVQkxJQyBGQVJFIiwiTG9naW5JbmZvcm1hdGlvbklkZW50aWZpZXIiOiIxIn19LHsic2tmcyI6MSwiZiI6eyJleCI6eyJUb2tlbk9mZmVyIjoie1wiT2ZmZXJJZFwiOlwiU1AxRi0xNTIxNjg0Mjk1NDI0OTY4NTk1OS04MDFcIixcIlJlc3BvbnNlSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTlcIixcIk9mZmVySXRlbXNcIjpbe1wiT2ZmZXJJdGVtSWRcIjpcIlNQMUYtMTUyMTY4NDI5NTQyNDk2ODU5NTktODAxLTFcIixcIkFnZUdyb3VwXCI6MH1dLFwiU2VydmljZUlkXCI6bnVsbH0ifSwiYmFnaW4iOjEsImJmbiI6IkwiLCJmYiI6IlNFU0IzQlI5IiwiZmMiOlsiUyJdLCJjYWJ0IjpbMl0sIkZhcmVUeXBlIjowLCJzcyI6IkF2aWFuY2EiLCJhYyI6IlBVQkxJQyBGQVJFIiwiTG9naW5JbmZvcm1hdGlvbklkZW50aWZpZXIiOiIxIn19XSwiaWQiOiI0In0=",
                        "loginInformationIdentifier": "1",
                        "supplierSystemName": "Avianca"
                    }
                ]
            },
            {
                // [Outros FlighOptions]
            }
        ],
    },
    "travellers": [
        {
            "ageGroup": "Adult"
        }
    ],
    "executionInformations": [
        {
            "supplierSystem": "Avianca",
            "totalSupplierSearchTime": 5731.9708,
            "waitingSupplierTime": 3177.0854
        }
    ],
    "errors": [
        "There was an error searching on ClickBus"
    ]
}

📘

API Reference

Busca de vôos

Consulte em mais detalhes a chamada de busca de vôos e seus diversos exemplos.

📘

Você também pode executar esta chamada utilizando o guia de utilização do TripApi no Postman acessando a página Postman


🏁 Pronto!

Sua primeira busca foi efetuada com sucesso!

Agora é hora de entender como interpretar o resultado e como funciona o modelo de objetos envolvido em uma busca de vôos e posteriormente efetuar um fluxo completo de reserva e emissão.


🏃 Próximos passos

  1. Entenda o resultado de busca Compressão lógica
  2. Busca de vôos
  3. Exemplos de fluxo do Postman
  4. Documentação no Swagger
  5. Entre Em mais detalhes