A CLAV é uma plataforma em desenvolvimento no DI/UM em parceria e sob encomenda da Direção Geral do Livro, Arquivos e Bibliotecas
(DGLAB) que visa a classificação e a avaliação de toda a documentação circulante na administração pública portuguesa.
Uma das faces visíveis do projeto é o catálogo dos processos da administração pública portuguesa, designado por Lista
Consolidada.
Já se encontra disponível para consulta online:
site de teste
.
A API de dados documentada em Swagger encontra-se disponível em:
API de teste
.
A API de dados encontra-se protegida por JWT. Um token JWT pode ser gerado em dois contextos, como uma apiKey gerada num pedido de registo, ou como um token num POST
em '/users' com um par de credenciais válidas.
Para este teste foi criado um utilizador com as seguintes credenciais: (username: "pri2020@teste.uminho.pt", password="123"). No desenvolvimento do exercício, deverás usar
estas credenciais para obter um token com o qual deverás assinar todos os pedidos que vais fazer à API.
É sobre este catálogo que irás desenvolver este exercício.
A API de dados disponível contem entre outras as seguintes possibilidades:
-
POST http://clav-api.di.uminho.pt/v2/users/login (com as credenciais no body) - Devolve um objeto em JSON com a informação do utilizador, um dos campos é o token que poderá ser
usado nos outros pedidos que o requerem;
-
GET http://clav-api.di.uminho.pt/v2/classes?token=... - Devolve uma estratura hierárquica em JSON com a informação base de todas as
classes/processos da Lista Consolidada. Note que, os níveis 1 e 2 correspondem a funções e subfunções da Administração Pública, existem essencialmente para
arrumar a case e facilitar o acesso aos processo, o nível 3 corresponde ao processo e o nível 4 a uma divisão do processo quando, por determinado motivo partes da
documentação desse processo têm conservações e destinos diferentes;
-
GET http://clav-api.di.uminho.pt/v2/classes?nivel=3&token=... - Devolve uma lista em JSON com a informação base de todos os
processos;
-
GET http://clav-api.di.uminho.pt/v2/classes?nivel=1&token=... - Devolve uma lista em JSON dos primeiros níveis, funções da AP;
-
GET http://clav-api.di.uminho.pt/v2/classes?nivel=2&token=... - Devolve uma lista em JSON dos segundos níveis, subfunções da AP;
-
GET http://clav-api.di.uminho.pt/v2/classes?estrutura=lista&token=... - Devolve uma lista em JSON de todas as classes (linearização da árvore
inicial);
-
GET http://clav-api.di.uminho.pt/v2/classes/c100.10.001?token=... - Devolve em JSON a informação completa da classe com código:
c100.10.001;
-
GET http://clav-api.di.uminho.pt/v2/classes/c100.20/descendencia?token=... - Devolve uma lista em JSON das classes filhas da classe passada
no pedido, neste caso, C100.20;
-
GET http://clav-api.di.uminho.pt/v2/classes/c150.10.702/procRel?token=... - Uma classe de nível 3 pode ter relações com outra classe de nível 3.
Este pedido devolve uma lista dos processos (classes de nível 3) que têm relações com o processo 150.10.702. São devolvidos: o identificador,
o código, o título e o código da relação (deste é possível extrair a designação da relação, a sua parte final);
Desenvolve então as seguintes alíneas:
- Testa a API de dados com o Postman e dá resposta às seguintes questões:
- Quantos processos (nível 3) e quais são (obtem uma lista em JSON; podes concatenar sublistas invocando várias queries), pertencentes à
descendência da classe 750?
- Quantos subprocessos existem no catálogo inteiro? (classes de nível 4)
- Quantos processos (classes de nível 3) se encontram na descendência de 750.30?
- Quantos processos (classes de nível 3) estão relacionados com 750.30.001?
Depois deste "aquecimento", desenvolve uma aplicação em nodejs que permita navegar nesta estrutura de classes. :
- Vais precisar de um token de autorização para realizar os pedidos à API de dados. Podes obtê-lo fazendo o pedido descrito em cima. Esta parte poderá estar dentro da tua App
ou podes fazê-la externamente e colocar o token no teu código. Será mais valorizada a solução em que o pedido para a geração do token é feito no arranque da tua App;
- Na página inicial, para além de um título e outra informação de contexto, deverá aparecer a lista de classes de nível 1 (código e título);
- Todos os campos de informação com códigos de classes devem ser transformados em links que realizam pedidos à tua aplicação de nova
página;
- Na página de cada classe, deve ser mostrada a informação base da classe, uma lista dos seus descendentes caso existam e, se a classe for
de nível 3 uma lista dos processos relacionados (cada um destes deve ser um link para o respetivo processo), apenas deves contemplar as relações:
eCruzadoCom, eComplementarDe, eSuplementoDe e eSuplementoPara;
- Em todas as páginas deverá haver um link para voltar à página inicial e outro para a página anterior (nos casos em que justifique);
- Usa a tua imaginação e criatividade...