From 6b39b9d8c926aa1e7667c7457cbaa665d5aaac1f Mon Sep 17 00:00:00 2001 From: X3R0TH THE PROTOGEN Date: Sun, 15 Mar 2026 19:19:05 +0000 Subject: [PATCH] Atualizar COMOUSARAAPI.md --- COMOUSARAAPI.md | 244 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 240 insertions(+), 4 deletions(-) diff --git a/COMOUSARAAPI.md b/COMOUSARAAPI.md index 0f8ba9c..c4e5201 100644 --- a/COMOUSARAAPI.md +++ b/COMOUSARAAPI.md @@ -25,32 +25,268 @@ Authorization: Bearer SEU_TOKEN_AQUI | `POST` | `/api/estudantes/cadastro` | Cria um novo estudante | | `POST` | `/api/estudantes/login` | Autentica e retorna o token JWT | +#### `POST /api/estudantes/cadastro` + +**Body:** +```json +{ + "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`):** +```json +{ + "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:** +```json +{ + "email": "joao@email.com", + "senha": "minhasenha" +} +``` + +**Resposta (`200 OK`):** +```json +{ + "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/{id}` | Lista todas as tarefas de um estudante | -| `GET` | `/api/tarefas/estudante/{id}/pendentes` | Lista apenas as tarefas não concluídas | +| `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:** +```json +{ + "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` — formato `YYYY-MM-DD`, deve ser uma data futura + +**Resposta (`201 Created` / `200 OK`):** +```json +{ + "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:** +```json +{ + "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`):** +```json +{ + "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:** +```json +{ + "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`):** +```json +{ + "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 da API seguem a estrutura abaixo: +Todas as respostas seguem a estrutura: ```json { "data": { ... }, "message": "Sucesso", - "timestamp": "2026-03-01T19:00:00" + "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