Utilizando a API

Exibir quais são os serviços disponíveis, falar sobre o msgpack e json, exemplificar.

Entendendo o processo de login

Para realizar login no SIPPA é necessário informar quatro campos básicos:

  • Matrícula
  • Senha
  • Tipo de usuário
  • Valor para o captcha

O tipo de usuário nesse caso é fixo pois apenas trataremos de alunos nessa API. Caso deseje expandir para outros tipo de usuários será necessário flexibilizar esse argumento também para as chamadas da API.

O valor para o captcha atualmente é informado de forma manual, onde o usuário que irá realizar o login na aplicação deverá informar qual o valor presente na imagem a ser exibida (assim como acontece no login tradicional via site oficial).

Iniciando um processo de login

Para iniciar o processo de login é necessário gerar um identificador de sessão juntamente com a url do captcha a ser informado.

Exemplo de requisição

  GET  http://sippa-no-api.us-east-1.elasticbeanstalk.com/api/start-login

Exemplo de retorno

  {
    "identifier": "ABCDE12345",
    "captcha_url": "http://lorempixel.com/200/200"
  }
  • identifier: Deve ser reenviado na solicitação de informações do usuário juntamente com o valor do captcha.
  • captcha_url: Link da imagem de captcha associada ao identificador de sessão.

Obtendo informações do aluno

Em posse do identificador de sessão e do valor do captcha a ele associado, é chegada a vez de informar os dados do aluno (matrícula e senha) e receber as informações atuais.

Exemplo de requisição

  POST          http://sippa-no-api.us-east-1.elasticbeanstalk.com/api/process-login
  Content-Type  application/x-www-form-urlencoded

  login="0330000"
  password="123456"
  session="ABCDE12345"
  captcha_value="q1w2"

Exemplo de retorno

  {
    "student": {
      "name": "Nome do aluno",
      "registration": "0330000"
    },
    "subjects": [
      {
        "code": "qxd0000",
        "class_identifier": "123456",
        "name": "Disciplina 1",
        "average": null,
        "teacher": {
          "name": "Nome do professor",
          "email": "email@email.com",
          "avatar_url": "http://lorempixel.com/200/200"
        },
        "notices": [
          {
            "order": 1,
            "date": "dd/mm/YYYY",
            "text": "Notícia"
          }
        ],
        "lesson_plans": [
          {
            "lesson": 1,
            "description": "Exemplo de aula",
            "planned_description": "Exemplo de aula",
            "date": "dd/mm/YYYY",
            "presence_hours": "0"
          }
        ],
        "frequency": {
          "text": "100% de Frequência; 0 Presenças em Horas; 0 Faltas em Horas",
          "presence_hours": 0,
          "absence_hours": 0,
          "max_hours": 0
        },
        "exams": [
          {
            "order": 1,
            "short_description": "AP1",
            "description": "Primeira Avaliação Parcial",
            "weight": "1.0",
            "value": null
          }
        ],
        "files": [
          {
            "description": "Lista_de_exercicios.pdf",
            "date": "dd/mm/YYYY",
            "order": 1
          }
        ],
        "second_call_options": [
          {
            "order": 1,
            "description": "AP1",
            "code": "1234"
          }
        ],
        "second_call_history": [
          {
            "order": 1,
            "exam_description": "AP1",
            "exam_code": "1234",
            "motive": "Justificativa da solicitação",
            "date": "dd/mm/YYYY"
          }
        ],
        "calendar": {
          "start_period": "dd/mm/YYYY",
          "end_period": "dd/mm/YYYY",
          "start_final_exams": "dd/mm/YYYY",
          "end_final_exams": "dd/mm/YYYY",
          "holidays": [
            {
              "order": 1,
              "date": "dd/mm/YYYY",
              "description": "Feriado nacional",
              "kind": "Feriado Nacional"
            }
          ]
        },
        "homework": [
          {
            "order": 1,
            "file": null,
            "description": "Trabalho",
            "max_date": "dd/mm/YYYY"
          }
        ]
      }
    ]
  }

Recebendo a resposta no formato MessagePack

Definição breve sobre o MessagePack segundo o site oficial: "It's like JSON. But fast and small."

Para os serviços envolvidos no processo de obtenção de dados do usuário, é possível receber a resposta no formato do MessagePack.

Para isso é preciso apenas enviar um query parameter na URL chamado format com o valor msgpack.

Exemplo de requisição requisitando MessagePack como padrão de resposta

  GET  http://sippa-no-api.us-east-1.elasticbeanstalk.com/api/start_login?format=msgpack

Para entender mais, acesse o site oficial do projeto.