Documentação completa da API REST para integração B2B de turismo. Permite buscar e reservar hotéis, aluguéis de carro, transfers e passeios, além de gerenciar reservas via backoffice.
Todas as datas devem ser enviadas como string no formato ISO 8601. Nunca inclua informações de fuso horário nas datas, a menos que a documentação do campo específico indique o contrário.
| Campo | Formato | Exemplo | Observação |
|---|---|---|---|
| Datas (CheckinDate, CheckoutDate, ServiceDate) | YYYY-MM-DD | 2024-12-20 | Sempre no fuso horário local do destino. |
| Horários (Time, CheckInHour, CheckOutHour) | HH:MM | 14:00 | Sempre em UTC. Converta para o fuso local ao exibir ao usuário. |
| Timestamps de resposta (TimeSpan) | YYYY-MM-DD HH:MM:SS | 2024-12-20 14:30:58 | Sempre em UTC. |
| Datas em políticas de cancelamento (StartDate, EndDate) | YYYY-MM-DD | 2024-12-15 | Representam o intervalo em que a penalidade se aplica (inclusive). |
CheckInHour e CheckOutHour são sempre em UTC. Converta para o fuso local do usuário antes de exibir.
O **Token** retornado pelo Search é válido por **30 minutos**. Se o usuário demorar mais do que isso para avançar para o GetBookingConditions, o token expira. Nesse cenário, o sistema utiliza o **ReToken** — um mecanismo de revalidação automática que verifica se o quarto ainda está disponível e se o preço se manteve, sem necessidade de refazer o Search completo.
Disponibilidade e preço idênticos ao Search original. Prossiga normalmente para o DoBooking com o novo Token retornado.
O quarto ainda está disponível, mas houve mudança de preço ou de condições. Exiba as novas condições ao usuário antes de confirmar.
O quarto não está mais disponível. Retorne ao Search para buscar novas opções. Nenhuma penalidade é aplicada.
A API utiliza uma combinação de credenciais fixas (Username/Password) e tokens de sessão dinâmicos para autenticar e autorizar cada requisição.
1{2 "Credential": {3 "Username": "seu_usuario",4 "Password": "sua_senha"5 }6}
A API retorna códigos HTTP padrão. Todas as respostas são em JSON com compressão GZip disponível.
| Código | Nome | Descrição |
|---|---|---|
| 200 | OK | A API retorna códigos HTTP padrão. Todas as respostas são em JSON com compressão GZip disponível. |
| 400 | Bad Request | Invalid body — check required fields |
| 401 | Unauthorized | Invalid credentials |
| 404 | Not Found | Resource not found |
| 500 | Internal Server Error | Internal error — contact support |
Cada reserva possui um status que reflete seu estado atual no sistema Cangooroo.
Reserva confirmada, encaminhada ao hotel e com garantia de pagamento ao fornecedor.
Reserva cancelada. Cobranças de penalidade continuam se aplicáveis.
Falta de disponibilidade, mudança de tarifa, timeout do fornecedor ou nomes com caracteres especiais. Refaça a reserva sem risco de penalidade.
Timeout no recebimento do número de confirmação. Em 70% dos casos a reserva está confirmada. Não crie nova reserva — consulte helpdesk@iterpec.com.
Ocorre quando o cadastro do cliente está bloqueado por falta de crédito disponível.
Conteúdo pré-pago com tarifa em penalidade. O sistema aguarda pagamento via cartão.
Alguma conexão não comunicou o cancelamento ao fornecedor. Envie e-mail para helpdesk@iterpec.com.
Status de transição. Use GetBookingDetail para recuperar o status real.
Dados de destinos, aeroportos e conteúdo base que raramente mudam. Recomendado atualizar a cada 30 dias e armazenar em cache local.
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| airportCode | string | req | Código IATA do aeroportoex: GRU |
| token | string | req | Token de acessoex: aac7faba-ca30-4071-a18a-41cda1424bdc |
| managerId | integer | req | ID do managerex: 270 |
1{}
Dados que não mudam com frequência (nomes de hotéis, endereços, coordenadas, IDs de destino) estão disponíveis para download. Recomendamos atualizar esses arquivos a cada 30 dias.
Lista completa de hotéis com IDs, nomes, destinos e categorias. Atualizar a cada 30 dias.
Lista de destinos com IDs, nomes multilíngues e códigos de país.
Lista de locadoras com lojas, endereços, horários e códigos de aeroporto.
Textos descritivos completos de hotéis em português (amenities, políticas, descrição geral).
Textos descritivos completos de hotéis em inglês.
Textos descritivos completos de hotéis em espanhol.
Sugestões em tempo real de destinos, hotéis e pontos de interesse. Ideal para campos de busca com digitação progressiva.
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| any_term | string | req | Termo de busca (mínimo 3 caracteres)ex: miam |
| managerId | integer | req | ID do managerex: 270 |
| token | string | req | Token de acessoex: aac7faba-ca30-4071-a18a-41cda1424bdc |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| id | integer | opt | ID do destino ou hotel |
| type | string | opt | Tipo do resultado: Destination ou Hotel |
| name | string | opt | Nome do destino ou hotel |
| countryCode | string | opt | Código ISO do país |
| destinationId | integer | opt | ID do destino (quando type = Hotel) |
1{}
Enriquece os dados de um hotel com fotos, geolocalização, amenities e informações de quartos. Use o HotelId retornado pelo Autocomplete ou pelo Search.
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| hotelId | integer | req | ID do hotel (retornado pelo Autocomplete ou Search)ex: 160459 |
| token | string | req | Token de acessoex: aac7faba-ca30-4071-a18a-41cda1424bdc |
| managerId | integer | req | ID do managerex: 270 |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| id | integer | opt | ID do hotel |
| destination | object | opt | Dados do destino com nome multilíngue |
| name | string | opt | Nome do hotel |
| address | string | opt | Endereço completo |
| latitude | number | opt | Latitude geográfica |
| longitude | number | opt | Longitude geográfica |
| category | string | opt | Categoria em estrelas (1–5) |
| amenities | array[string] | opt | Lista de comodidades do hotel |
| photos | array[string] | opt | URLs das fotos do hotel |
| rooms | array[object] | opt | Dados dos tipos de quarto com fotos e amenities |
1{}
filtro por produto
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| Criteria | object | req | Critérios de busca |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Token | string | opt | Token de sessão (válido 30 min). Obrigatório nos próximos passos. |
| TimeSpan | string | opt | Data e hora da pesquisa |
| TotalTime | number | opt | Tempo de resposta em segundos |
| Hotels | array[object] | opt | Lista de hotéis disponíveis com quartos e preços |
1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "Criteria": {7 "CheckinDate": "2024-12-20",8 "CheckoutDate": "2024-12-27",9 "DestinationId": 1010422,10 "MainPaxCountryCodeNationality": "BR",11 "NumNights": 7,12 "ReturnHotelStaticData": true,13 "HidePackageRate": false,14 "CheapestRoomOnly": false,15 "SearchType": "Hotel",16 "SearchRooms": [17 {18 "ChildAges": [],19 "NumAdults": 2,20 "Quantity": 121 }22 ]23 }24}
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| HotelId | integer | req | ID do hotel (apenas um por chamada) |
| RoomIds | array[integer|string] | req | IDs dos quartos selecionados no Search |
| Token | string | req | Token retornado pelo Search |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Token | string | opt | Novo token — usar no DoBooking |
| CanPayLater | boolean | opt | true = pagamento pode ser feito depois |
| RestrictionType | string | opt | Tipo de restrição: CanBook, OnRequest, etc. |
| RevalidateBookingConditions | string | opt | SameRoomsFound | RoomsFoundWithChanges | RoomsNotFound |
| RoomsConditions | array[object] | opt | Condições detalhadas por quarto |
GetBookingConditions pode retornar valores obrigatórios a serem pagos diretamente no hotel de duas formas distintas e complementares. O integrador deve verificar ambos os campos antes de exibir o resumo da reserva ao hóspede. Omitir essas informações pode gerar reclamações, chargebacks e cancelamentos.| Campo | Tipo | Exemplo | Descrição |
|---|---|---|---|
| Name | string | "Resort Fee" | Nome da taxa conforme o fornecedor |
| Amount | number | 35.00 | Valor da taxa |
| Currency | string | "USD" | Moeda (pode ser diferente da reserva) |
| Type | string | "PerNight" | PerNight | PerStay | PerPerson | PerPersonPerNight |
| Description | string | "Collected at property" | Descrição adicional do fornecedor |
PropertyTaxes, elas podem aparecer embutidas no campo MoreInformation como texto corrido. Este campo contém observações gerais do hotel — políticas, restrições e, frequentemente, taxas obrigatórias não estruturadas.
Exemplo real:
``
"IMPORTANT: A mandatory resort fee of USD 35 per room per night will be collected at the property. This fee is not included in the room rate. Additional city tax of EUR 4.50 per person per night may apply."
``
O integrador deve sempre exibir o conteúdo completo do MoreInformation ao hóspede, mesmo que não consiga extrair valores estruturados. Uma IA ou regex pode ajudar a destacar os trechos relevantes.1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "HotelId": 61221,7 "RoomIds": [35100101],8 "Token": "m+Jb/PG5CBOqYcquX10YRPZMmMF..."9}
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| BookingId | string | req | "0" para nova reserva. ID existente para adicionar serviço.ex: "0" |
| HotelId | integer | req | ID do hotel |
| Paxs | array[object] | req | Dados dos passageiros |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| RequestId | integer | opt | ID da reserva confirmada (ReservationId) |
| TimeSpan | string | opt | Data e hora da confirmação |
| Rooms | array[object] | opt | Dados dos quartos confirmados |
1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "BookingId": "0",7 "HotelId": 94171,8 "Paxs": [9 {10 "Address": "Rua das Flores",11 "AddressNumber": "100",12 "Age": 35,13 "City": "São Paulo",14 "Cpf": "123.456.789-00",15 "DocumentType": "CPF",16 "Email": "viajante@email.com",17 "MainPax": true,18 "Name": "João",19 "Surname": "NoBook",20 "PhoneDDD": "11",21 "PhoneNumber": "999999999",22 "State": "SP",23 "Title": "Mr",24 "ZipCode": "01310-100",25 "IsChild": false,26 "IsBilled": false27 }28 ]29}
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| BookingId | string | req | ID da reserva (ReservationId)ex: "1864605" |
| RefundPayment | boolean | opt | true = solicita estorno do pagamento |
1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "BookingId": "1864605",7 "RefundPayment": false8}
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| ServiceIds | array[integer] | req | IDs dos serviços a cancelarex: [1864605] |
| RefundPayment | boolean | opt | true = estorno da taxa de cancelamento |
1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "ServiceIds": [1864605],7 "RefundPayment": true8}
Pagamento de reservas via cartão de crédito. Utilizado quando `IsPrePayment: true` no Search.
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| BookingId | string | req | ID da reserva |
| Credential | object | req | Credenciais de acesso |
| PaymentConditionId | string | req | ID da condição de pagamento |
| PaymentRequestCC1 | object | req | Dados do cartão de crédito |
1{2 "BookingId": "1864605",3 "Credential": {4 "Password": "{{minhasenha}}",5 "Username": "{{meuusuario}}"6 },7 "PaymentConditionId": "CC-001",8 "PaymentRequestCC1": {9 "ContractingParty": {10 "Address": "Rua das Flores, 100",11 "CPF": "123.456.789-00",12 "CityName": "São Paulo",13 "CountryCode": "BR",14 "Email": "titular@email.com",15 "PersonName": "João Silva",16 "PhoneDDD": "11",17 "PhoneNumber": "999999999"18 }19 }20}
Gestão e consulta de reservas. Use GetBookingList para monitorar alterações e GetBookingDetail para atualizar dados.
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| BookingId | string | req | ID da reserva (ReservationId)ex: "1864605" |
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Booking | object | opt | Dados completos da reserva |
| Status | Significado | Analogia | Ação Recomendada |
|---|---|---|---|
| TechnicalProblem | Erro técnico durante a criação. Não se sabe se a reserva foi criada no fornecedor. | HTTP 500 de uma API | Polling a cada 5 min por até 30 min |
| Pending | Reserva criada, aguardando confirmação do fornecedor (ex: OnRequest). | HTTP 202 Accepted | Polling a cada 10 min por até 30 min |
| PendingCancellation | Solicitação de cancelamento enviada, aguardando confirmação do fornecedor. | HTTP 202 de um DELETE | Polling a cada 5 min por até 30 min |
| Rejected | Reserva rejeitada pelo fornecedor. Status final — sempre resultará em cancelamento. | HTTP 422 | Não requer polling — status final |
1{2 "Credential": {3 "Username": "{{meuusuario}}",4 "Password": "{{minhasenha}}"5 },6 "BookingId": "1864605"7}
| Nome | Tipo | Req. | Descrição |
|---|---|---|---|
| Credential | object | req | Credenciais de acesso |
| SearchBookingCriteria | object | opt | Filtros de busca (todos opcionais) |
1{2 "Credential": {3 "Password": "{{minhasenha}}",4 "Username": "{{meuusuario}}"5 },6 "SearchBookingCriteria": {7 "BookingNumber": [],8 "CheckinDateFrom": "2024-01-01",9 "CheckinDateTo": "2024-01-31"10 }11}
© 2026 Iterpec · helpdesk@iterpec.com