🔐 Auth Mock API

Simule um fluxo completo de autenticação JWT — login, refresh token, validação e logout — sem precisar de banco de dados.

Base URL https://api.apicode.com.br
📌 Sem banco de dados — qualquer email + senha com 6+ caracteres é aceito. Os tokens são gerados com HMAC SHA-256 e expiram em 15 minutos (access) / 7 dias (refresh).

Login

POST /api/auth/login Gera access token e refresh token

Payload

{ "email": "dev@example.com", "password": "123456", "name": "Dev Tester" }

Regras de validação

CampoRegra
emailObrigatório, deve ser um email válido
passwordObrigatório, mínimo 6 caracteres
nameOpcional

Resposta

{ "success": true, "message": "Login realizado com sucesso.", "data": { "token_type": "Bearer", "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI...", "expires_in": 900, "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI...", "refresh_expires_in": 604800, "user": { "id": "usr_mock_8f92a1", "name": "Dev Tester", "email": "dev@example.com" } } }

Refresh Token

POST /api/auth/refresh Gera um novo access_token válido

Payload

{ "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI..." }

Resposta

{ "success": true, "message": "Token renovado com sucesso.", "data": { "token_type": "Bearer", "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI...", "expires_in": 900 } }

Validar Token

GET /api/auth/me Valida o token e retorna dados do usuário

Headers

HeaderValor
AuthorizationBearer {access_token}

Resposta

{ "success": true, "message": "Token válido.", "data": { "user": { "id": "usr_mock_8f92a1", "name": "Dev Tester", "email": "dev@example.com" }, "token": { "type": "access", "expires_at": "2026-06-28T16:15:00-03:00" } } }

Logout simulado

POST /api/auth/logout Invalida a sessão atual

Headers

HeaderValor
AuthorizationBearer {access_token}

Resposta

{ "success": true, "message": "Logout simulado realizado com sucesso. Remova os tokens do cliente.", "data": null }

Códigos de status

200
OK
400
Payload inválido
401
Token ausente/inválido
422
Erro de validação
429
Rate limit

Exemplos de uso

// Login const login = await fetch('https://api.apicode.com.br/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: "dev@example.com", password: "123456" }) }); const auth = await login.json(); localStorage.setItem('access_token', auth.data.access_token); localStorage.setItem('refresh_token', auth.data.refresh_token); // Validar token const me = await fetch('https://api.apicode.com.br/api/auth/me', { headers: { 'Authorization': `Bearer ${localStorage.getItem('access_token')}` } }); // Refresh const refresh = await fetch('https://api.apicode.com.br/api/auth/refresh', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ refresh_token: localStorage.getItem('refresh_token') }) });
// Login const login = await axios.post('https://api.apicode.com.br/api/auth/login', { email: "dev@example.com", password: "123456" }); localStorage.setItem('access_token', login.data.data.access_token); // Validar token const me = await axios.get('https://api.apicode.com.br/api/auth/me', { headers: { 'Authorization': `Bearer ${localStorage.getItem('access_token')}` } }); // Refresh const refresh = await axios.post('https://api.apicode.com.br/api/auth/refresh', { refresh_token: localStorage.getItem('refresh_token') });
# Login curl -X POST https://api.apicode.com.br/api/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"dev@example.com","password":"123456"}' # Validar token (substitua TOKEN) curl -H "Authorization: Bearer TOKEN" \ https://api.apicode.com.br/api/auth/me # Refresh curl -X POST https://api.apicode.com.br/api/auth/refresh \ -H "Content-Type: application/json" \ -d '{"refresh_token":"SEU_REFRESH_TOKEN"}' # Logout curl -X POST https://api.apicode.com.br/api/auth/logout \ -H "Authorization: Bearer TOKEN"