# 01. 🔐 Autenticação

**Autenticação e controle de acesso** Sistema de autenticação OAuth2 com tokens JWT para acesso seguro à API. **Recursos disponíveis:**

* Autenticação OAuth2 com Bearer tokens
* Tokens sem expiração automática
* Controle de sessões de usuário
* Integração com aplicações externas

## Autenticação OAuth2

> \*\*Endpoint principal para autenticação na API Maino\*\*\
> \
> Implementa o protocolo OAuth2 para gerar tokens JWT de acesso à API.\
> Este endpoint é o ponto de entrada para todas as integrações e deve ser\
> usado antes de acessar qualquer outro recurso protegido da API.\
> \
> \*\*Pré-requisitos:\*\*\
> \- \`Application UID\` fornecido pela equipe Maino\
> \- Credenciais válidas de usuário no sistema\
> \- Usuário deve ter permissões de API ativadas\
> \
> \*\*Fluxo de autenticação:\*\*\
> 1\. Envie \`application\_uid\`, \`email\` e \`password\`\
> 2\. Sistema valida as credenciais e permissões\
> 3\. Retorna dados da empresa e tokens de acesso\
> 4\. Use o \`access\_token\` como Bearer Token em outras requisições\
> \
> \*\*Características do token:\*\*\
> \- Validade: 24 horas\
> \- Formato: JWT (JSON Web Token)\
> \- Escopo: Acesso completo à API conforme permissões do usuário\
> \- Renovação: Usar \`refresh\_token\` para renovar sem nova autenticação\
> \
> \*\*Segurança:\*\*\
> \- Tokens são únicos por usuário e aplicação\
> \- Dados sensíveis nunca são armazenados no token\
> \- Controle de IP e rate limiting aplicados\
> \- Auditoria completa de tentativas de login

```json
{"openapi":"3.0.1","info":{"title":"Mainô API","version":"v2.0"},"tags":[{"name":"01. 🔐 Autenticação","description":"**Autenticação e controle de acesso**\nSistema de autenticação OAuth2 com tokens JWT para acesso seguro à API.\n**Recursos disponíveis:**\n- Autenticação OAuth2 com Bearer tokens\n- Tokens sem expiração automática\n- Controle de sessões de usuário\n- Integração com aplicações externas"}],"servers":[{"url":"https://api.maino.com.br/api/v2","description":"Servidor de Produção"}],"paths":{"/authentication":{"post":{"summary":"Autenticação OAuth2","tags":["01. 🔐 Autenticação"],"description":"**Endpoint principal para autenticação na API Maino**\n\nImplementa o protocolo OAuth2 para gerar tokens JWT de acesso à API.\nEste endpoint é o ponto de entrada para todas as integrações e deve ser\nusado antes de acessar qualquer outro recurso protegido da API.\n\n**Pré-requisitos:**\n- `Application UID` fornecido pela equipe Maino\n- Credenciais válidas de usuário no sistema\n- Usuário deve ter permissões de API ativadas\n\n**Fluxo de autenticação:**\n1. Envie `application_uid`, `email` e `password`\n2. Sistema valida as credenciais e permissões\n3. Retorna dados da empresa e tokens de acesso\n4. Use o `access_token` como Bearer Token em outras requisições\n\n**Características do token:**\n- Validade: 24 horas\n- Formato: JWT (JSON Web Token)\n- Escopo: Acesso completo à API conforme permissões do usuário\n- Renovação: Usar `refresh_token` para renovar sem nova autenticação\n\n**Segurança:**\n- Tokens são únicos por usuário e aplicação\n- Dados sensíveis nunca são armazenados no token\n- Controle de IP e rate limiting aplicados\n- Auditoria completa de tentativas de login","parameters":[],"responses":{"200":{"description":"Autenticação realizada com sucesso","content":{"Autenticação bem-sucedida":{},"application/json":{"schema":{"type":"object","description":"Dados da empresa e tokens de acesso","additionalProperties":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email do usuário autenticado"},"user_name":{"type":"string","description":"Nome do usuário no sistema"},"company_name":{"type":"string","description":"Razão social da empresa"},"cnpj":{"type":"string","description":"CNPJ da empresa (chave do objeto)"},"access_token":{"type":"string","description":"Token JWT de acesso à API (use como Bearer Token)"},"refresh_token":{"type":"string","description":"Token para renovação do access_token"}}}}}}},"401":{"description":"Falha na autenticação"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"application_uid":{"type":"string","format":"uuid","description":"UUID único da aplicação fornecido pela Maino"},"email":{"type":"string","format":"email","description":"Email do usuário cadastrado no sistema"},"password":{"type":"string","format":"password","description":"Senha do usuário"}},"required":["application_uid","email","password"]}}}}}}}}
```
