Introdução
A API PNA Member Enrollment LATAM Pass é a forma pela qual os nossos parceiros podem realizar o cadastro (enrollment) de novos clientes no programa LATAM Pass, de acordo com as Leis de Proteção de Dados Pessoais dos países em que operamos.
A API recebe os dados de identidade do cliente enviados pelo parceiro e tenta criar uma nova conta ou reconciliar com uma conta já existente, retornando o resultado de forma síncrona.
Para poder realizar requisições à API, deve-se primeiro obter um APP para ter acesso às credenciais e gerar seu token de acesso. Consulte a documentação sobre como iniciar seus testes no Portal ou sobre a Autenticação para todas as informações. Você deve solicitar acesso para a app à "API Member".
⚠️ Importante: obter apenas as credenciais não é suficiente para usar o endpoint de criação de conta. É necessário entrar em contato com o time de Acquisition da LATAM pelo e-mail grp_acquisition_squad@latam.com para que o seu
client_idseja associado a um perfil de parceiro autorizado. Use o título: "Solicitação para liberar o uso da API por um partner". No corpo do email informe seuclient_idpor ambiente. As solicitações feitas com umclient_idnão associado serão rejeitadas com o erro403 Forbidden.
Fluxo do processo
Requisição
O endpoint recebe os dados do cliente no corpo da requisição em formato JSON e tenta criar ou reconciliar uma conta no LATAM Pass.
| Propriedade | Valor |
|---|---|
| Método | POST |
| Caminho | /v1/customer/loyalty/partner/member/enroll |
Cabeçalho
| Header | Obrigatório | Descrição |
|---|---|---|
Client_id | Sim | Valor obtido a partir do menu Dev Tools > Minhas Apps > Client ID. |
Access_token | Sim | Token de acesso obtido durante a autenticação |
X-Request-Id | Não | Token de idempotência/correlação fornecido pelo parceiro. Máximo de 64 caracteres. |
Corpo da requisição (Request Body)
Campos do objeto principal
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Primeiro nome do cliente. Apenas letras Unicode e espaços. Mín. 2, máx. 80 caracteres. |
lastName | string | Sim | Sobrenome do cliente. Mesmas regras de name. Mín. 2, máx. 80 caracteres. |
email | string | Sim | Endereço de e-mail do cliente. Máx. 254 caracteres. Caractere @ obrigatório. |
birthDate | string | Sim | Data de nascimento no formato ISO-8601 (YYYY-MM-DD). |
gender | string | Não | Sexo do cliente. Valores possíveis: M (Masculino), F (Feminino), I (Indeterminado). |
document | object | Sim | Documento de identificação do cliente. Ver detalhes abaixo. |
phone | object | Sim | Telefone de contato do cliente. Ver detalhes abaixo. |
termsAndConditionsAccepted | boolean | Sim | A aceitação dos Termos e Condições do programa LATAM Pass é obrigatória para criar uma conta. Esse valor deve refletir a aceitação explícita do usuário no fluxo do parceiro: o parceiro deve apresentar os Termos e Condições e registrar o consentimento ativo do usuário. |
parentalConsent | boolean | Condicional | Obrigatório para residentes brasileiros menores de 12 anos. Quando for true, indica que o pai, a mãe ou o responsável legal deu ativamente o consentimento, declarando seu vínculo com o menor e aceitando o tratamento de dados pessoais pela LATAM. |
⚠️ Importante: Ao criar uma conta, um e-mail é enviado para o endereço informado no cadastro solicitando a criação da senha de acesso ao LATAM Pass. Por segurança, utilize nos testes apenas endereços de e-mail aos quais você tenha acesso, evitando que terceiros possam acessar ou assumir o controle da conta criada.
Recomendamos utilizar aliases de e-mail, por exemplo:
Campos do objeto document
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentCountry | string | Sim | Código do país emissor do documento (ISO 3166-1 alpha-2). Valores suportados: CL, EC, CO, BR, PE, AR, US, GB, ES. |
documentType | string | Sim | Tipo do documento de acordo com o país do usuário. Veja as regras abaixo. |
documentNumber | string | Sim | Número do documento, sem espaços. Apenas alfanuméricos, ponto e hífen. De 4 a 32 caracteres. |
Regras do campo documentType por país
| documentCountry | Valores permitidos de documentType |
|---|---|
| BR | CPF |
| CL | DNI, RUT, PASSPORT |
| PE | DNI, CEPE, PASSPORT |
| AR, CO, EC | DNI, PASSPORT |
| US, GB, ES | PASSPORT |
Utilizar um
documentTypenão listado para o país do documento fornecido resulta em um erro 400.
Campos do objeto phone
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
countryCode | string | Sim | Código de discagem internacional do país, com ou sem o sinal de +. Ex.: +55, 56. |
contactCode | string | Sim | Número do telefone (apenas dígitos). De 6 a 15 caracteres. Ex.: 81998765432. |
Exemplos de requisição
Requisição mínima (Brasil)
Requisição completa (Brasil)
Requisição com passaporte (fora do Brasil)
Requisição para brasileiros menores de 12 anos (Brasil)
Requisição completa (Chile)
Resposta
Respostas de sucesso
201 — Conta criada com sucesso
Retornado quando uma nova conta LATAM Pass é criada para o cliente.
200 — Conta já existente
Retornado quando já existe uma conta LATAM Pass vinculada aos dados informados. A resposta pode conter uma URL de recuperação de acesso (recoveryUrl), quando disponível.
Com URL de recuperação:
Sem URL de recuperação:
Campos da resposta de sucesso
| Campo | Tipo | Descrição |
|---|---|---|
enrollmentAccepted | boolean | Indica se o cadastro foi aceito. |
code | string | Código legível por máquina para decisão do parceiro. Valores: ENROLLMENT_ACCEPTED, ACCOUNT_ALREADY_EXISTS. |
message | string | Descrição legível por humanos. Não deve ser utilizada para lógica de integração. |
recoveryUrl | string (nullable) | URL temporária para recuperação de acesso à conta, quando disponível. |
expiresAt | string (nullable) | Data/hora de expiração da recoveryUrl, no formato ISO-8601. |
traceId | string | Identificador de rastreamento gerado pela API para troubleshooting. |
timestamp | string | Data/hora da resposta no formato ISO-8601. |
Respostas de erro
400 — Erro de validação ou requisição malformada
Retornado quando há campos obrigatórios ausentes, valores inválidos ou JSON malformado.
Campos obrigatórios ausentes ou inválidos:
JSON malformado ou tipo de dado incorreto:
401 — Credenciais ausentes ou inválidas
Retornado quando Client_id ou Access_token estão ausentes ou são inválidos.
403 — Não autorizado para esta operação
Retornado quando o Client_id não é reconhecido, ou quando as credenciais são válidas porém o parceiro não possui autorização para esta operação ou ambiente.
Client_id não reconhecido:
Sem autorização para a operação/ambiente:
415 — Tipo de conteúdo não suportado
Retornado quando o Content-Type da requisição não é suportado. Utilize application/json.
422 — Cadastro rejeitado por regras de negócio
Retornado quando o cadastro é rejeitado por regras de negócio internas. O motivo específico da rejeição não é divulgado.
Recuperação manual necessária: O usuário deve ser orientado a procurar o suporte da LATAM para resolver problemas de cadastro.
Rejeição genérica:
500 — Erro interno do servidor
504 — Tempo limite de serviço downstream excedido
Retornado quando um serviço downstream do LATAM não responde a tempo. A requisição pode ser reenviada posteriormente.
Resumo dos códigos de resposta
| HTTP Status | code | enrollmentAccepted | Descrição | Ação |
|---|---|---|---|---|
201 | ENROLLMENT_ACCEPTED | true | Nova conta criada com sucesso. | Prossiga com as APIs subsequentes. |
200 | ACCOUNT_ALREADY_EXISTS | true | Conta já existente. Pode conter ou não uma URL de recuperação. | Prossiga. Ofereça o URL de recuperação, se presente. |
400 | INVALID_REQUEST / JSON_PARSE_ERROR | — | Erro de validação ou JSON malformado. | Verifique o retorno que informa as violações cometidas. Corrija o JSON enviado. |
401 | MISSING_OR_INVALID_CREDENTIALS | — | Credenciais ausentes ou inválidas. | Renovar o access_token. |
403 | UNRECOGNIZED_CLIENT_ID / NOT_AUTHORIZED | — | Client_id não reconhecido ou sem autorização. | Entre em contato com o time de suporte. |
415 | UNSUPPORTED_MEDIA_TYPE | — | Content-Type não suportado. | Adicione o cabeçalho Content-Type: application/json |
422 | ACCOUNT_MANUAL_RECOVERY_REQUIRED / ENROLLMENT_NOT_ALLOWED | false | Rejeitado por regras de negócio internas da LATAM. | Direcione o usuário para o suporte da LATAM. / Não tente novamente. |
500 | UNEXPECTED_ERROR | — | Erro inesperado no servidor. | Tentar novamente. Registrar traceId. |
504 | GATEWAY_TIMEOUT | — | Serviço downstream não respondeu a tempo. | Tentar novamente. Registrar traceId. |
Regra importante
Se
enrollmentAccepted = false, o parceiro NÃO DEVE chamar nenhuma API subsequente do LATAM Pass (ex.: Lifecycle, Accrual, Redemption ou qualquer outra API downstream), pois o usuário não existirá no ecossistema LATAM e essas chamadas retornarão erros.
Documentação técnica
Clique aqui para acessá-la.