Details
POST {URL}details
O serviço Details retorna as informações completas de uma única transação, identificada pelo TransactionUniqueId obtido antes no serviço List.
💡 Papel no fluxo recomendado
O
Detailsé o passo 2 do fluxo recomendado. Chame-o uma vez para cadaUniqueIdretornado peloList, processe e grave a venda no seu sistema e, em seguida, chame o Change comImportState: 2.
Boas práticas
- Use sempre o
UniqueIdretornado pelo List, de modo que cada requisição trate de uma única transação. - Use o Details apenas quando precisar das informações completas da transação.
- Faça uma requisição separada para cada
TransactionUniqueId, pois cada produto é processado individualmente. - Evite várias requisições simultâneas sem controle de concorrência, para não sobrecarregar os servidores nem atingir limites de taxa de requisições.
- Use o campo
OffSetquando precisar das datas em outro fuso horário. - Guarde as credenciais (
IdentifierePassword) em variáveis de ambiente, nunca fixas no código. - Trate respostas de erro avaliando a propriedade booleana
Success.
Boas práticas técnicas
- Valide o
TransactionUniqueIdantes de enviar a requisição. - Trate erros de integração verificando
Successe a listaErrors. - Padronize o tratamento de exceções com retry exponencial para falhas transitórias.
Prefixos do UniqueId
O prefixo do UniqueId indica o contexto / produto da transação:
| Prefixo | Produto | Detalhamento |
|---|---|---|
AIR | Reserva aérea | Aéreo (AIR / TKT) |
TKT | Bilhete aéreo emitido (e-ticket) | Aéreo (AIR / TKT) |
TS | Taxa de serviço | Veja Taxas de serviço |
HTL | Reserva de hotel | Hotel (HTL) |
CAR | Locação de carro | Carro (CAR) |
Requisição
{
"TransactionUniqueId": "AIR-D70B465D-F2BB-4215-BE72-1D6AE5092A87", // Obrigatório. UniqueId retornado pelo List
"OffSet": "-03:00:00", // Opcional. Padrão: -03:00:00 (Brasília)
"AccessCredentials": {
"Company": {
"Identifier": "{{identifier}}",
"Password": "{{password}}"
}
}
}
Exemplos de requisição por produto
{
"TransactionUniqueId": "AIR-0CC27A59-76C0-4006-8AD2-41E75A253943",
"AccessCredentials": { "Company": { "Identifier": "{{identifier}}", "Password": "{{password}}" } }
}
{
"TransactionUniqueId": "TKT-3DEAEE0E-14A4-454B-B7A1-C2FD4591E944",
"AccessCredentials": { "Company": { "Identifier": "{{identifier}}", "Password": "{{password}}" } }
}
{
"TransactionUniqueId": "TS-624A17D3-0387-4FA0-B59B-8050C400112B",
"AccessCredentials": { "Company": { "Identifier": "{{identifier}}", "Password": "{{password}}" } }
}
Campos da Requisição
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
TransactionUniqueId | Sim | string | Identificador único com prefixo retornado pelo serviço List (ex.: AIR-..., TKT-..., HTL-..., CAR-..., TS-...). |
OffSet | Não | string (±hh:mm:ss) | Fuso horário desejado para as datas retornadas (ex.: "-03:00:00"). Se omitido, utiliza o fuso padrão do servidor (-03:00:00). |
AccessCredentials | Sim | object | Objeto contendo as credenciais de autenticação do ambiente. |
AccessCredentials.Company | Sim | object | Credencial da empresa consumidora. |
AccessCredentials.Company.Identifier | Sim | string | Identificador único (login da credencial no portal Travellink). |
AccessCredentials.Company.Password | Sim | string | Senha correspondente da credencial. |
Resposta
Estrutura raiz da resposta
| Campo | Tipo | Descrição |
|---|---|---|
Request | DetailsRQ | Eco dos parâmetros da requisição (AccessCredentials retorna sanitizado como null). |
OffSet | string | Fuso horário efetivamente aplicado na serialização das datas na resposta (ex.: "-03:00:00"). |
Transaction | TransactionDetail | Objeto principal contendo os dados completos da transação. Retorna null em caso de erro (Success: false). |
Errors | Error[] | Coleção de erros. Vazio ([]) em operações bem-sucedidas. |
Success | boolean | Avaliado dinamicamente como `Errors == null |
RequestDate | string (date-time) | Data e hora em formato ISO 8601 da conclusão do processamento no servidor. |
Detalhamento da coleção de erros (Error[])
Quando Success for false, o objeto Transaction será null e a lista Errors conterá um ou mais objetos Error:
{
"Message": "Transaction not found",
"Exception": ""
}
Propriedades de cada item Error:
Message(string): Mensagem textual descritiva da falha (ex.:"Transaction not found","Developer unauthorized access").Exception(string): Detalhes da pilha da exceção (stack trace). Em ambiente de produção, este campo é sempre retornado vazio ("") por diretriz de segurança do servidor (System.Diagnostics.Debugger.IsAttached ? ex.ToString() : "").
Exemplo de resposta com erro
{
"Request": {
"TransactionUniqueId": "AIR-NAO-EXISTE-1234",
"AccessCredentials": null
},
"OffSet": "-03:00:00",
"Transaction": null,
"Errors": [
{
"Message": "Transaction not found",
"Exception": ""
}
],
"Success": false,
"RequestDate": "2026-10-09T09:22:15.112-03:00"
}
Objeto Transaction (TransactionDetail)
O objeto Transaction reúne a visão completa da venda. Abaixo estão os blocos que compõem sua estrutura:
| Bloco | Tipo | Descrição | Natureza dos campos |
|---|---|---|---|
Header | TransactionHeader | Identificação básica, localizador, bilhete, status e carimbo de atualização. | Enums fixos e dados da transação |
Context | Context | Estrutura organizacional e comercial: Organização, Consolidador, Filial/Unidade Operacional, Agência e Cliente corporativo. | Entidades e cadastros |
User | User | Operador / emissor responsável pela operação no sistema. | Cadastro de usuário |
Payments | PaymentDetail[] | Formas de pagamento, valores, moeda e status de autorização. | Enums fixos de código (19 formas de pagamento e 9 status) |
Links | Link[] | Relacionamentos entre produtos associados (ex.: bilhete TKT vinculado à reserva AIR, taxas TS vinculadas ao bilhete). | Vínculos relacionais |
CorporateFields | CorporateField[] | Campos corporativos de política de viagem (Centro de custo, Projeto, Matrícula, Motivo de viagem, etc.). | Campos cadastráveis (configurados por agência/cliente) |
CommercialDetail | CommercialDetail | Dados comerciais gerais (Tourcode, comissionamentos consolidados). | Valores e regras comerciais |
ProductDetail | ProductDetail | Dados específicos do produto emitido. Classe fixa no backend contendo exatamente as 15 propriedades tipadas de produto. Exatamente uma propriedade estará populada (conforme o TransactionType), enquanto as demais serão null. | Propriedades fixas de modelo C# |
BackofficeDetail | BackofficeDetail | Códigos de amarração cadastral para ERPs e sistemas contábeis. | Campos cadastráveis |
DynamicFields | DynamicField[] | Campos dinâmicos customizados adicionais. | Campos cadastráveis |
Detalhamento dos Blocos de Transaction
1. Header (TransactionHeader)
| Campo | Tipo | Descrição |
|---|---|---|
TransactionType | integer | Código do produto (Enum fixo): 1 AirReservation, 100 AirTicket, 2 Hotel, 3 Car, 11 ServiceTax etc. Veja tabela completa de TransactionTypes. |
TransactionTypeDescription | string | Descrição do tipo da transação. |
Id | integer | ID numérico interno da transação no banco de dados. |
UniqueId | string | Identificador único com prefixo (ex.: AIR-..., TKT-..., HTL-..., CAR-..., TS-...). |
Locator | string | Localizador da reserva (PNR da cia aérea, voucher do hotel ou localizador da locadora). |
Ticket | string | Número do bilhete emitido (quando aplicável). |
LastUpdate | string (date-time) | Data e hora da última atualização do registro. |
TransactionState | integer | Código do status da transação (Enum fixo): 2 Reserved, 4 Issued, 5 Canceled etc. Veja tabela completa de TransactionStates. |
TransactionStateDescription | string | Nome legível do status da transação. |
ImportState | integer | Status de importação da transação (0 Undefined, 1 NotImported, 2 Imported). |
ImportStateDescription | string | Descrição do status de importação. |
2. Context (Context)
Hierarquia corporativa e comercial da venda:
| Campo | Tipo | Descrição |
|---|---|---|
Organization | Entity | Organização dona do ambiente Travellink. |
Consolidator | Entity | Consolidador / distribuidor responsável. |
OperationalUnit | Entity | Unidade operacional / filial onde a venda foi processada. |
PackageOperationalUnit | Entity | Unidade operacional de pacotes (quando aplicável). |
Agency | Entity | Agência de viagens emissora. |
Customer | Entity | Empresa compradora / cliente corporativo (quando aplicável). |
Cada Entity acima possui os campos:
Id(integer): ID da entidade.Name(string): Razão social / nome.Description(string): Descrição complementar.Document(Document): Documento da entidade (Number,Type,TypeDescription).Iata(string): Código IATA da agência/consolidador.BackofficeDetail(BackofficeDetail): Códigos cadastrais do ERP.
3. User (User)
Operador responsável pela ação no sistema:
Id(integer): ID do usuário.Name(string): Nome do operador / emissor.Username(string): Login do usuário.Email(string): E-mail do usuário.
4. Payments (PaymentDetail[])
Lista com cada pagamento efetuado para a transação:
| Campo | Tipo | Descrição |
|---|---|---|
Id | integer | ID do pagamento. |
PaymentType / PaymentTypeDescription | integer / string | Responsável pelo pagamento: Enum fixo (1 Customer ou 2 Provider). |
PaymentForm / PaymentFormDescription | integer / string | Enum fixo no backend com exatamente 19 valores possíveis (não é campo livre/cadastrável): 0 Undefined, 101 Invoice (Faturado), 102 Government, 103 Cash, 104 Credit, 105 CreditCard, 106 CreditCardOffline, 107 Deposit, 108 Transfer, 109 BankSlip (Boleto), 110 Reward, 111 Check (Cheque), 112 Balcony, 113 TransferOnline, 114 Pix, 115 Wallet, 206 PrePaid, 207 Guarantee, 208 GuaranteeCustomer. Veja tabela completa de PaymentForm. |
CurrencyCode | string | Código ISO 4217 da moeda (ex.: BRL, USD, EUR). |
Amount | decimal | Valor total processado nesta transação de pagamento. |
TransactionAmount | decimal | Valor da parcela atribuído a esta transação específica. |
PaymentState / PaymentStateDescription | integer / string | Enum fixo no backend: 0 Undefined, 1 InProgress, 2 Authorized, 3 Refused, 4 Confirmed, 5 Canceled, 6 Expired, 7 Pending, 8 PreAuthorized. Veja tabela completa de PaymentState. |
Date | string (date-time) | Data do pagamento. |
CreditCard | CreditCardDetail | Detalhes do cartão de crédito (quando o meio for cartão): bandeira, 6 primeiros e 4 últimos dígitos, titular, parcelas, autorização, NSU. |
VirtualCard | VirtualCard | Dados do cartão virtual VCN (quando aplicável). |
BankSlips | BankSlip[] | Dados de boleto bancário (linha digitável, vencimento, nosso número). |
Links | Link[] | Vínculos deste pagamento com outras transações cobertas por ele. |
5. Links (Link[])
Vínculos entre produtos e transações associadas na mesma compra:
| Campo | Tipo | Descrição |
|---|---|---|
LinkType / LinkTypeDescription | integer / string | Tipo de relação (Enum fixo): 1 Child, 2 Parent, 3 Related, 4 SubRelated. |
TransactionType / TransactionTypeDescription | integer / string | Tipo do produto relacionado (ex.: 100 AirTicket, 11 ServiceTax). |
Id | integer | ID da transação vinculada. |
UniqueId | string | UniqueId da transação vinculada (usado para chamar o Details correspondente). |
Locator | string | Localizador da transação vinculada. |
Ticket | string | Número do bilhete emitido (quando aplicável). |
TransactionState / TransactionStateDescription | integer / string | Status atual da transação vinculada. |
{
"LinkType": 3,
"LinkTypeDescription": "Related",
"TransactionType": 100,
"TransactionTypeDescription": "AirTicket",
"Id": 6489027,
"UniqueId": "TKT-3DEAEE0E-14A4-454B-B7A1-C2FD4591E944",
"Locator": "3FKMU6",
"Ticket": "0475049038189",
"LastUpdate": "2022-07-18T16:49:16.967",
"TransactionState": 4,
"TransactionStateDescription": "Issued"
}
6. CorporateFields (CorporateField[])
📌 Campos cadastráveis por agência / cliente corporativo
Ao contrário dos enums de sistema, estes campos são configurados dinamicamente no portal Travellink conforme a política de viagens de cada cliente corporativo. Exemplos comuns: Centro de custo, Matrícula do funcionário, Projeto, Motivo da viagem, Menor tarifa recusada.
| Campo | Tipo | Descrição |
|---|---|---|
Type / TypeDescription | integer / string | Tipo/categoria do campo corporativo. |
Id | integer | ID do campo configurado. |
Value | string | Valor preenchido no momento da reserva. |
ExtraFieldName | string | Identificador técnico do campo customizado. |
ExtraFieldLabel | string | Rótulo / label exibido para o usuário. |
7. BackofficeDetail (BackofficeDetail)
📌 Campos cadastráveis de integração com ERP
Códigos configurados nos cadastros do Travellink para conciliação direta com sistemas de gestão e backoffices:
Code(string): Código da entidade no backoffice.CostumerCode(string): Código do cliente no ERP.WoofficeCode(string): Código de integração Wooffice.
8. ProductDetail (ProductDetail)
📌 Estrutura de classes tipadas no backend C#
O objeto
ProductDetailpossui um conjunto estritamente fixo de propriedades no backend, correspondente aos modelos suportados pelo Travellink. Apenas a propriedade referente aoTransactionTypeda transação virá populada com o objeto de detalhes; todas as demais retornarãonull.
Propriedades fixas de ProductDetail:
- Metadados gerais:
SalesChannel/SalesChannelDescription: Canal de venda (Enum fixo:1B2B,2B2C etc.).InsertType/InsertTypeDescription: Tipo de inserção no sistema.InsertDate: Data de inserção do produto.Provider: Dados do provedor / distribuidor que forneceu o conteúdo.
- Propriedades específicas por produto (exatamente uma é não-nula):
AirReservationDetail: Populado quandoTransactionType == 1(AirReservation).AirTicketDetail: Populado quandoTransactionType == 100(AirTicket).AirEmdDetail: Populado para serviços adicionais de aéreo (EMD).HotelReservationDetail: Populado quandoTransactionType == 2(HotelReservation).CarReservationDetail: Populado quandoTransactionType == 3(CarReservation).BusReservationDetail: Populado quandoTransactionType == 4(BusReservation).InsuranceReservationDetail: Populado quandoTransactionType == 5(InsuranceReservation).ServiceReservationDetail: Populado quandoTransactionType == 6(ServiceReservation).ChipReservationDetail: Populado quandoTransactionType == 7(ChipReservation).CruiseReservationDetail: Populado quandoTransactionType == 8(CruiseReservation).CircuitReservationDetail: Populado quandoTransactionType == 9(CircuitReservation).ServiceTaxDetail: Populado quandoTransactionType == 11(ServiceTax).BasketDetail: Populado para itens agregados em cestas.ServiceOrderDetail: Populado para ordens de serviço corporativas.OtaOrderDetail: Populado para ordens geradas via canal OTA.
Consulte a documentação dedicada para cada produto:
Taxas de serviço (TS)
As informações de taxa de serviço são emitidas como transações de tipo 11 (ServiceTax) e vinculadas à reserva ou bilhete correspondente via propriedade Links. Para consultar o detalhamento completo de uma taxa de serviço, chame o endpoint Details informando o TransactionUniqueId com o prefixo TS- (ex.: "TS-624A17D3-0387-4FA0-B59B-8050C400112B").
💡 Exemplos completos de resposta (JSONs reais)
Visualize os exemplos reais completos de resposta para cada tipo de transação na página de Exemplos: