Pular para o conteúdo principal

Criação, Consulta e Gestão de Reservas (PNR)

A etapa de reserva aloca os assentos em definitivo nas classes tarifárias congeladas durante a tarifação, registra os dados dos passageiros no inventário do fornecedor e gera o código localizador único de 6 caracteres (Passenger Name Record - PNR).


1. Criar Reserva (/Reservar)​

Gera o PNR com os passageiros, contatos de emergência e regras corporativas. Pode opcionalmente incluir dados de faturamento para disparar a emissão no mesmo ato (Emitir: true).

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

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

ReservaRQ suporta todos os campos de reserva operacional e herda as propriedades de faturamento de RequestComPagamento:

CampoTipoObrigatórioDescrição Detalhada
TripIdentificationStringCondicionalChave tripKey da viagem de ida (ou do itinerário completo combinado quando Flex: true).
ReturnTripIdentificationStringCondicionalChave tripKey do voo de volta (quando a pesquisa foi realizada com Flex: false).
MultipleTripsArrayCondicionalLista de objetos { "TripIdentification": "chave" } para viagens multi-trecho.
PassengersArraySimLista completa com os dados dos passageiros (detalhado abaixo).
ContactsArraySimContatos de emergência e envio de confirmação da reserva.
SelectedClassesArrayNãoRevalidação de classes e famílias (FlightNumber, ClassOfService, FareBasis, Family).
EnablePassengerContactFlowBooleanNãoSinaliza a adoção do fluxo normativo da IATA (Resolução 830d) para coleta de contato direto do passageiro.
PricingBestPriceBooleanNãoValida se há menor preço disponível no instante do bloqueio de assento.
PricingBestFamilyBooleanNãoValida a menor tarifa dentro da família selecionada.
UpsellOptionStringNãoIdentificador da opção de upsell escolhida na tarifação.
FlyBizStringNãoCódigo de benefício corporativo VoeBiz da GOL.
CorporateLoyaltyCardsArrayNãoCartões de fidelidade corporativa da empresa cliente.
CorporateDataArrayNãoCampos corporativos flexíveis adicionais (Campo, Valor, Tipo).
RavFeeChangeObjetoNãoPermite à agência informar ajuste autorizado de taxas RAV/FEE.
SolicitanteStringNãoNome da pessoa ou gestor que solicitou a emissão corporativa.
DepartamentoStringNãoDepartamento ou setor do solicitante corporativo.
MatriculaStringNãoMatrícula funcional do passageiro/solicitante.
RequisicaoStringNãoNúmero da ordem de compra interna ou autorização (PO).
CentroDeCustoObjetoNãoCentro de custo corporativo (Id, Codigo, Descricao).
UnidadeDeNegocioIdIntegerNãoIdentificador da unidade de negócio no Travellink.
TourCode / ManualTourCodeStringNãoCódigo de Tour Code acordado com a companhia aérea.
PaymentObjetoNãoEstrutura de pagamento para emissão imediata no mesmo comando (se informado, executa o fluxo integrado de faturamento).

1.2 Detalhamento Exaustivo de Passengers (Passageiro)​

PropriedadeTipoObrigatórioRegras de Negócio e Validações
FaixaEtariaStringSim"ADT" (Adulto a partir de 12 anos), "CHD" (Criança de 2 a 11 anos e 11 meses) ou "INF" (Bebê de colo até 23 meses).
NomeStringSimPrimeiro nome do passageiro (ASCII maiúsculo, sem acentos, sem cedilhas, sem apóstrofos).
NomeDoMeioStringNãoNome do meio (Middle Name), caso o canal suporte preenchimento separado.
SobrenomeStringSimÚltimo sobrenome (ou sobrenome com agnome, ex: SILVA JUNIOR). Sem caracteres especiais.
SexoStringSim"M" para masculino ou "F" para feminino.
NascimentoDateTimeSimData de nascimento no padrão ISO 8601 ("AAAA-MM-DDTHH:mm:ss"). Obrigatório para CHD e exigido pela maioria das companhias para ADT.
EmailStringRecomendadoE-mail do passageiro para notificações de voo da companhia aérea.
TelefoneObjetoRecomendadoContato telefônico do passageiro (NumeroDDI, NumeroDDD, NumeroTelefone).
RecusarEnvioDoEmailParaFornecedorBooleanNãotrue se o passageiro formalmente recusou fornecer o e-mail à companhia aérea (IATA 830d).
RecusarEnvioDoTelefoneParaFornecedorBooleanNãotrue se o passageiro formalmente recusou fornecer telefone à companhia aérea.
DocumentoObjetoSimDocumento oficial de identificação do passageiro (veja seção 1.3).
PassaporteObjetoSe InternacionalDados do passaporte para voos internacionais (Numero, PaisEmissor, Nacionalidade, Validade).
RedressStringNãoNúmero de Redress do passageiro para voos nos EUA (TSA Secure Flight).
FrequentFlyerArrayNãoProgramas de fidelidade do passageiro (Companhia, Numero).
TributaryInformationObjetoCondicionalInformação tributária individual do passageiro utilizada em modelos GDS (Passageiro01):
• Tipo (Integer): 1=CPF, 2=Passaporte, 3=Id Local, 4=RUC, 8=CUIT.
• Numero (String): Número do documento fiscal do viajante.
PossuiBebeBooleanNãotrue se este passageiro adulto viaja acompanhado de um bebê de colo (INF).
InfantilNomeStringSe PossuiBebePrimeiro nome do bebê de colo.
InfantilSobrenomeStringSe PossuiBebeSobrenome do bebê de colo.
InfantilNascimentoDateTimeSe PossuiBebeData de nascimento do bebê de colo.
InfantilSexoStringSe PossuiBebe"M" ou "F".
InfDocumentoObjetoSe PossuiBebeDocumento oficial do bebê (Tipo, Numero, Nacionalidade, PaisEmissor, Validade).
InfPassaporteObjetoSe InternacionalPassaporte do bebê de colo para voos internacionais.

1.3 Estrutura de Documento do Passageiro​

{
"Tipo": 1,
"Numero": "95658564034",
"Nacionalidade": "BR",
"PaisEmissor": "BR",
"Validade": "2030-12-31T00:00:00"
}
  • Tipo: 1 (CPF), 2 (RNE/RNM), 3 (RG), 4 (Passaporte), 19 (Certidão de Nascimento).
  • Numero: Apenas dígitos, sem pontos ou traços.

1.4 Exemplo de Requisição Completa (/Reservar)​

{
"TripIdentification": "G3~1500~GIG~GRU~2026-10-15~U~ECONOMICA",
"TripIdentificationVolta": "G3~1501~GRU~GIG~2026-10-22~U~ECONOMICA",
"Solicitante": "GESTOR DE VIAGENS",
"Requisicao": "PO-2026-99881",
"Contatos": [
{
"Nome": "JOSE SILVA",
"Email": "jose.silva@empresa.com.br",
"NumeroDDI": "55",
"NumeroDDD": "11",
"NumeroTelefone": "987654321",
"Tipo": 1
}
],
"Passengers": [
{
"FaixaEtaria": "ADT",
"Nome": "JOSE",
"Sobrenome": "SILVA",
"Sexo": "M",
"Nascimento": "1985-04-12T00:00:00",
"Email": "jose.silva@empresa.com.br",
"Telefone": {
"NumeroDDI": "55",
"NumeroDDD": "11",
"NumeroTelefone": "987654321"
},
"Documento": {
"Tipo": 1,
"Numero": "95658564034",
"Nacionalidade": "BR",
"PaisEmissor": "BR"
},
"PossuiBebe": true,
"InfantilNome": "LUCAS",
"InfantilSobrenome": "SILVA",
"InfantilNascimento": "2025-11-10T00:00:00",
"InfantilSexo": "M",
"InfDocumento": {
"Tipo": 1,
"Numero": "46102233093",
"Nacionalidade": "BR",
"PaisEmissor": "BR"
}
}
]
}

1.5 Estrutura da Resposta (ReservaRS)​

CampoTipoDescrição
LocalizadorStringCódigo localizador de 6 caracteres (PNR) retornado pela companhia aérea.
StatusStringStatus da reserva: "Confirmada", "Ativa" ou "Cancelada".
DataCriacaoDateTimeData e hora em que a reserva foi gerada.
PrazoEmissaoDateTimeData e hora limite para emissão (Ticketing Time Limit). Se não emitida até este prazo, a reserva é cancelada automaticamente pela companhia aérea.
Sistema / SistemaLabelStringIdentificador do provedor/conector da reserva (ex: "G3 GWS", "LATAM NDC").
TripsArrayLista completa dos voos e conexões confirmados com número de voo, classes e horários.
PassengersArrayLista de passageiros confirmados no PNR com os IDs gerados pelo motor.
TicketsArrayLista de bilhetes (vazia na reserva pendente; preenchida caso emitida).
EMDsArrayServiços auxiliares contratados.
AvailableSeatMapBooleanSe o fornecedor suporta mapa de assentos para este localizador.
BaggagePurchaseAvailableBooleanSe o canal permite a compra avulsa de bagagem após a reserva.
AllowsCancellationBooleanSe a reserva permite cancelamento direto via /Cancelar.
AllowsIssuanceBooleanSe a reserva está apta para faturamento via /Emitir.
AllowsSplitBooleanSe a companhia aérea suporta divisão de passageiros (split) neste PNR.
CanReissueBooleanSe o bilhete permite alteração e remarcação voluntária.
CanVisualizeCommercialTermsBooleanSe os dados financeiros comerciais estão visíveis.
ExceptionObjeto / nullObjeto de erro negocial retornado pelo fornecedor.

2. Consultar Reserva (/Consultar)​

Recupera os detalhes completos e o status em tempo real de uma reserva existente informando o código localizador.

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

Request​

{
"Localizador": "SPRPMK"
}

3. Cancelar Reserva (/Cancelar)​

Cancela os segmentos aéreos de uma reserva pendente de emissão, liberando os assentos no inventário da companhia aérea sem cobrança financeira.

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

Request​

{
"Localizador": "SPRPMK"
}

Response​

{
"Data": "2026-10-15T12:00:00",
"Localizador": "SPRPMK",
"Status": "Cancelada",
"Exception": null
}

4. Dividir Reserva (/DividirReserva)​

Desmembra um ou mais passageiros de uma reserva em grupo para um novo localizador PNR independente (funcionalidade exclusiva da Web API).

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

Request​

{
"Localizador": "SPRPMK",
"Passageiros": [
{ "Id": 102 }
]
}

Response​

{
"LocalizadorOriginal": "SPRPMK",
"NovoLocalizador": "KLPQWE",
"PassageirosDivididos": [
{ "Id": 102, "Nome": "MARIA SILVA" }
],
"Exception": null
}