🔐 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
| Campo | Regra |
|---|---|
| Obrigatório, deve ser um email válido | |
| password | Obrigatório, mínimo 6 caracteres |
| name | Opcional |
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
| Header | Valor |
|---|---|
| Authorization | Bearer {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
| Header | Valor |
|---|---|
| Authorization | Bearer {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"