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": "[email protected]",
"password": "123456",
"is_teacher": false
}
Para o cadastro de um professor basta enviar o campo
is_teacher: true
no corpo da requisição.
{
"id": "20184906",
"name": "Lucas Sônego",
"email": "[email protected]",
"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": "[email protected]",
"password": "123456"
}
{
"user": {
"id": "20184906",
"name": "Lucas Sônego",
"email": "[email protected]",
"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": "[email protected]",
"is_teacher": false
},
}
{
"user": {
"id": "20184906",
"name": "Lucas Sônego",
"email": "[email protected]",
"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": "[email protected]",
"oldPassword": "123456",
"password": "654321",
"is_teacher": true
}
{
"id": "20184906",
"name": "Lucas Sônego",
"email": "[email protected]",
"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": "[email protected]",
"is_teacher": false
},
{
"id": "2",
"name": "Usuario 2",
"email": "[email protected]",
"is_teacher": false
},
{
"id": "3",
"name": "Usuario 3",
"email": "[email protected]",
"is_teacher": true
}
]
[
{
"id": "1",
"name": "Professor 1",
"email": "[email protected]",
"is_teacher": true,
"disciplines": [
{
"id": "2020D1",
"name": "Disciplina 1"
}
]
},
{
"id": "2",
"name": "Professor 2",
"email": "[email protected]",
"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": "[email protected]"
}
}
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": "[email protected]"
}
}
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": "[email protected]"
}
}
],
"disciplines": [
{
"id": "2020D2",
"name": "Discipline 2",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
}
},
{
"id": "2020D3",
"name": "Discipline 3",
"teacher": {
"id": "234567",
"name": "Teacher 2",
"email": "[email protected]"
}
}
]
}
Com query teacher
:
[
{
"id": "2020D1",
"name": "Discipline 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
}
},
{
"id": "2020D2",
"name": "Discipline 2",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
}
},
{
"id": "2020D3",
"name": "Discipline 3",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
}
}
]
Com query id
(para o professor vinculado a disciplina):
{
"id": "2020D1",
"name": "Disciplina 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
},
"enrollments": [
{
"created_at": "2020-04-20T15:31:33.477Z",
"student": {
"id": "1234",
"name": "Estudante 1",
"email": "[email protected]"
}
},
{
"created_at": "2020-04-20T15:32:21.477Z",
"student": {
"id": "4321",
"name": "Estudante 2",
"email": "[email protected]"
}
}
]
}
Com query id
(para um estudante):
{
"id": "2020D1",
"name": "Disciplina 1",
"teacher": {
"id": "654321",
"name": "Teacher 1",
"email": "[email protected]"
}
}
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": "[email protected]"
}
},
"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": "[email protected]"
}
},
"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": "[email protected]"
}
},
{
"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": "[email protected]"
}
}
]
},
{
"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": "[email protected]"
}
}
]
}
]
}
]
{
"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": "[email protected]"
}
},
"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": "[email protected]"
}
}
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": "[email protected]"
}
}
},
"student": {
"id": "123456",
"name": "Test User",
"email": "[email protected]"
}
}
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: "[email protected]"
},
task: {
id: "TD1di5mxL",
title: "Test",
description: "test",
code: "function test(){}",
language: null,
closed_at: null,
discipline: {
id: "TD1",
name: "Test Discipline 1"
}
}
}
];