| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| id | String | Apenas números | sim |
| name | String | - | sim |
| String | blablabla@blablabla | sim | |
| password | String | Ao menos 6 caracteres | sim |
| is_teacher | boolean | - | não (false por padrão) |
Método: POST
Rota: /users
{
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonego@ufpr.br",
"password": "123456",
"is_teacher": false
}Para o cadastro de um professor basta enviar o campo
is_teacher: trueno corpo da requisição.
{
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonego@ufpr.br",
"is_teacher": false
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| String | blablabla@blablabla | sim | |
| password | String | Ao menos 6 caracteres | sim |
Método: POST
Rota: /sessions
{
"email": "lucassonego@ufpr.br",
"password": "123456"
}{
"user": {
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonego@ufpr.br",
"is_teacher": false
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM..."
}Método: GET
Rota: /sessions
Query params (opcional): newtoken: true, retorna um novo token de autenticação
O cabeçalho da requisição deve conter o token de autenticação.
{
"user": {
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonego@ufpr.br",
"is_teacher": false
},
}{
"user": {
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonego@ufpr.br",
"is_teacher": false
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMzQ1NiIsImlhdCI6MTU4Nzc1ODMwMywiZXhwIjoxNTg4MzYzMTAzfQ.UtWJ0_Xz2kKU9feCI9lf72U1sB9dfAv5M5ffUjOI5JI"
}Para as requisições de edição de dados, podem ser enviados apenas os campos que serão alterados
| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| name | String | - | não |
| String | blablabla@blablabla | não | |
| oldPassword | String | Corresponder a senha antiga deste usuário | Apenas quando o campo password for enviado |
| password | String | Ao menos 6 caracteres | não |
| is_teacher | boolean | - | não |
Método: PUT
Rota: /users
O cabeçalho da requisição deve conter o token de autenticação.
{
"email": "lucassonegoo@gmail.com",
"oldPassword": "123456",
"password": "654321",
"is_teacher": true
}{
"id": "20184906",
"name": "Lucas Sônego",
"email": "lucassonegoo@gmail.com",
"is_teacher": true
}Método: GET
Rota: /users
O cabeçalho da requisição deve conter o token de autenticação.
Método: GET
Rota: /users
Query params: type=teachers ou type=students
O cabeçalho da requisição deve conter o token de autenticação.
[
{
"id": "1",
"name": "Usuario 1",
"email": "usuario1@ufpr.br",
"is_teacher": false
},
{
"id": "2",
"name": "Usuario 2",
"email": "usuario2@ufpr.br",
"is_teacher": false
},
{
"id": "3",
"name": "Usuario 3",
"email": "usuario3@ufpr.br",
"is_teacher": true
}
][
{
"id": "1",
"name": "Professor 1",
"email": "professor1@ufpr.br",
"is_teacher": true,
"disciplines": [
{
"id": "2020D1",
"name": "Disciplina 1"
}
]
},
{
"id": "2",
"name": "Professor 2",
"email": "professor2@ufpr.br",
"is_teacher": true,
"disciplines": [
{
"id": "2020D2",
"name": "Disciplina 2"
},
{
"id": "2020D3",
"name": "Disciplina 3"
}
]
}
]| Campo | Tipo de Dado | Requisitos | Obrigatório |
|---|---|---|---|
| id | String | identificação única | sim |
| name | String | - | sim |
Método POST
Rota /disciplines
O cabeçalho deve conter o token de autenticação de um usuário que seja professor
{
"id": "2020D1",
"name": "Disciplina 1"
}{
"id": "2020D1",
"name": "Disciplina 1",
"teacher": {
"id": "1",
"name": "Professor 1",
"email": "professor1@ufpr.br"
}
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| name | String | - | não |
| newTeacher | String | id válido, e de um usuário que seja professor | não |
Método: PUT
Rota: /disciplines/2020D1 *id da disciplina que deseja editar
O cabeçalho da requisição deve conter o token de autenticação do professor desta disciplina
{
"name": "Novo nome",
"newTeacher": "2"
}{
"id": "2020D1",
"name": "Novo nome",
"teacher": {
"id": "2",
"name": "Professor 2",
"email": "professor2@ufpr.br"
}
}Método: GET
Rota: /disciplines
O cabeçalho da requisição deve conter um token válido, que pode ser tanto de um professor quanto de um estudante.
Método: GET
Rota: /disciplines
Query params (opcionais):teacher=231412 *id do professor: Lista apenas as disciplinas do professor buscado.id=2020D1 *id da disciplina: Retorna dados da disciplina buscada, e lista todos os estudantes matriculados nesta disciplina
O cabeçalho da requisição deve conter um token válido, que pode ser tanto de um professor quanto de um estudante.
Sem query string:
{
"enrolled_disciplines": [
{
"id": "2020D1",
"name": "Discipline 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
}
],
"disciplines": [
{
"id": "2020D2",
"name": "Discipline 2",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
},
{
"id": "2020D3",
"name": "Discipline 3",
"teacher": {
"id": "234567",
"name": "Teacher 2",
"email": "teacher2@ufpr.br"
}
}
]
}Com query teacher:
[
{
"id": "2020D1",
"name": "Discipline 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
},
{
"id": "2020D2",
"name": "Discipline 2",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
},
{
"id": "2020D3",
"name": "Discipline 3",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
}
]Com query id (para o professor vinculado a disciplina):
{
"id": "2020D1",
"name": "Disciplina 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
},
"enrollments": [
{
"created_at": "2020-04-20T15:31:33.477Z",
"student": {
"id": "1234",
"name": "Estudante 1",
"email": "estudante1@ufpr.br"
}
},
{
"created_at": "2020-04-20T15:32:21.477Z",
"student": {
"id": "4321",
"name": "Estudante 2",
"email": "estudante2@ufpr.br"
}
}
]
}Com query id (para um estudante):
{
"id": "2020D1",
"name": "Disciplina 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "teacher1@ufpr.br"
}
}Método: DELETE
Rota: /disciplines/2020D1 *id da disciplina que deseja deletar
O cabeçalho da requisição deve conter o token de autenticação do professor desta disciplina
{
"message": "Disciplina removida com sucesso"
}OBS: Deletar uma disciplina não irá apaga-la do banco de dados (soft delete), a disciplina apenas não será mais listada.
Método: GET
Rota: /enrollments/2020D1 *id da disciplina
O cabeçalho da requisição deve conter o token de autenticação do estudante
{
"discipline_id": "2020D1",
"student_id": "20184906",
"createdAt": "2020-04-20T15:31:33.477Z"
}Método: DELETE
Rota: /enrollments/2020D1 *id da disciplina
O cabeçalho da requisição deve conter o token de autenticação do estudante matriculado
{
"message": "Matrícula removida"
}Método: POST
Rota: /tasks/2020D1 *id da disciplina
O cabeçalho da requisição deve conter o token de autenticação do professor vinculado à disciplina em que a tarefa será criada
{
"title": "Task 1",
"description": "Description for task 1",
"code": "function example()",
"language": "javascript"
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| title | String | - | sim |
| description | String | - | sim |
| code | String | - | não |
| language | String | - | não |
{
"id": "2020D1wAFgrq",
"discipline": {
"id": "2020D1",
"name": "Test discipline 1",
"teacher": {
"id": "654321",
"name": "Test Teacher",
"email": "testteacher@ufpr.br"
}
},
"title": "Task 1",
"description": "Description for task 1",
"code": "function example()",
"language": "javascript"
}Método: PUT
Rota: /tasks/2020D1 *id da disciplina
O cabeçalho da requisição deve conter o token de autenticação do professor vinculado à disciplina em que a tarefa foi criada
{
"title": "Task 1",
"description": "Description for task 1",
"code": "function example()",
"language": "javascript"
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| title | String | - | não |
| description | String | - | não |
| code | String | - | não |
| language | String | - | não |
{
"id": "2020D1wAFgrq",
"discipline": {
"id": "2020D1",
"name": "Test discipline 1",
"teacher": {
"id": "654321",
"name": "Test Teacher",
"email": "testteacher@ufpr.br"
}
},
"title": "Task 1",
"description": "Description for task 1",
"code": "function example()",
"language": "javascript"
}Método: GET
Rota: /tasks
Query params (opcionais): discipline=2020D1 *id da disciplinaid=2020D1wAFgrq *id da tarefa
[
{
"id": "2020D1",
"name": "Test discipline 1",
"tasks": [
{
"id": "2020D1O0hsGW",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.\r\n",
"code": "function teste(){}",
"language": "javascript",
"closed_at": null,
"answer": null
}
]
},
{
"id": "2020D2",
"name": "Test discipline 2",
"tasks": [
{
"id": "2020D2JwqUcr",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.\r\n",
"code": "function teste(){}",
"language": "javascript",
"closed_at": null,
"answer": null
},
{
"id": "2020D2di5mxL",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.",
"code": "function teste(){}",
"language": "javascript",
"closed_at": "2020-05-20T18:02:35.757Z",
"answer": {
"code": "function teste()",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": null,
"updated_at": "2020-05-18T00:10:48.309Z",
"accepted_at": "2020-05-18T00:10:48.309Z",
}
}
]
}
][
{
"id": "TD1",
"name": "Test Discipline 1",
"tasks": [
{
"id": "TD1di5mxL",
"title": "Task 1",
"description": "Task 1 desctiption",
"code": "function teste(){}",
"language": "javascript",
"created_at": "2020-05-17T22:20:50.982Z",
"answers": [
{
"id": "TD1di5mxL123456",
"code": "function test()",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": null,
"created_at": "2020-05-17T22:22:18.801Z",
"updated_at": "2020-05-18T00:10:48.310Z",
"accepted_at": "2020-05-18T00:10:48.309Z",
"student": {
"id": "123456",
"name": "Test User",
"email": "testuser@ufpr.br"
}
},
{
"id": "TD1di5mxL112233",
"code": "function test()",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": null,
"created_at": "2020-05-18T00:10:48.309Z",
"updated_at": "2020-05-18T00:10:48.309Z",
"accepted_at": null,
"student": {
"id": "112233",
"name": "Test User 2",
"email": "testuser2@ufpr.br"
}
}
]
},
{
"id": "TD1JwqUcr",
"title": "Task 2",
"description": "Task 2 description",
"code": "function test(){}",
"language": "javascript",
"created_at": "2020-05-19T01:44:06.797Z",
"answers": []
}
]
},
{
"id": "TD2",
"name": "Test Discipline 2",
"tasks": [
{
"id": "TD2Mzc2NT",
"title": "Tarefa respondida",
"description": "tarefa respondida",
"code": null,
"language": null,
"created_at": "2020-05-19T23:05:16.038Z",
"answers": [
{
"id": "TD2Mzc2NT123456",
"code": "function test()",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": null,
"created_at": "2020-06-18T17:02:17.238Z",
"updated_at": "2020-06-19T20:56:18.500Z",
"accepted_at": null,
"student": {
"id": "123456",
"name": "Test User",
"email": "testuser@ufpr.br"
}
}
]
}
]
}
]{
"open": [
{
"id": "2020D1JwqUcr",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.",
"code": "function teste(){}",
"language": "javascript",
"closed_at": null
}
],
"closed": [
{
"id": "2020D1di5mxL",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.",
"code": "function teste(){}",
"language": "javascript",
"closed_at": "2020-05-20T18:02:35.757Z"
}
]
}{
"id": "2020D1JwqUcr",
"title": "Teste",
"description": "Mussum Ipsum, cacilds vidis litro abertis.\r\n",
"code": "function teste(){}",
"language": "javascript",
"closed_at": null,
"discipline": {
"id": "2020D1",
"name": "Test discipline 1",
"teacher": {
"id": "654321",
"name": "Test Teacher",
"email": "testteacher@ufpr.br"
}
},
"answer": {
"id": "2020D1JwqUcr123456",
"code": "function teste()",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": "2020-05-18T00:10:48.309Z",
"accepted_at": "2020-05-18T00:10:48.309Z"
},
"user_enrolled": true
}Método: DELETE
Rota: /tasks/2020D1wAFgrq *id da tarefa
O cabeçalho da requisição deve conter o token de autenticação do professor vinculado à disciplina em que a tarefa foi criada
{
"message": "Tarefa fechada com sucesso"
}Método: PATCH
Rota: /tasks/2020D1wAFgrq *id da tarefa
O cabeçalho da requisição deve conter o token de autenticação do professor vinculado à disciplina em que a tarefa foi criada
{
"message": "Tarefa reaberta com sucesso"
}Método: POST
Rota: /answers/2020D1JwqUcr *id da tarefa
O cabeçalho da requisição deve conter o token de autenticação de um estudante matriculadona disciplina em que a tarefa foi criada
{
"code": "function example()"
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| code | String | - | sim |
{
"id": "2020D1JwqUcr20184906",
"task": {
"id": "2020D1JwqUcr",
"title": "Title for the task",
"description": "Description for the task",
"code": "function exampleTask()",
"closed_at": null
},
"code": "function example"
}Método: PUT
Rota: /answers/2020D1JwqUcr *id da tarefa
O cabeçalho da requisição deve conter o token de autenticação de um estudante matriculadona disciplina em que a tarefa foi criada
{
"code": "function example()"
}{
"id": "2020D1JwqUcr20184906",
"task": {
"id": "2020D1JwqUcr",
"title": "Title for the task",
"description": "Description for the task",
"code": "function exampleTask()",
"closed_at": null
},
"code": "function example"
}Método: GET
Rota: /answers/2020D1JwqUcr *id da tarefa
O cabeçalho da requisição deve conter o token de autenticação de um estudante matriculadona disciplina em que a tarefa foi criada
{
"code": "function example()",
"language": "javascript",
"feedback": "Nice",
"feedback_code": null,
"feedback_at": "2020-05-18T00:10:48.309Z",
"accepted_at": "2020-05-18T00:10:48.309Z",
"updated_at": "2020-05-18T00:09:23.623Z",
"student": {
"id": "123456",
"name": "Test User",
"email": "testuser@ufpr.br"
}
}Método: GET
Rota: /answers
Query params: id: TD2-5123456 *id da resposta
O cabeçalho da requisição deve conter o token de autenticação de um estudante matriculadona disciplina em que a tarefa foi criada
{
"id": "TD2-5123456",
"code": "function teste(parametro) {\n if (parametro === \"teste\") {\n console.log(\"teste\");\n }\n}\n\nteste(\"teste\");",
"language": "javascript",
"feedback": null,
"feedback_code": null,
"feedback_at": null,
"created_at": "2020-06-18T17:02:17.238Z",
"updated_at": "2020-06-19T20:56:18.500Z",
"accepted_at": null,
"task": {
"id": "TD2-5",
"title": "Tarefa teste 5",
"description": "tarefa teste 5",
"code": "function teste()",
"language": null,
"closed_at": "2020-06-29T19:09:52.880Z",
"discipline": {
"id": "TD2",
"name": "Testes de Tarefas",
"teacher": {
"id": "654321",
"name": "Test Teacher",
"email": "testteacher@ufpr.br"
}
}
},
"student": {
"id": "123456",
"name": "Test User",
"email": "testuser@ufpr.br"
}
}Método: PUT
Rota: /feedback/2020D1JwqUcr20184906 *id da resposta
O cabeçalho da requisição deve conter o token de autenticação do professor vinculado à disciplina em que a tarefa foi criada
{
"feedback": "Some feedback",
"code": "function someCode()",
"accepted": true
}| Campo | Tipo de dado | Requisitos | Obrigatório |
|---|---|---|---|
| feedback | String | - | não |
| code | String | - | não |
| accepted | Boolean | - | não |
{
"id": "2020D1JwqUcr20184906",
"code": "function example()",
"feedback": "Some feedback",
"feedback_code": "function someCode()",
"accepted_at": "2020-05-18T00:10:48.309Z"
}Método: GET
Rota: /feedback
O cabeçalho da requisição deve conter um token de autenticação.
(Lista os feedbacks de todas as respostas enviadas pelo estudante)
[
{
"id":"TD1di5mxL123456",
"code": "function answer()",
"language": "javascript",
"feedback": "All ok",
"feedback_code": null,
"feedback_at": "2020-06-24T20:43:14.510Z",
"accepted_at": "2020-06-24T20:43:14.510Z",
"updated_at": "2020-05-11T00:06:07.775Z",
"task": {
"id": "TD1di5mxL",
"title": "Test",
"description": "test",
"code": "function test(){}",
"language": null,
"closed_at": null,
"discipline": {
"id": "TD1",
"name": "Test discipline 1"
}
}
}
](Lista todos os feedbacks enviados por esse professor)
[
{
id: "TD1di5mxL123456",
code: "function answer()",
language: "javascript",
feedback: "All ok",
feedback_code: null,
feedback_at: "2020-06-24T20:43:14.510Z",
accepted_at: "2020-06-24T20:43:14.510Z",
updated_at: "2020-05-11T00:06:07.775Z",
student: {
id: "123456",
name: "Test User",
email: "testuser@ufpr.br"
},
task: {
id: "TD1di5mxL",
title: "Test",
description: "test",
code: "function test(){}",
language: null,
closed_at: null,
discipline: {
id: "TD1",
name: "Test Discipline 1"
}
}
}
];