M4TCH.AI

M4TCH.AI

API Reference

Autenticação & Login

O módulo de Autenticação do M4TCH.AI é projetado para máxima segurança e retenção. Utilizamos um fluxo de Password + Email OTP (One Time Password). O acesso às rotas privadas do app é garantido via JWT (JSON Web Token).

Ciclo de Vida do Usuário

01.

Cadastro & Bloqueio

O backend salva o usuário com verified: 0 e dispara um PIN de 6 dígitos pro e-mail. O app bloqueia a navegação.

02.

Verificação (OTP)

O usuário insere o PIN. O backend valida o tempo, atualiza para verified: 1 e libera o app.

03.

Login Inteligente

No Login, o AuthScreen decide se manda pra Home ou força a verificação dependendo da flag retornada pela API.

Criação de Conta

POST /api/auth/signup

Cria um novo usuário, faz o hash da senha via bcrypt, gera o PIN na tabela verification_codes e dispara o e-mail em background.

Request Body
{
  "email": "user@m4tchai.com",
  "password": "securePassword123",
  "lang": "pt" // Idioma dinâmico da UI
}
Response (201 Created)
{
  "message": "Conta criada com sucesso.",
  "token": "eyJhbG...",
  "user": {
    "id": 42,
    "email": "user@...",
    "verified": 0,
    "lang": "pt"
  }
}

Acesso de Usuário

POST /api/auth/login
React Native Integration

A flag verified retornada pelo backend é utilizada no AuthScreen.tsx para definir o fluxo condicional do Navigation (Home vs VerifyEmail).

Request Body
{
  "email": "user@m4tchai.com",
  "password": "..."
}
200 OK (Sucesso)
{
  "message": "Login realizado.",
  "token": "eyJhb...",
  "user": {
    "id": 42,
    "email": "user@...",
    "verified": 1
  }
}
401 Unauthorized
{
  "message": "E-mail ou senha inválidos."
}

Validação OTP (PIN de 6 dígitos)

POST /api/auth/verify-code
Request Body
{
  "email": "user@m4tchai.com",
  "code": "123456"
}
200 OK
{
  "message": "E-mail verificado.",
  "token": "NovoTokenValido...",
  "user": { "verified": true, ... }
}

Utilitários de Segurança

POST /api/auth/resend-code

Gera e reenvia um novo PIN. Regra Anti-Tracking: retorna sucesso silencioso para evitar rastreio de e-mails cadastrados.

Body
{ "email": "user@m4tchai.com" }
PUT /api/auth/update-email

Altera o e-mail, força a verificação a zerar (verified: 0) e invalida PINs antigos. Requer Token Bearer.

Headers & Body
Authorization: Bearer {token}
{ "email": "novo@m4tchai.com" }