Files
BackendFocusAgenda/COMOUSARAAPI.md

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:

  1. Realize o login em POST /api/estudantes/login.
  2. Extraia o campo token do corpo da resposta.
  3. 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"
}

prioridadeBAIXA | MEDIA | ALTA | URGENTE
statusPENDENTE | EM_ANDAMENTO | CONCLUIDA | ATRASADA
dataEntrega — formato YYYY-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"
}

nome e estudanteId sã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"
}

tipoAULA | 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