Autenticação
O acesso é concedido por meio de uma conta de parceiro cadastrada pela HMS. A conta de parceiro recebe uma apiKey e um apiSecret, e a HMS autoriza quais hotéis ela pode acessar. O endpoint de login troca essas credenciais por um token vinculado ao hotel.
Login e token#
POST /external/public/login HTTP/1.1
Host: test.hms.gen.tr
Content-Type: application/x-www-form-urlencoded
apiKey=5y94tLmALIKDyUVdEPlAAjg5xWGQNgQtnALlV4%2BAm7Q%3D&apiSecret=a143d640…&hotelCode=1000{
"success": true,
"hotelCode": "1000",
"token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
"hotelSeoUrl": "demo-otel"
}| Campo | Descrição |
|---|---|
apiKey | Chave do parceiro. Contém caracteres base64, por isso precisa ser codificada para URL em um corpo de formulário (+ → %2B, = → %3D). As bibliotecas HTTP fazem isso por você. |
apiSecret | Chave secreta. Mantenha-a somente no servidor; nunca a inclua em um navegador ou aplicativo móvel. |
hotelCode | ID do hotel no HMS. Se o parceiro não tiver autorização para o hotel, é retornado hotel_permission_is_not_found. |
hotelSeoUrl | Slug de SEO do hotel. Usado no lugar de hotelCode apenas pelo próprio motor de reservas do HMS; integrações de terceiros enviam hotelCode. |
Cabeçalho Bearer#
Todos os endpoints, exceto o login, esperam o token no cabeçalho Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Se o cabeçalho estiver ausente, malformado (sem o prefixo Bearer) ou o token for desconhecido, a API retorna 401:
{
"success": false,
"error": "Authentication required"
}Validade e renovação do token#
- O token é válido por 7 dias. Renove-o fazendo login novamente antes que expire; o login é leve e pode ser repetido para o mesmo hotel.
- Não tente interpretar o token. Embora seja uma estrutura codificada em base64, o formato não é garantido; armazene-o e repasse-o como uma string opaca.
- Ao receber
401, faça login mais uma vez e repita a requisição; um segundo401indica que o par de chaves ou a autorização do hotel mudou.
Contexto do hotel#
Cada token fica vinculado a um único hotel. O parâmetro hotelID dos endpoints deve corresponder a esse hotel; consultar outro hotel resulta em erro de autorização ou em resultados vazios. Em integrações com vários hotéis, obtenha um token para cada hotel e guarde-o em cache por hotel.
Erros de login#
| message | Significado |
|---|---|
partner_is_not_found | O par apiKey / apiSecret não confere. Verifique as chaves e a codificação de URL. |
hotel_is_not_found | Nenhum hotel corresponde ao hotelSeoUrl. |
hotel_permission_is_not_found | O parceiro não tem autorização para este hotel, ou a autorização está inativa. Fale com o suporte da HMS. |
Esses erros retornam como HTTP 200 com success: false e token: null.