7.5 KiB
Guia de Uso da API - Agenda Digital para Estudantes
Esta API foi desenvolvida em Java (Spring Boot) com MongoDB para auxiliar estudantes na organização de tarefas e compromissos acadêmicos.
Autenticação
A maioria dos endpoints requer autenticação via Token JWT. Para obtê-lo:
- Realize o login em
POST /api/estudantes/login. - Extraia o campo
tokendo corpo da resposta. - Inclua o token no cabeçalho de todas as requisições subsequentes:
Authorization: Bearer SEU_TOKEN_AQUI
Endpoints
Estudantes
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/estudantes/cadastro |
Cria um novo estudante |
POST |
/api/estudantes/login |
Autentica e retorna o token JWT |
POST /api/estudantes/cadastro
Body:
{
"nome": "João Silva",
"email": "joao@email.com",
"senha": "minhasenha",
"curso": "Ciência da Computação",
"periodo": 3
}
senha— mínimo 6 caracteres |periodo— mínimo 1
Resposta (201 Created):
{
"data": {
"id": "abc123",
"nome": "João Silva",
"email": "joao@email.com",
"curso": "Ciência da Computação",
"periodo": 3
},
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
POST /api/estudantes/login
Body:
{
"email": "joao@email.com",
"senha": "minhasenha"
}
Resposta (200 OK):
{
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9...",
"estudante": {
"id": "abc123",
"nome": "João Silva",
"email": "joao@email.com",
"curso": "Ciência da Computação",
"periodo": 3
}
},
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
Tarefas
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/tarefas |
Cria uma nova tarefa |
GET |
/api/tarefas/estudante/{estudanteId} |
Lista todas as tarefas de um estudante |
GET |
/api/tarefas/estudante/{estudanteId}/pendentes |
Lista apenas as tarefas não concluídas |
GET |
/api/tarefas/estudante/{estudanteId}/data?data= |
Lista tarefas de uma data específica |
GET |
/api/tarefas/estudante/{estudanteId}/periodo?inicio=&fim= |
Lista tarefas em um intervalo de datas |
GET |
/api/tarefas/{id} |
Retorna os detalhes de uma tarefa específica |
PUT |
/api/tarefas/{id} |
Atualiza os dados de uma tarefa existente |
PATCH |
/api/tarefas/{id}/concluir |
Marca uma tarefa como concluída |
DELETE |
/api/tarefas/{id} |
Remove uma tarefa |
POST /api/tarefas · PUT /api/tarefas/{id}
Body:
{
"titulo": "Trabalho de Cálculo",
"descricao": "Resolver lista de integrais",
"prioridade": "ALTA",
"status": "PENDENTE",
"dataEntrega": "2026-04-10",
"disciplinaId": "disc456",
"estudanteId": "abc123"
}
prioridade—BAIXA|MEDIA|ALTA|URGENTE
status—PENDENTE|EM_ANDAMENTO|CONCLUIDA|ATRASADA
dataEntrega— formatoYYYY-MM-DD, deve ser uma data futura
Resposta (201 Created / 200 OK):
{
"data": {
"id": "trf789",
"titulo": "Trabalho de Cálculo",
"descricao": "Resolver lista de integrais",
"prioridade": "ALTA",
"status": "PENDENTE",
"dataEntrega": "2026-04-10",
"disciplinaId": "disc456",
"estudanteId": "abc123"
},
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
GET /api/tarefas/estudante/{estudanteId}/data
Query params:
| Parâmetro | Tipo | Exemplo |
|---|---|---|
data |
LocalDate (ISO) |
2026-04-10 |
GET /api/tarefas/estudante/{estudanteId}/periodo
Query params:
| Parâmetro | Tipo | Exemplo |
|---|---|---|
inicio |
LocalDate (ISO) |
2026-04-01 |
fim |
LocalDate (ISO) |
2026-04-30 |
Disciplinas
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/disciplinas |
Cria uma nova disciplina |
GET |
/api/disciplinas/estudante/{estudanteId} |
Lista todas as disciplinas de um estudante |
GET |
/api/disciplinas/{id}?estudanteId= |
Retorna os detalhes de uma disciplina específica |
PUT |
/api/disciplinas/{id} |
Atualiza uma disciplina existente |
DELETE |
/api/disciplinas/{id}?estudanteId= |
Remove uma disciplina |
POST /api/disciplinas · PUT /api/disciplinas/{id}
Body:
{
"nome": "Cálculo II",
"professor": "Prof. Rodrigues",
"sala": "B-204",
"cor": "#FF5733",
"estudanteId": "abc123"
}
nomeeestudanteIdsão obrigatórios. Os demais campos são opcionais.
Resposta (201 Created / 200 OK):
{
"data": {
"id": "disc456",
"estudanteId": "abc123",
"nome": "Cálculo II",
"professor": "Prof. Rodrigues",
"sala": "B-204",
"cor": "#FF5733"
},
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
GET /api/disciplinas/{id} · DELETE /api/disciplinas/{id}
Query params:
| Parâmetro | Tipo | Exemplo |
|---|---|---|
estudanteId |
String |
abc123 |
Eventos
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/eventos |
Cria um novo evento |
GET |
/api/eventos/estudante/{estudanteId} |
Lista todos os eventos de um estudante |
GET |
/api/eventos/estudante/{estudanteId}/periodo?inicio=&fim= |
Lista eventos em um intervalo de data/hora |
GET |
/api/eventos/estudante/{estudanteId}/proximos |
Lista os próximos eventos do estudante |
GET |
/api/eventos/{id}?estudanteId= |
Retorna os detalhes de um evento específico |
PUT |
/api/eventos/{id} |
Atualiza um evento existente |
DELETE |
/api/eventos/{id}?estudanteId= |
Remove um evento |
POST /api/eventos · PUT /api/eventos/{id}
Body:
{
"titulo": "Prova de Cálculo II",
"descricao": "Conteúdo: integrais e séries",
"tipo": "PROVA",
"local": "Sala B-204",
"disciplinaId": "disc456",
"dataHora": "2026-04-15T14:00:00",
"estudanteId": "abc123"
}
tipo—AULA|PROVA|TRABALHO|ESTUDO|EXAME|OUTRO
dataHora— formato ISO 8601:YYYY-MM-DDTHH:MM:SS
Resposta (201 Created / 200 OK):
{
"data": {
"id": "evt321",
"estudanteId": "abc123",
"titulo": "Prova de Cálculo II",
"descricao": "Conteúdo: integrais e séries",
"tipo": "PROVA",
"local": "Sala B-204",
"disciplinaId": "disc456",
"dataHora": "2026-04-15T14:00:00"
},
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
GET /api/eventos/estudante/{estudanteId}/periodo
Query params:
| Parâmetro | Tipo | Exemplo |
|---|---|---|
inicio |
LocalDateTime (ISO) |
2026-04-01T00:00:00 |
fim |
LocalDateTime (ISO) |
2026-04-30T23:59:59 |
GET /api/eventos/{id} · DELETE /api/eventos/{id}
Query params:
| Parâmetro | Tipo | Exemplo |
|---|---|---|
estudanteId |
String |
abc123 |
Formato de Resposta
Todas as respostas seguem a estrutura:
{
"data": { ... },
"message": "Sucesso",
"timestamp": "2026-03-15T10:00:00"
}
Em caso de erro, o campo data pode ser null e message conterá a descrição do problema.
Execução
# Iniciar a aplicação
mvn spring-boot:run
# Executar os testes
mvn test