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/login' com um par de credenciais válidas.
Para este teste foi criado um utilizador com as seguintes credenciais: (username: "daw2020@teste.uminho.pt", password="232"). 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. Nesta informação está presente uma lista de termos de índice (termosInd) que funcionam como palavras-chave para acesso aos processos ou classes de nível 3;
-
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/termosIndice?token=... - Devolve uma lista em JSON com toda a informação dos termos de índice;
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 900?
- Quantas entidades estão catalogadas?
- Quantos processos (classes de nível 3) se encontram na descendência de 900.10?
- Quantos processos (classes de nível 3) estão relacionados com 900.10.505?
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ão aparecer dois links: Classes e Termos de índice;
- O primeiro dá acesso a uma página onde 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 seus termos de índice (cada termo deverá ser uma ligação à página que lista os termos de índice);
- O segundo link, dá acesso a uma página onde são listados, numa tabela, todos os termos de índice com os seus campos de informação: termo, id da classe a que pertence e título da classe (o id e o título
devem ser um link para a página da classe);
- Em todas as páginas deverá haver um link para voltar à página inicial;
- Usa a tua imaginação e criatividade...