alexmiguel95 / api-kanvas

api para gerenciar um curso online.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

API Kanvas

Como utilizar o projeto Tecnologias utilizadas
1º Clone o projeto em um diretório de sua preferência. Python com django e djangorestframework.
2º Instale todos a dependencias do projeto que estão listadas no arquivo requirements.txt. pip install -r requeriments.txt
3º configure as informações de acesso ao DATABASES no arquivo settings.py
4º Execute o comando ./manage.py migrate para criar todas as tabelas
5º Agora é só rodar o servidor. Estando da raiz da aplicação digite: ./manage.py runserver

 

 

Endpoints públicos

POST /api/accounts/

Criar um usuário. Temos três tipos de usuários:

  • Estudante - terá ambos os campos is_staff e > is_superuser com o valor False
  • Facilitador - terá os campos is_staff == True e > is_superuser == False
  • Instrutor - terá ambos os campos is_staff e is_superuser com o valor True

Criando um estudante

Body JSON:

{
  "username": "student1",
  "password": "1234",
  "is_superuser": false,
  "is_staff": false
}

Response - HTTP Status 201:

{
  "id": 1,
  "is_superuser": false,
  "is_staff": false,
  "username": "student1"
}

Criando um facilitador

Body JSON:

{
  "username": "facilitator1",
  "password": "1234",
  "is_superuser": false,
  "is_staff": true
}

Response - HTTP Status 201:

{
  "id": 2,
  "is_superuser": false,
  "is_staff": true,
  "username": "facilitator1"
}

Criando um instrutor

Body JSON:

{
  "username": "instructor1",
  "password": "1234",
  "is_superuser": true,
  "is_staff": true
}

Response - HTTP Status 201:

{
  "id": 3,
  "is_superuser": true,
  "is_staff": true,
  "username": "instructor1"
}

POST /api/login/

Fazer login

Body JSON:

{
	"username": "facilitador1",
	"password": "12345"
}

Response - HTTP Status 200:

{
  "token": "dfd384673e9127213de6116ca33257ce4aa203cf"
}

GET /api/courses/

listar todos os cursos, mostrando cada aluno matriculado no curso.

Response - HTTP Status 200:

[
  {
    "id": 1,
    "name": "Javascript 101",
    "user_set": [
      {
        "id": 1,
        "is_superuser": false,
        "is_staff": false,
        "username": "luiz"
      }
    ]
  },
  {
    "id": 2,
    "name": "Python 101",
    "user_set": []
  }
]

 

Endpoints restritos

Os endpoints a seguir estão disponíveis apenas para usuários com um token de autenticação. No header, espeficar nesse formato:

Authorization: Token <token aqui>

POST /api/courses/

Criando um curso. Apenas um instrutor pode criar e matricular usuarios nos cursos.

Header:

// Authorization: Token <instrutor>

Body JSON:

{
	"name": "Javascript 101"
}

Response - HTTP Status 201:

{
  "id": 1,
  "name": "Javascript 101",
  "user_set": []
}

PUT /api/courses/registrations/

Matriculando estudantes em um curso.

Header:

// Authorization: Token <instrutor OU facilitador>

Body JSON:

{
	"course_id": 1,
	"user_ids": [1, 2, 7]
}

Response - HTTP Status 200:

{
  "id": 1,
  "name": "Javascript 101",
  "user_set": [
    {
      "id": 1,
      "is_superuser": false,
      "is_staff": false,
      "username": "luiz"
    },
    {
      "id": 7,
      "is_superuser": false,
      "is_staff": false,
      "username": "isabela"
    },
    {
      "id": 2,
      "is_superuser": false,
      "is_staff": false,
      "username": "raphael"
    }
  ]
}

POST /api/courses/registrations/

Criando uma atividade. Um estudante pode criar uma atividade porém não pode atribuir uma nota. Somente instrutores e facilitadores podem atribuir uma nota para um atividade de um estudante.

Header:

// Authorization: Token <estudante>

Body JSON:

{
	"repo": "gitlab.com/cantina-kenzie",
	"user_id": 7,
	"grade": 10
}

Response - HTTP Status 201:

{
  "id": 6,
  "user_id": 7,
  "repo": "gitlab.com/cantina-kenzie",
  "grade": null
}

PUT /api/courses/registrations/

Editando uma atividade. Somente instrutores e facilitadores.

Header:

// Authorization: Token <instrutor OU facilitador>

Body JSON:

{
  "id": 6,
  "repo": "gitlab.com/cantina-kenzie",
  "user_id": 7,
  "grade": 10
}

Response - HTTP Status 201:

{
  "id": 6,
  "user_id": 7,
  "repo": "gitlab.com/cantina-kenzie",
  "grade": 10
}

GET /api/activities/

Recuperando atividafes. Estudante pode apenas visualizar uma lista com as suas próprias atividades. Já os instrutores e facilitadores podem visualizar todas as atividades de todos os estudantes e filtrar as atividades por usuários.

Header:

// Authorization: Token <estudante>

Response:

[
  {
    "id": 1,
    "user_id": 1,
    "repo": "github.com/luiz/cantina",
    "grade": null
  },
  {
    "id": 2,
    "user_id": 1,
    "repo": "github.com/hanoi",
    "grade": null
  },
  {
    "id": 3,
    "user_id": 1,
    "repo": "github.com/foodlabs",
    "grade": null
  },
]

Header:

// Authorization: Token <facilitador OU instrutor>

Response:

[
  {
    "id": 1,
    "user_id": 1,
    "repo": "github.com/luiz/cantina",
    "grade": null
  },
  {
    "id": 2,
    "user_id": 1,
    "repo": "github.com/hanoi",
    "grade": null
  },
  {
    "id": 3,
    "user_id": 1,
    "repo": "github.com/foodlabs",
    "grade": null
  },
  {
    "id": 35,
    "user_id": 99,
    "repo": "github.com/kanvas",
    "grade": null
  },
]

GET /api/activities/int:user_id/

Filtrando atividades fornecendo um user_id. Somente instrutores e facilitadores.

Header:

// Authorization: Token <facilitador OU instrutor>

Response:

[
  {
    "id": 1,
    "user_id": 1,
    "repo": "github.com/luiz/cantina",
    "grade": null
  },
  {
    "id": 2,
    "user_id": 1,
    "repo": "github.com/hanoi",
    "grade": null
  },
  {
    "id": 3,
    "user_id": 1,
    "repo": "github.com/foodlabs",
    "grade": null
  },
]

 

Desenvolvedor

Alex Miguel

alexmiguel95@gmail.com

About

api para gerenciar um curso online.


Languages

Language:Python 100.0%