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 o token de acesso. Consulte a documentação Autenticação para todas as informações.
Requisição
POST https://api.latampass.com/sandbox/v1/customer/loyalty/partner/member/enroll
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.
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 anteriormente. Válido por 24 horas. |
| 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. |
| string | Sim | Endereço de e-mail do cliente. Máx. 254 caracteres. | |
| birthDate | string | Sim | Data de nascimento no formato ISO-8601 (YYYY-MM-DD). |
| gender | string | Não | Sexo do cliente. Valores possíveis: M, F, I. Se omitido, assume o valor padrão I. |
| 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. Este campo deve ser true — se false ou não enviado, a requisição será rejeitada. |
| parentalConsent | boolean | Condicional | Obrigatório para residentes brasileiros com menos de 12 anos. Quando true, o remetente declara ser pai, mãe ou responsável legal do menor e consente com o tratamento dos dados pessoais pela LATAM. Se obrigatório e não enviado ou false, a requisição será rejeitada. Não validado para usuários com 12 anos ou mais, ou para residentes não brasileiros. |
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. BR: CPF. Demais países (recomendados): DNI, RUT, PASSPORT. PASSPORT é permitido apenas quando documentCountry não for BR. |
| documentNumber | string | Sim | Número do documento, sem espaços. Apenas alfanuméricos, ponto e hífen. De 4 a 32 caracteres. |
Campos do objeto phone
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| countryCode | string | Sim | Código de discagem internacional do país, com 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:
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 |
|---|---|---|---|
| 201 | ENROLLMENT_ACCEPTED | true | Nova conta criada com sucesso. |
| 200 | ACCOUNT_ALREADY_EXISTS | true | Conta já existente. Pode conter URL de recuperação. |
| 400 | INVALID_REQUEST / JSON_PARSE_ERROR | — | Erro de validação ou JSON malformado. |
| 401 | MISSING_OR_INVALID_CREDENTIALS | — | Credenciais ausentes ou inválidas. |
| 403 | UNRECOGNIZED_CLIENT_ID / NOT_AUTHORIZED | — | Client_id não reconhecido ou sem autorização. |
| 415 | UNSUPPORTED_MEDIA_TYPE | — | Content-Type não suportado. |
| 422 | ACCOUNT_MANUAL_RECOVERY_REQUIRED / ENROLLMENT_NOT_ALLOWED | false | Rejeitado por regras de negócio. |
| 500 | UNEXPECTED_ERROR | — | Erro inesperado no servidor. |
| 504 | GATEWAY_TIMEOUT | — | Serviço downstream não respondeu a tempo. |
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.