Autenticação
Autentique-se na API do GitScrum usando tokens Bearer. Faça login com e-mail e senha, gerencie MFA, renove e revogue tokens.
Todas as requisições à API exigem um token Bearer no header Authorization. Os tokens são emitidos pelo endpoint de login e expiram após 1 ano.
Authorization: Bearer {token}Login
POST /auth/login
Autentica um usuário com e-mail e senha. Retorna um token Bearer para chamadas subsequentes à API.
curl -X POST https://services.gitscrum.com/auth/login \
-H "Content-Type: application/json" \
-H "X-Client-Type: api" \
-d '{
"email": "jane@acme.co",
"password": "your-password"
}'Corpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | Sim | E-mail da conta |
password | string | Sim | Senha da conta |
language | string | Não | Idioma preferido: en, es, pt, fr |
token_invitation | string | Não | Token de convite do workspace para ingresso automático no login |
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
Content-Type | Sim | application/json |
X-Client-Type | Recomendado | Defina como api para integrações via API |
Resposta 200 OK
{
"data": {
"companies": [
{
"slug": "acme-corp",
"name": "Acme Corp",
"logo": "https://cdn.gitscrum.com/logo.png"
}
],
"user": {
"id": 1,
"uuid": "user-uuid-123",
"name": "Jane Smith",
"username": "janesmith",
"email": "jane@acme.co",
"avatar": "https://avatar.url/jane.jpg",
"headline": "Lead Developer",
"timezone_name": "Europe/Lisbon",
"language": "en"
},
"token_type": "Bearer",
"access_token": "eyJ0eXAiOiJKV1Q..."
}
}Respostas de erro
| Status | Condição | Corpo |
|---|---|---|
404 | E-mail ou senha incorretos | { "message": "Incorrect email or password." } |
404 | Conta desativada | { "message": "This account is disabled." } |
403 | Workspace no limite de capacidade | { "message": "...", "errorcode": "WORKSPACEAT_CAPACITY" } |
403 | Sem acesso ao workspace | { "message": "...", "errorcode": "NOWORKSPACE_ACCESS" } |
MFA (Autenticação em Dois Fatores)
Se o MFA estiver habilitado na conta, o endpoint de login retorna um desafio em vez de um token.
Etapa 1 — Login retorna o desafio MFA
{
"mfa_required": true,
"mfa_token": "random-64-character-string",
"message": "MFA verification required"
}O mfa_token é válido por 5 minutos.
Etapa 2 — Verificar o código MFA
POST /auth/login/mfa-verify
curl -X POST https://services.gitscrum.com/auth/login/mfa-verify \
-H "Content-Type: application/json" \
-d '{
"mfa_token": "random-64-character-string",
"mfa_code": "123456"
}'| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
mfa_token | string | Sim | Token da resposta do desafio MFA |
mfa_code | string | Sim | Código TOTP de 6 dígitos do seu aplicativo autenticador, ou um código de recuperação |
Retorna a mesma resposta 200 OK de um login padrão com access_token.
Atalho — Você também pode enviar omfa_codediretamente no corpo da requisição inicial/auth/loginpara pular o fluxo em duas etapas, caso já tenha o código TOTP disponível.
Verificar autenticação
POST /auth/me
Retorna o perfil do usuário autenticado. Use para validar um token.
curl -X POST https://services.gitscrum.com/auth/me \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json"Resposta 200 OK
{
"data": {
"id": 1,
"uuid": "user-uuid-123",
"name": "Jane Smith",
"username": "janesmith",
"email": "jane@acme.co",
"avatar": "https://avatar.url/jane.jpg",
"headline": "Lead Developer",
"timezone_name": "Europe/Lisbon",
"language": "en"
}
}Renovar token
POST /auth/refresh
Revoga o token atual e emite um novo. Use para rotação de tokens sem exigir que o usuário faça login novamente.
curl -X POST https://services.gitscrum.com/auth/refresh \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json"Resposta 200 OK
{
"data": {
"token_type": "Bearer",
"access_token": "eyJ0eXAiOiJKV1Q..."
}
}Após a renovação, o token anterior é imediatamente revogado. Atualize o token armazenado com o novo access_token.Logout
POST /auth/logout
Revoga o token atual. O token não pode ser usado após esta chamada.
curl -X POST https://services.gitscrum.com/auth/logout \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json"Resposta 200 OK
{
"message": "Successful logout"
}Resposta de erro
Se o token estiver ausente, inválido ou expirado, a API retorna 401 Unauthorized:
{
"error": "Unauthorized",
"message": "Invalid or expired token"
}Referência de token
| Propriedade | Valor |
|---|---|
| Tipo do token | Bearer (Laravel Passport Personal Access Token) |
| Validade | 1 ano |
| Formato | JWT |
| Enviado via | Header Authorization: Bearer {token} |
| Resolução de escopo | Automática, com base no seu plano de assinatura |
| Revogação | No logout, renovação ou revogação manual |
Boas práticas de segurança
- Nunca exponha tokens em código client-side ou repositórios públicos
- Use variáveis de ambiente para armazenar tokens nas suas aplicações
- Renove tokens periodicamente usando o endpoint
/auth/refresh - Use apenas HTTPS — a API rejeita requisições HTTP sem criptografia
- Trate o MFA — sempre verifique
mfa_required: truenas respostas de login