Início Rápido
1. Pré-requisitos Essenciais
Antes de fazer sua primeira chamada à API Redeem, certifique-se de que todos os identificadores e credenciais necessários estão disponíveis.
1.1 Obter identificadores de negócio
Você precisará dos seguintes identificadores para operar a API Redeem. Eles são fornecidos durante o processo de onboarding:
| Identificador | Descrição | Origem |
|---|---|---|
partnerId | Identificador único do parceiro (máx. 20 caracteres) | Fornecido pelo seu ponto focal comercial |
redemptionCode | Código único de resgate para o produto ou serviço (máx. 50 caracteres, alfanumérico) | Fornecido pelo seu ponto focal comercial |
client_id | Identificador OAuth do cliente, proveniente do app registrado no portal de desenvolvedores | Fornecido após a criação do app no portal do desenvolvedor |
client_secret | Segredo OAuth do cliente, proveniente do app registrado no portal de desenvolvedores | Fornecido após a criação do app no portal do desenvolvedor |
Caso não possua o Partner ID ou o Redemption Code, entre em contato com a Equipe Comercial responsável pela parceria para obter os identificadores necessários antes de prosseguir. Para qualquer outro identificador ausente, entre em contato com o LATAM Pass Support via Central de ajuda antes de continuar.
2. Configuração de autenticação
A API Redeem utiliza dois fluxos de autenticação distintos dependendo da operação:
| Fluxo | Usado para | Formato do token |
|---|---|---|
| Fluxo A — Auth0 PKCE (vinculado ao membro) | Criar resgate | JWT em Authorization: Bearer <token> |
| Fluxo B — Credenciais de cliente do Portal API (nível do parceiro) | Consultar resgate, Cancelar resgate | UUID em Access_token: <uuid> + cabeçalho client_id |
2.1 Obter autenticação
2.1.1 Fluxo A — Auth0 PKCE (vinculado ao membro)
Este fluxo vincula a conta de um membro específico e é obrigatório para Criar um resgate.
Passo 1 — Iniciar vinculação de conta (Authorize)
POST https://sandbox.api.latam.com/api/xp-api-login-management/v1/account-linking/authorize
Corpo da requisição:
Resposta:
Salve o codeVerifier no lado do servidor imediatamente. Ele não pode ser recuperado se perdido e é necessário no Passo 3.
Passo 2 — Autenticação do membro (Navegador)
Abra a url retornada no Passo 1 em um navegador. Após o membro fazer login, a LATAM redireciona para o seu redirect_uri com o código de autorização:
<YOUR_REDIRECT_URI>?code=urb-YpG50oh6zYFJQL8UdF0oV6E1dZHTR1lXq7yvQew_i&state=1489c760-e5e2-45cf-82ce-b518a8e38738
Sempre verifique se o state retornado corresponde ao valor do Passo 1 para evitar ataques CSRF. O code de autorização é apenas o valor do parâmetro code — não inclua o state.
Passo 3 — Trocar o código pelo token de acesso
POST https://sandbox.api.latam.com/api/xp-api-login-management/v1/oauth/token
Corpo da requisição:
Resposta:
Use o access_token no cabeçalho Authorization: Bearer para todas as requisições do Fluxo A. A renovação via refresh_token também está disponível; entre em contato com o LATAM Pass Support se precisar de mais detalhes.
2.1.2 Fluxo B — Credenciais de cliente do Portal API (nível do parceiro)
Este fluxo autentica no nível do parceiro e é utilizado para as operações de Consultar resgate e Cancelar resgate. Como pré-requisito, ao criar seu aplicativo no Developer Portal, selecione a API Redeem PNA.
Após a criação do aplicativo, obtenha um token de acesso usando o endpoint e as informações abaixo.
POST https://api.latampass.com/sandbox/oauth/access-token
Cabeçalhos da requisição:
Authorization: Basic <base64(client_id:client_secret)>
Content-Type: application/x-www-form-urlencoded
client_id: YOUR_CLIENT_ID
Corpo da requisição:
grant_type=client_credentials
Resposta:
2.1.3 Resumo de autenticação
| Passo | Endpoint | Finalidade |
|---|---|---|
| Fluxo A — Passo 1 | POST /account-linking/authorize | Obter URL de autorização + codeVerifier |
| Fluxo A — Passo 2 | (navegador) | Membro faz login; callback retorna code |
| Fluxo A — Passo 3 | POST /oauth/token (authorization_code) | Trocar code + codeVerifier → JWT access_token |
| Fluxo A — Renovação | POST /oauth/token (refresh_token) | Renovar JWT — entre em contato com o LATAM Pass Support |
| Fluxo B | POST /sandbox/oauth/access-token (client_credentials) | Obter token UUID do Portal API para operações em nível de parceiro |
3. Configurar cabeçalhos da requisição
Use o conjunto de cabeçalhos adequado com base na operação que você está executando.
Fluxo A — Auth0 PKCE (Criar resgate):
| Cabeçalho | Valor |
|---|---|
Content-Type | application/json |
x-latam-test | LatamPass (somente sandbox) |
Authorization | Bearer <JWT_ACCESS_TOKEN> |
Fluxo B — Credenciais de cliente do Portal API (Consultar resgate, Cancelar resgate):
| Cabeçalho | Valor |
|---|---|
Content-Type | application/json |
x-latam-test | LatamPass (somente sandbox) |
Access_token | <UUID_ACCESS_TOKEN> |
client_id | <YOUR_CLIENT_ID> |
4. Construir sua requisição
Criar resgate — POST /redeem
Campos obrigatórios:
| Campo | Tipo | Restrições |
|---|---|---|
partnerId | String | Máx. 20 caracteres |
partnerTransactionId | String | Máx. 100 caracteres |
miles | Integer | Mín. 1, máx. 3.000.000 |
redemptionCode | String | Máx. 50 caracteres |
description | String | Máx. 500 caracteres |
Campos opcionais:
| Campo | Tipo | Observações |
|---|---|---|
correlationId | UUID | Gerado automaticamente se não informado |
Exemplo com cURL:
5. Cancelar resgate — POST /redeem/cancel
Campos obrigatórios:
| Campo | Tipo | Restrições |
|---|---|---|
correlationId | UUID | Deve corresponder a um resgate com status PROCESSED |
description | String | Máx. 500 caracteres |
miles | Number | Mín. 1, Max. 3.000.000; não pode exceder as milhas do resgate original |
Exemplo com cURL:
6. Consultar status do resgate — GET /redeem
Parâmetro de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
correlationId | UUID | O identificador do resgate a ser consultado |
Exemplo com cURL:
7. Tratar a resposta
| Status HTTP | Significado | Ação necessária |
|---|---|---|
201 Created | Requisição aceita para processamento (Criar e Cancelar). Este não é o resultado final de negócio. | Armazene o correlationId da resposta e aguarde a notificação via webhook. |
4xx | Erro do lado do cliente (requisição inválida, campos ausentes, não autorizado). | Registre a resposta completa com o correlationId. Não tente novamente sem primeiro corrigir a requisição. |
500 Internal Server Error | Erro do lado do servidor. | Tente novamente com os mesmos dados. Se o problema persistir, entre em contato com o LATAM Pass Support. |
Uma resposta 201 significa que a requisição foi aceita para processamento assíncrono. O resultado final (sucesso ou falha) é entregue via webhook.
7.1 Verificar o status final da transação
A Redeem API processa transações de forma assíncrona. O resultado final é entregue por um de dois mecanismos:
Webhook (recomendado) — configure um endpoint HTTPS do seu lado. A API envia uma requisição POST para o seu endpoint com o correlationId e o status final quando o processamento é concluído.
| Operação | Estados finais |
|---|---|
| Criar resgate | PROCESSED, ERROR, CANCELLED |
| Cancelar resgate | REFUNDED, CANCELLED, ERROR |
Polling (alternativa) — use o endpoint GET com o correlationId para consultar o status atual da transação a qualquer momento. Use polling apenas se uma notificação via webhook não for recebida após 24 horas.
Problemas e soluções
| Problema | Causa | Solução |
|---|---|---|
401 Unauthorized | Token de acesso inválido ou expirado | Reautentique. Para o Fluxo A, repita os Passos 1 a 3. Para o Fluxo B, solicite um novo token. |
403 Forbidden — "App not authorized" | App do Portal API sem configuração de b2b_client_id | Entre em contato com o LATAM Pass Support para configurar o b2b_client_id. |
400 Bad Request (Criar) | Campos obrigatórios ausentes ou valores inválidos | Verifique se description, miles, redemptionCode, partnerId e partnerTransactionId estão presentes e válidos. |
400 Bad Request (Cancelar) | correlationId não encontrado ou milhas de cancelamento excedem o total original | Use um correlationId válido de um resgate com status PROCESSED; miles deve ser ≤ ao total original. |
422 Unprocessable | Resgate não está com status PROCESSED (somente Cancelar) | Apenas resgates com status PROCESSED podem ser cancelados. |
405 Method Not Allowed | Método HTTP incorreto utilizado | Use POST para operações de criar/cancelar; GET para consultas de status. |
500 Internal Server Error | Erro do lado do servidor | Tente novamente com os mesmos dados. Se persistir, entre em contato com o LATAM Pass Support. |
8. Checklist de integração
Use este checklist para confirmar que sua integração está completa e correta antes de solicitar acesso à produção.
- ✅ Ambos os fluxos de autenticação configurados (Fluxo A e Fluxo B)
- ✅ App do Portal configurada com
b2b_client_id - ✅ Resposta
201interpretada como aceite, não como conclusão - ✅ Respostas
4xxregistradas comcorrelationId; respostas500repetidas com os mesmos dados - ✅ Criar resgate validado de ponta a ponta (
POST→correlationId→ WebhookPROCESSED/ERROR/CANCELLED) - ✅ Consultar resgate validado (
GETporcorrelationId→ status correto retornado) - ✅ Fluxo de cancelamento validado (criar →
PROCESSED→ cancelar → WebhookREFUNDED/CANCELLED/ERROR) - ✅ Tratamento de erros implementado para erros de validação, casos de não encontrado, status inválido e valor excedendo o total original
- ✅
correlationIdarmazenado de forma persistente e usado nas operações de GET e cancelamento - ✅ Endpoint de webhook configurado e recebendo notificações ativamente
Se você concluiu todos os itens com sucesso, você está pronto para solicitar acesso à produção. Siga o Guia de Acesso à Produção abaixo para os próximos passos.
9. Guia de acesso à produção
Antes de solicitar acesso à produção, os seguintes pré-requisitos devem ser cumpridos:
- Todos os testes de integração concluídos em Sandbox (criar, consultar status, cancelar)
- Nenhum problema técnico em aberto entre seus sistemas e o LATAM Pass
- Integração em Sandbox aprovada pelo LATAM Pass Support via ticket
Passos para ir para produção:
- Concluir a integração no Sandbox — execute todos os cenários de teste: Criar resgate, Consultar status do resgate e Cancelar resgate.
- Solicitar aprovação para produção — abra um ticket na Central de Ajuda. O LATAM Pass Support verificará se os serviços estão configurados corretamente e poderá solicitar evidências das transações concluídas em sandbox.
O aplicativo de produção permanece com status Pending até que o processo de aprovação seja concluído.
Ambientes: Sandbox vs. Produção
| Funcionalidade | Sandbox | Produção |
|---|---|---|
| URL base | https://api.latampass.com/sandbox | https://api.latampass.com |
| Criar resgate | .../sandbox/v1/customer/eloyalty/partner/redeem | .../v1/customer/eloyalty/partner/redeem |
| Cancelar resgate | .../sandbox/v1/customer/eloyalty/partner/redeem/cancel | .../v1/customer/eloyalty/partner/redeem/cancel |
| Consultar status do resgate | .../sandbox/v1/customer/eloyalty/partner/redeem?correlationId={uuid} | .../v1/customer/eloyalty/partner/redeem?correlationId={uuid} |
| Token do Portal API | POST .../sandbox/oauth/access-token | POST .../oauth/access-token |
| Dados | Somente dados de teste. Sem impacto em contas reais de membros. | Dados reais. Todas as transações são definitivas. |
| Finalidade | Desenvolvimento, testes de integração e certificação. | Uso comercial em produção. |
Cabeçalho x-latam-test | Ativo. Pode acionar cenários de mock específicos. | Ignorado. Sem efeito. |
| Suporte | Horário comercial para questões de integração. | 24/7 para problemas críticos em produção. |
Endpoints de produção
| Método | Endpoint | Descrição |
|---|---|---|
POST | https://api.latampass.com/oauth/access-token | Token do Portal API (credenciais de cliente — Fluxo B) |
POST | https://api.latampass.com/v1/customer/eloyalty/partner/redeem | Criar resgate |
GET | https://api.latampass.com/v1/customer/eloyalty/partner/redeem | Consultar status do resgate |
POST | https://api.latampass.com/v1/customer/eloyalty/partner/redeem/cancel | Cancelar resgate |