Para integrar informações de preços e disponibilidade, os parceiros precisam implementar a API Partner. Essa interface é baseada em REST e permite que o Google envie chamadas em tempo real por HTTP. Os detalhes dos métodos individuais da API são descritos na seção Referência, mas você pode encontrar informações sobre questões transversais mais adiante.
Formato de solicitação e resposta
Inicialmente, apenas formatos JSON serão aceitos. Se forem necessários outros formatos de solicitação ou resposta, entre em contato com a equipe de transporte de viagens em transport-help@google.com para discutir seu caso de uso.
As solicitações serão enviadas usando o método HTTP POST, com a mensagem no corpo da solicitação.
Para clareza estrutural, a documentação da interface da API é fornecida como definições de mensagens de buffer de protocolo. A tradução de uma definição de mensagem de buffer de protocolo para um objeto JSON é definida pelo mapeamento JSON canônico, usando as opções para emitir campos com valores padrão e usar nomes de campos proto em vez de nomes lowerCamelCase.
Autenticação
O Google oferece suporte à autenticação HTTP Digest e à autenticação de certificado do cliente. Todas as chamadas HTTP da API Partner usam autenticação HTTP Digest (com nome de usuário e senha) ou autenticação de certificado do cliente. O parceiro precisa fornecer ao Google um nome de usuário e uma senha (consulte Configuração do parceiro) ou um certificado de cliente SSL, respectivamente.
Códigos de status e tratamento de erros
Em geral, os seguintes códigos de status podem ser retornados em respostas HTTP:
Código HTTP | Descrição HTTP | Observações |
---|---|---|
2xx | OK | Não é um erro. Retornado quando bem-sucedido. O corpo da resposta deve conter um resultado bem-sucedido (por exemplo, TripOptionsResult), não uma resposta de erro. |
400 | Solicitação inválida | A solicitação recebida era inválida. As respostas de erro específicas do método devem ser usadas para retornar detalhes adicionais de erro no corpo da resposta. O HTTP 400 geralmente só deve ser usado se o Google cometer um erro técnico (por exemplo, um campo com nome incorreto em uma solicitação). |
403 | Proibido | Permissão negada/proibida (o autor da chamada é conhecido e rejeitado). Essa resposta não pode ser usada para rejeições causadas pelo esgotamento de algum recurso. Em vez disso, use "Muitas solicitações" para esses erros. "Proibido" não pode ser usado se o autor da chamada não for identificado. Em vez dele, use "Não autorizado" para esses erros. |
404 | Não encontrado | Não foi possível encontrar o recurso solicitado. As respostas de erro específicas do método devem ser usadas para retornar detalhes adicionais de erro no corpo da resposta. |
429 | Excesso de solicitações | Houve o esgotamento de algum recurso, como uma cota por usuário. |
500 | Erro interno do servidor | Erros internos. Isso significa que algumas invariantes esperadas pelo sistema subjacente foram corrompidas. Esse código de erro é reservado para erros graves e indica um bug na implementação do servidor de API do parceiro. |
503 | Serviço indisponível | O serviço está indisponível. Muito provavelmente, trata-se de uma condição temporária, que pode ser corrigida ao tentar novamente com uma retirada. |
504 | Tempo limite de gateway | O prazo expirou antes do término da operação. Para operações que mudam o estado do sistema, esse erro pode ser retornado mesmo que a operação tenha sido concluída com sucesso. Por exemplo, uma resposta bem-sucedida de um servidor pode ter sido atrasada tempo suficiente para que o prazo expirasse. |
Para todas as condições prévias, argumentos inválidos ou erros não encontrados:
- as respostas ou mensagens de erro específicas do método definidas nas APIs precisam ser usadas.
- o código HTTP correto deve ser usado, conforme especificado nos códigos específicos do método (por exemplo,
TripOptionsErrorType
)
Isso permite fornecer informações mais detalhadas sobre esses tipos de erros. Essas informações podem ser usadas para:
- Determinar se um erro pode ser retentado
- Não é possível tentar novamente
SEGMENT_KEY_NOT_FOUND
.
- Não é possível tentar novamente
- Corrigir informações desatualizadas
Unavailable.Reason.CANCELED
indica que a viagem precisa ser removida. Isso faz parte de uma resposta bem-sucedida.Unavailable.Reason.TEMPORARILY_UNAVAILABLE
e os códigos de erroSEGMENT_KEY_NOT_FOUND
,SUBOPTIMAL_ITINERARY
,BOOKING_WINDOW_NOT_SUPPORTED
eTICKETING_PROHIBITED
removem todos os preços que recebemos anteriormente do cache.
- Oferecer orientação relevante aos usuários
A lista atual de erros específicos do método fornecida em
TripOptionsError
é um ponto de partida. Se forem necessários outros tipos de erros, entre em contato com a equipe de transporte do Google Travel.
QPS (consultas por segundo)
O nível de QPS enviado pelo Google provavelmente vai variar com base no inventário do parceiro e em quantos usuários visualizam os dados armazenados em cache ou clicam nos sites dos parceiros para fazer uma reserva.
Latência
As solicitações vão expirar após 10 segundos. Não haverá outras diretrizes de latência para integrações de parceiros Beta. No entanto, outros SLOs de latência serão definidos nas nossas diretrizes de qualidade de dados de parceiros.
Moedas, tributos e taxas
Todos os preços enviados ao Google precisam incluir tributos e taxas e ser especificados em uma moeda aceita.
Moeda
A moeda de um preço é especificada usando o campo currency_code
, que precisa ser um código de moeda ISO 4217 válido.
Exemplo:10,25 USD
{
"price": {
"currency_code": "USD",
"units": 10,
"nanos": 250000000
}
}
Tributos e taxas
O preço fornecido precisa ser o valor final e total que o usuário vai pagar, incluindo todos os tributos (como IVA) e taxas extras (como taxas de reserva ou de cartão de pagamento). É possível adicionar um detalhamento opcional da tarifa usando o campo repetível line_items
. O Google vai mostrar o preço total com um detalhamento opcional das tarifas para o usuário.