Pular para o conteúdo principal

Pesquisa e Disponibilidade de Voos

A etapa de pesquisa consulta dezenas de provedores (GDSs Sabre e Amadeus, conexões diretas Gol, Latam NDC, Azul e companhias internacionais) em paralelo para retornar voos, conexões, horários, classes e opções de tarifas.


1. Recuperar Sistemas de Pesquisa (/RecuperarSistemasPesquisa)​

Identifica quais conexões e fornecedores aéreos estão habilitados para a agência no par Origem/Destino solicitado.

  • Método: POST
  • Rota: /api/V2/Voos/RecuperarSistemasPesquisa

1.1 Parâmetros da Requisição (Request)​

CampoTipoObrigatórioDescrição e Regras
LoginStringSimLogin operacional da agência no Travellink.
SenhaStringSimSenha da credencial da agência.
OrigemStringSimCódigo IATA de 3 letras do aeroporto ou cidade de origem (ex: SAO, GRU).
DestinoStringSimCódigo IATA de 3 letras do aeroporto ou cidade de destino (ex: RIO, GIG).
ClienteIdIntegerNãoID do cliente corporativo (subagência/empresa). Nulo se padrão.
transacaoIdStringNãoGUID exclusivo para rastreabilidade de telemetria nos logs.

Exemplo de Request​

{
"Login": "AGENCIA_LOGIN",
"Senha": "AGENCIA_PASSWORD",
"Origem": "SAO",
"Destino": "RIO",
"transacaoId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}

1.2 Estrutura da Resposta (Response)​

CampoTipoDescrição
SistemasArrayLista de sistemas habilitados para a rota.
Sistemas[].IdIntegerID numérico do sistema. Pode ser utilizado no campo Sistema ou Sistemas da disponibilidade para filtrar fornecedores específicos.
Sistemas[].NomeStringNome comercial do fornecedor (ex: Sabre, Gol Linhas Aereas, Latam NDC).
ExceptionObjetoNulo em caso de sucesso; preenchido se houver falha de validação.

Exemplo de Response​

{
"Data": "2026-10-15T10:00:00",
"SessaoExpirada": false,
"Sistemas": [
{ "Id": 1, "Nome": "Sabre" },
{ "Id": 2, "Nome": "Gol Linhas Aereas" },
{ "Id": 5, "Nome": "Latam NDC" },
{ "Id": 8, "Nome": "Azul Linhas Aereas" }
],
"Exception": null
}

2. Disponibilidade de Voos (/Disponibilidade)​

Executa a pesquisa massiva de voos de acordo com os critérios de rota, datas, passageiros e filtros de conveniência.

  • Método: POST
  • Rota: /api/V2/Voos/Disponibilidade
  • Timeout Recomendado: 60 a 90 segundos (a chamada interroga múltiplos sistemas externos de forma assíncrona).

2.1 Especificação Completa dos Campos de Requisição (Request)​

CampoTipoObrigatórioDescrição Detalhada e Regras de Negócio
LoginStringSimLogin operacional da agência.
SenhaStringSimSenha da credencial.
OrigemStringSim*Código IATA da origem (ex: GIG). *Opcional apenas se MultiplosTrechos for utilizado.
DestinoStringSim*Código IATA do destino (ex: GRU). *Opcional apenas se MultiplosTrechos for utilizado.
DataIdaDateTimeSim*Data e hora de partida (padrão ISO 8601: YYYY-MM-DDTHH:mm:ss).
DataVoltaDateTimeNãoData e hora de retorno (padrão ISO 8601). Obrigatório para buscas de ida e volta convencionais.
QuantidadeAdultosIntegerSimQuantidade de passageiros adultos (ADT). Mínimo: 1, Máximo: 9 por reserva.
QuantidadeCriancasIntegerNãoQuantidade de crianças de 2 a 11 anos (CHD). Padrão: 0.
QuantidadeBebesIntegerNãoQuantidade de bebês de colo de até 23 meses (INF). Padrão: 0. Máximo: 1 bebê por adulto.
FlexBooleanNãoModo de combinação de itinerário:
• true: Retorna itinerários casados (ida + volta) em ViagensTrecho1. Ideal para voos internacionais com tarifas combinadas.
• false: Retorna listas independentes de ida (ViagensTrecho1) e volta (ViagensTrecho2) para combinação livre. Padrão: false.
CompanhiasPreferenciaisArray<String>NãoLista de códigos IATA de companhias aéreas para priorizar quando Flex: true (ex: ["G3", "LA", "TP"]).
CabineStringNãoFiltro de classe de cabine desejada: "Economica", "PremiumEconomy", "Executiva", "Primeira".
BuscarVoosComBagagemBooleanNãotrue para incluir no resultado tarifas que possuem franquia de bagagem despachada inclusa.
BuscarVoosSemBagagemBooleanNãotrue para incluir tarifas básicas sem bagagem despachada.
ApenasVoosComBagagemBooleanNãotrue para restringir estritamente a busca e descartar qualquer tarifa sem bagagem.
ApenasVoosDiretosBooleanNãotrue para filtrar apenas voos sem escalas ou conexões.
ApenasSemTrocaDeAeroportoBooleanNãotrue para eliminar conexões que exigem deslocamento terrestre entre aeroportos diferentes na mesma cidade (ex: pousar em SDU e decolar de GIG).
QuantidadeDeVoosIntegerNãoLimite máximo de opções na resposta. Enviar 0 para retornar todas as opções encontradas.
SistemaIntegerNão0 para pesquisar em todos os fornecedores da agência, ou o ID numérico específico obtido em RecuperarSistemasPesquisa.
SistemasArray<Integer>NãoLista de IDs numéricos para pesquisar em múltiplos fornecedores selecionados (ex: [1, 2]).
TipoDeTarifaIntegerNão1: Apenas tarifas privadas/acordadas (inclui tarifas de operadora).
2: Apenas tarifas públicas de prateleira.
RecomendacaoBooleanNãotrue para calcular e retornar o bloco de recomendações de melhor tarifa por fornecedor.
TimeoutIntegerNãoTempo limite máximo de espera em segundos para o motor aguardar os provedores mais lentos.
MultiplosTrechosArrayNãoLista de trechos para busca com múltiplos destinos (Open-Jaw / Multi-City). Detalhado abaixo.
MultiplosTrechos[].OrigemStringSe MultiTrechoCódigo IATA de decolagem do trecho.
MultiplosTrechos[].DestinoStringSe MultiTrechoCódigo IATA de pouso do trecho.
MultiplosTrechos[].DataDateTimeSe MultiTrechoData da viagem do trecho em ISO 8601.

2.2 Estrutura da Resposta (Response)​

CampoTipoDescrição
DataDateTimeCarimbo de data/hora do processamento da busca.
TempoPesquisaStringDuração total da busca junto aos provedores (ex: "00:00:03.140").
RotaString"D" para rota puramente doméstica, "I" para rota internacional.
CiaArrayRelação de companhias aéreas retornadas (CodigoIata, Descricao).
ViagensTrecho1ArrayLista de opções de voo para o trecho de ida (ou opções casadas quando Flex: true).
ViagensTrecho2ArrayLista de opções de voo para o trecho de volta (preenchida quando Flex: false).
ViagensMultiplosTrechosArrayMatriz de trechos retornados quando a busca utilizou MultiplosTrechos.
RecomendacoesArrayOpções recomendadas de menor preço por fornecedor.
ExceptionObjetoNulo em caso de sucesso; preenchido se houver recusa ou falha geral de negócio.
ExceptionPorSistemaArrayLista com o diagnóstico e mensagens individuais de fornecedores específicos.

Detalhamento de cada Viagem (Itens dentro de ViagensTrecho1 / ViagensTrecho2)​

PropriedadeTipoDescrição
IdentificacaoDaViagemStringChave criptografada do voo (tripKey). Identificador obrigatório para as etapas de /Tarifar e /Reservar. Validade: 15 a 20 minutos.
CombinadaBooleantrue se a opção já representa ida e volta integradas em um único bilhete.
DuracaoIntegerDuração total da viagem em minutos (somando tempos de voo e conexões).
PrecoTotalDecimalValor bruto total consolidado (tarifa + taxas de embarque + serviços) para todos os passageiros da pesquisa.
CiaMandatoriaObjetoCompanhia aérea responsável pela placa e regras tarifárias (CodigoIata, Descricao).
FornecedorObjetoSistema de onde o voo foi originado (Id, Nome).
BagagensArrayDescrição da franquia de bagagem inclusa na tarifa (ex: "1 peça de 23kg", "Sem bagagem").
SegmentosArrayTrechos de voo que compõem o itinerário (escalas e conexões).
Segmentos[].NumeroDoVooStringNúmero do voo comercial (ex: "1234").
Segmentos[].CiaObjetoCompanhia aérea operadora do segmento (CodigoIata, Descricao).
Segmentos[].OrigemObjetoAeroporto de decolagem (CodigoIata, Descricao).
Segmentos[].DestinoObjetoAeroporto de pouso (CodigoIata, Descricao).
Segmentos[].DataSaidaDateTimeData e horário de decolagem no fuso local.
Segmentos[].DataChegadaDateTimeData e horário de pouso no fuso local.
Segmentos[].ClasseStringCódigo da classe tarifária (ex: "Y", "W", "B", "O").
Segmentos[].CabineStringCabine de serviço ("Economica", "Executiva").
Segmentos[].EquipamentoStringTipo/modelo de aeronave (ex: "Boeing 737-800").
Segmentos[].DuracaoIntegerDuração do segmento em minutos.

3. Exemplos Práticos de Pesquisa por Cenário​

Cenário A: Busca Ida e Volta com Combinação Dinâmica (Flex: false)​

Permite ao passageiro escolher a ida na companhia A e a volta na companhia B.

Request​

{
"Login": "AGENCIA_LOGIN",
"Senha": "AGENCIA_PASSWORD",
"Origem": "GIG",
"Destino": "GRU",
"DataIda": "2026-10-15T00:00:00",
"DataVolta": "2026-10-22T00:00:00",
"QuantidadeAdultos": 1,
"QuantidadeCriancas": 0,
"QuantidadeBebes": 0,
"BuscarVoosComBagagem": true,
"BuscarVoosSemBagagem": true,
"Flex": false,
"Sistema": 0
}

Comportamento no Response:​

  • ViagensTrecho1: Contém as opções disponíveis de Ida.
  • ViagensTrecho2: Contém as opções disponíveis de Volta.
  • Impacto no /Tarifar e /Reservar: O cliente deverá enviar IdentificacaoDaViagem (da ida) E IdentificacaoDaViagemVolta (da volta).

Cenário B: Busca com Itinerário Casado pelo Menor Preço (Flex: true)​

Ideal para voos internacionais e conexões onde a tarifa de ida depende do voo de volta (tarifas casadas de round-trip).

Request​

{
"Login": "AGENCIA_LOGIN",
"Senha": "AGENCIA_PASSWORD",
"Origem": "GRU",
"Destino": "LIS",
"DataIda": "2026-10-15T00:00:00",
"DataVolta": "2026-10-25T00:00:00",
"QuantidadeAdultos": 1,
"QuantidadeCriancas": 0,
"QuantidadeBebes": 0,
"BuscarVoosComBagagem": true,
"BuscarVoosSemBagagem": false,
"Flex": true,
"CompanhiasPreferenciais": ["TP", "LA"],
"Cabine": "Economica",
"Sistema": 0
}

Comportamento no Response:​

  • ViagensTrecho1: Já contém o itinerário completo (os segmentos de ida e os segmentos de volta combinados).
  • ViagensTrecho2: Vem vazia ([]).
  • Impacto no /Tarifar e /Reservar: O cliente envia apenas IdentificacaoDaViagem.

Cenário C: Busca de Múltiplos Trechos / Multi-Cidades (MultiplosTrechos)​

Para viagens complexas (ex: São Paulo ➔ Paris, Londres ➔ São Paulo).

Request​

{
"Login": "AGENCIA_LOGIN",
"Senha": "AGENCIA_PASSWORD",
"QuantidadeAdultos": 2,
"QuantidadeCriancas": 0,
"QuantidadeBebes": 0,
"MultiplosTrechos": [
{
"Origem": "GRU",
"Destino": "CDG",
"Data": "2026-11-05T00:00:00"
},
{
"Origem": "LHR",
"Destino": "GRU",
"Data": "2026-11-20T00:00:00"
}
],
"Cabine": "Economica",
"Sistema": 0
}

Comportamento no Response:​

  • Os voos retornam agrupados dentro de ViagensMultiplosTrechos.
  • Cada opção possui seu respectivo IdentificacaoDaViagem por percurso.