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 de API individuais 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 os 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 de solicitação no corpo POST.
Para maior clareza estrutural, a documentação da interface da API é fornecida como definições de mensagens do buffer de protocolo. A tradução de uma definição de mensagem do 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 para usar nomes de campos proto em vez de nomes lowerCamelCase.
Autenticação
O Google oferece suporte à autenticação de resumo HTTP, OAuth 2.0 e autenticação de certificado do cliente (consulte a configuração de parceiro). Os parceiros precisam fornecer ao Google as credenciais corretas durante o teste da API:
- Para resumo: nome de usuário e senha.
- Para OAuth 2.0: client_id e client_secret.
- Para certificado: um certificado SSL do cliente.
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 precisa 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. Respostas de erro específicas do método precisam ser usadas para retornar mais detalhes 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 dela, use "Excesso de solicitações" para esses erros. A resposta "Proibido" não poderá ser usada se o autor da chamada não for identificado. Em vez dela, use "Não autorizado" para esses erros. |
| 404 | Não encontrado | Não foi possível encontrar o recurso solicitado. Respostas de erro específicas do método precisam ser usadas para retornar mais detalhes 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. 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 alteram o estado do sistema, este 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 o suficiente para que o prazo expire. |
Para todas as pré-condições, 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 precisa ser usado, conforme especificado nos códigos específicos do método (consulte, por exemplo,
TripOptionsErrorType)
Isso permite que informações mais detalhadas sobre esses tipos de erros sejam fornecidas. Essas informações podem ser usadas para:
- Determinar se um erro pode ser repetido
SEGMENT_KEY_NOT_FOUNDnão pode ser repetido.
- Corrigir informações desatualizadas
Unavailable.Reason.CANCELEDindica que a viagem precisa ser removida (isso faz parte de uma resposta bem-sucedida).Unavailable.Reason.TEMPORARILY_UNAVAILABLE, assim como os códigos de erroSEGMENT_KEY_NOT_FOUND,SUBOPTIMAL_ITINERARY,BOOKING_WINDOW_NOT_SUPPORTEDeTICKETING_PROHIBITED, removem todos os preços que recebemos anteriormente do cache.
- Fornecer orientações relevantes 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 erro, entre em contato com a equipe do Google Viagens.
QPS (consultas por segundo)
O nível de QPS enviado pelo Google provavelmente vai variar com base no inventário do parceiro e no número de usuários que visualizam os dados armazenados em cache ou clicam nos sites dos parceiros para fazer reservas.
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 todos os tributos e taxas e ser especificados em uma moeda aceita.
Moeda
A moeda de um preço é especificada usando o currency_code
campo, que precisa ser um
código de moeda ISO 4217 válido.
Exemplo:10,25 USD
{
"price": {
"currency_code": "USD",
"units": 10,
"nanos": 250000000
}
}
Impostos e taxas
O preço fornecido precisa ser o preço total final que o usuário vai pagar, incluindo todos os tributos (como o IVA) e outras taxas (como taxas de reserva ou de cartão de pagamento). Uma discriminação de tarifa opcional pode ser adicionada usando o campo repetível line_items. O Google vai mostrar o preço total com um detalhamento de tarifa opcional para o usuário.