API responsável pelo gerenciamento de usuários, autenticação, licitações, anexos, categorias, secretarias e indicadores do sistema LicitSys.
💡 Swagger UI
http://localhost:8000/docs
- Sobre a API
- Arquitetura
- Autenticação
- Perfis de Acesso
- Módulos da API
- Auth
- Users
- Biddings
- Attachments
- Departments
- Categories
- Dashboard
- Códigos de Erro
- Swagger
A API do LicitSys foi desenvolvida utilizando FastAPI e segue os princípios REST para fornecer acesso aos recursos da plataforma.
Todos os endpoints são disponibilizados através do prefixo:
/v1
Base local padrão:
http://localhost:8000/v1
A API segue uma arquitetura em camadas.
Cliente HTTP
│
▼
Router
│
▼
Service
│
▼
Repository
│
▼
MySQL
- Recebe requisições HTTP
- Valida autenticação
- Faz validação inicial dos dados
- Implementa regras de negócio
- Realiza validações
- Orquestra operações
- Executa consultas SQL
- Manipula persistência dos dados
- MySQL
- Armazenamento permanente
As rotas protegidas utilizam JWT.
Cabeçalho obrigatório:
Authorization: Bearer <token>Fluxo:
Login
│
▼
JWT
│
▼
Bearer Token
│
▼
Endpoints Protegidos
O sistema possui quatro níveis de acesso.
| Perfil | Permissões |
|---|---|
| suporte | Controle total do sistema |
| admin | Administração geral |
| editor | Gestão de licitações |
| visitante | Apenas visualização |
| Módulo | Prefixo |
|---|---|
| Auth | /auth |
| Users | /users |
| Biddings | /biddings |
| Attachments | /attachments |
| Departments | /departments |
| Categories | /categories |
| Dashboard | /dashboard |
Prefixo:
/auth
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /login |
Login |
| POST | /register |
Cadastro |
| POST | /forgot-password |
Solicitar redefinição |
| POST | /reset-password |
Redefinir senha |
| POST | /visitor-access |
Gerar acesso visitante |
| POST | /remote-access |
Criar acesso remoto |
{
"email": "usuario@email.com",
"password": "senha"
}{
"access_token": "jwt",
"token_type": "bearer",
"user": {}
}{
"nome": "Nome do Usuário",
"email": "usuario@email.com",
"senha": "senha123"
}Perfil padrão:
visitante
Prefixo:
/users
| Método | Endpoint | Descrição |
|---|---|---|
| GET | / |
Listar usuários |
| GET | /me |
Usuário autenticado |
| PATCH | /me/password |
Alterar senha |
| PATCH | /{user_id}/role |
Alterar perfil |
| DELETE | /{user_id} |
Remover usuário |
{
"senha_atual": "senha123",
"nova_senha": "novaSenha123"
}{
"perfil": "admin"
}Valores válidos:
suporte
admin
editor
visitante
Prefixo:
/biddings
Gerente de Licitações:
suporte
admin
editor
| Método | Endpoint |
|---|---|
| GET | / |
| GET | /{bidding_id} |
| POST | / |
| PATCH | /{bidding_id} |
| DELETE | /{bidding_id} |
| Parâmetro | Tipo |
|---|---|
| page | integer |
| limit | integer |
| number | integer |
| year | integer |
| department_id | integer |
| category_id | integer |
| status | string |
| search | string |
{
"department_id": 1,
"category_id": 1,
"number": 10,
"year": 2026,
"bidding_type": "Pregão Eletrônico",
"status": "Aguardando Abertura",
"classification": "Global",
"object_name": "Aquisição de Equipamentos",
"object_description": "Descrição detalhada",
"estimated_value": 15000.50,
"publication_date": "2026-05-25",
"opening_date": "2026-06-10"
}Pregão Eletrônico
Concorrência Pública
Chamada Pública
Concorrência Presencial
Credenciamento
Dispensa Eletrônica
Inexigibilidade
Pregão Presencial
Aguardando Abertura
Aberto
Em Andamento
Suspenso
Revogado
Finalizado
Global
Item
Lote
Prefixo:
/attachments
| Método | Endpoint |
|---|---|
| POST | /{bidding_id} |
| GET | /{bidding_id} |
| GET | /{attachment_id}/download |
| DELETE | /{attachment_id} |
Content-Type:
multipart/form-data
Campo:
file
Prefixo:
/departments
| Método | Endpoint |
|---|---|
| GET | / |
| GET | /{department_id} |
| POST | / |
| PATCH | /{department_id} |
| DELETE | /{department_id} |
{
"sigla": "SEAD",
"nome": "Secretaria Municipal de Administração"
}Prefixo:
/categories
| Método | Endpoint |
|---|---|
| GET | / |
| GET | /{category_id} |
| POST | / |
| PATCH | /{category_id} |
| DELETE | /{category_id} |
{
"nome": "Por Item",
"tipo": "Item"
}Prefixo:
/dashboard
| Método | Endpoint |
|---|---|
| GET | /summary |
| GET | /latest-biddings |
| Código | Significado |
|---|---|
| 400 | Requisição inválida |
| 401 | Não autenticado |
| 403 | Sem permissão |
| 404 | Não encontrado |
| 409 | Conflito de dados |
| 500 | Erro interno |
A documentação interativa pode ser acessada através de:
http://localhost:8000/docs
ReDoc:
http://localhost:8000/redoc