Web APIs e dados abertos - API de Compras Governamentais

1.906 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.906
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
52
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Web APIs e dados abertos - API de Compras Governamentais

  1. 1. Minicurso – V Encontro Anual de Tecnologia da Informação Web APIs e Dados Abertos {title: “API de Compras Governamentais”, href: “http://compras.dados.gov.br”, rel: “caso prático”} Nitai Bezerra da Silva - @dadosgovbr
  2. 2. Objetivos do minicurso 1.Apresentar o potencial das APIs públicas para que as pessoas desejem usá-las 2.Estimular o desenvolvimento de APPs que consumam a API e criem valor para sociedade 3.Estimular o desenvolvimento de mais APIs por outros governos
  3. 3. 3 / 48
  4. 4. O que são dados abertos? “Dados são abertos quando qualquer pessoa pode livremente usá-los, reutilizá-los e redistribuí-los, estando sujeito a, no máximo, a exigência de creditar a sua autoria e compartilhar pela mesma licença.” http://dados.gov.br/dados-abertos/ http://opendefinition.org/ Qualquer um significa qualquer um! (Sem restrição ao uso comercial, etc.) 4 / 48
  5. 5. "O melhor uso que poderá ser feito com seus dados certamente será feito por outros e não por você.“ The Open Mind Principle Permite que a inteligência coletiva crie melhores formas de trabalhar com os dados do que os próprios governos poderiam fazer 5 / 48
  6. 6. Lei de Acesso à Informação – LAI 12.527/11 Esclarece que é constitucional o direito de acesso à informação 6 / 48
  7. 7. Infraestrutura Nacional de Dados Abertos Objetivos: Proporcionar aos cidadãos, e ao governo, um ponto de acesso central aos dados públicos, disponível na web. Coordenar e orientar a padronização no ciclo de vida da informação, em especial no momento de sua publicação na web. Incentivar a agregação de valor aos dados públicos e a colaboração com o cidadão na implementação de novos serviços à sociedade. Ser uma iniciativa sustentável de Dados Abertos. Para isso: Conjunto de padrões, tecnologias, procedimentos e mecanismos de controle necessários para se publicar dados abertos governamentais, visando seu reuso não só pela sociedade mas pelo próprio governo. 7 / 48 http://wiki.gtinda.ibge.gov.br/
  8. 8. Basômetro
  9. 9. Para onde foi o meu dinheiro? Orçamento de forma interativa e granular 10 / 48
  10. 10. Preço dos Combustíveis http://www.precodoscombustiveis.com.br
  11. 11. Escola que queremos 12 / 48
  12. 12. Mapnificent (São Paulo) Mobilidade com dados da SPTrans 13 / 48
  13. 13. DPRF.info
  14. 14. openCorporates
  15. 15. As 5 estrelas dos Dados Abertos http://5stardata.info/ 16 / 48
  16. 16. API Web “É um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços” No contexto de desenvolvimento web, uma API, também chamda de API web, é um conjunto definido de mensagens de requisição e resposta HTTP, geralmente expressado nos formatos XML ou JSON
  17. 17. Exemplos de APIs ● Twitter ● https://dev.twitter.com/ ● Facebook ● https://developers.facebook.com/ ● Mais sobre APIs ● http://www.programmableweb.com/
  18. 18. APIs para Dados Abertos ● Desenhadas apenas para leitura ● Caches mais duráveis ● Sem controle de acesso ● Maior desacoplamento do sistema em produção ● Base de dados redundante ● Menos requisitos de segurança
  19. 19. APIs do gov.br ● http://api.conveios.gov.br ● http://orcamento.dados.gov.br ● https://estruturaorganizacional.dados.gov.br ● http://compras.dados.gov.br
  20. 20. http://compras.dados.gov.br ● API de dados abertos das Compras do Governo Federal - SIASG ● Fornecedores (PF e PJ) ● Licitações ● Contratos ● Tipos de Materiais e Serviços ● ...
  21. 21. Entidades da API
  22. 22. Arquitetura tecnológica ● RESTEasy (Java) ● Hibernate ● Velocity, Jax-B, Jackson ● Swagger ● JBOSS ● PostgreSQL ● Svn + Jenkins + Maven
  23. 23. Tamanho da base de dados ● ~100Gb de dados (descompactados) ● Registros: ● 261.386 fornecedores ● 763.087 licitações (desde 1994) ● 974.014 contratos (desde 1976) ● 226.152 materias e 2.564 serviços
  24. 24. Objetivos da API “Ser o repositório oficial para busca e acesso aos dados relacionados às compras governamentais dos entes federais seguindo as melhores práticas de publicação de dados na web” ● Padronizar os identificadores (URIs) para cada recurso informacional ● Melhorar o PageRank para enfim aumentar e democratizar o acesso à informação ● Constituir os pilares de um governo como plataforma
  25. 25. Documentação de uso da API http://compras.dados.gov.br /
  26. 26. http://compras.dados.gov.br/docs/lista-metodos-licitacoes. html
  27. 27. http://compras.dados.gov.br/docs/licitacoes/v1/licitacoes.htm l
  28. 28. Formatos dos recursos ● JSON ● CSV ● XML ● HTML
  29. 29. Formatos dos recursos ● JSON ● 1. Facilidade para representar hierarquias 2. Suporta tipagem de valores 3. Facilidade de consumo (qualquer linguagem de programação lê com facilidade) 4. Utilizável diretamente em navegadores (leitura por javascript) 5. Formato padronizado (RFC 7159 do IETF, ECMA-404) 6. Possibilidade de definir esquema de validação 7. Mais leve para processar que o XML ● CSV ● XML ● HTML
  30. 30. JSON
  31. 31. Formatos dos recursos ● JSON ● CSV ● 1. Simplicidade. Registros em estrutura tabular. 2. Facilidade de geração (qualquer banco de dados exporta) 3. Facilidade de consumo (qualquer editor de planilhas manipula) 4. Sucinto (os arquivos gerados são menores) ● 1. Falta de padronização do formato 2. Não suporta tipagem de valores 3. Dificuldade em se representar ligações entre os dados ● XML ● HTML
  32. 32. CSV
  33. 33. Formatos dos recursos ● JSON ● CSV ● XML ● 1. Facilidade para representar hierarquias 2. Suporta tipagem de valores 3. Amplo suporte de ferramentas 4. Formato padronizado (W3C) 5. Possilidade de definir esquema de validação ● 1. Prolixo (os arquivos gerados são maiores) 2. Maior gasto de processamento para geração e consumo em relação ao JSON ● HTML
  34. 34. XML
  35. 35. Formatos dos recursos ● JSON ● CSV ● XML ● HTML ● 1. Formato para leitura humana 2. Possibilita a indexação do conteúdo por motores de busca 3. possibilita a injeção de marcadores semânticos ● 1. Estrutura muito heterogenia 2. Não deve ser utilizado para consumo automatizado
  36. 36. HTML
  37. 37. Algumas consultas ● Órgãos onde o termo “turismo” faz parte do nome ● http://compras.dados.gov.br/licitacoes/v1/orgaos?nome=turismo ● Uasgs do órgão Ministério do Turismo ● http://compras.dados.gov.br/licitacoes/v1/uasgs?id_orgao=54000 ● Contratos da Uasg 540004 ● http://compras.dados.gov.br/contratos/v1/contratos?uasg=540004 ● Dados do fornecedor Americel S/A ● http://compras.dados.gov.br/fornecedores/doc/fornecedor_pj/01685903000116 ● Todos contratos desde fornecedor (Americel S/A) ● http://compras.dados.gov.br/contratos/v1/contratos?cnpj_contratada=01685903000116 ● Licitação relacionada ao primeiro contrato desta lista ● http://compras.dados.gov.br/licitacoes/doc/licitacao/54000405000022003 Para todas essas consultas basta alterar o parâmetro para obter os valores em outro formato: JSON, CSV e XML
  38. 38. Consultas avançadas ● Combinando vários parâmetros Ex.: Fornecedores onde ramo de negócio é (42: obras de infra-estrutura) e natureza jurídica é (3: sociedade anônima), ordenando pelo nome ● http://compras.dados.gov.br/fornecedores/v1/fornec edores?id_ramo_negocio=42 & id_natureza_juridica=3 &order_by=nome
  39. 39. Parâmetros transversair ● order_by ● Todos os campos podem ser utilizados para ordenação dos resultados ● Ex.: Contratos(order_by=data_inicio_vigencia) ● order ● A ordenação pode ser ascendente e descendente ● Ex.: Licitações(..&order=asc) ● offset ● É utilizado para paginar consultas com +500 resultados ● Ex.: Licitações[334..833] ● {data_max, data_min} ● Filtra um intervalo para um campo do tipo data ● Ex.: Contratos[2014-02-01<=data_assinatura<2014-02-03]
  40. 40. Tipos de métodos ● Requisição que retorna um subconjunto dos recursos ● Ex.: Consulta licitações da modalidade “concorrência” ● http://compras.dados.gov.br/licitacoes/v1/licitacoes.html?modalidade=03 ● Requisição que retorna um recurso específico ● Ex.: Dados da licitação de id “19300203000000032” ● http://compras.dados.gov.br/licitacoes/doc/licitacao/19300203000000032
  41. 41. Estrutura padrão de cada recurso 1
  42. 42. JSON
  43. 43. Padrões/Características da API ● REST – Estilo arquitectural ● JAX-RS – Padrão para criação de API RESTful em Java ● HATEOAS – Característica da arquitetura de aplicativos REST onde o cliente interage com a rede através de hypermídia fornecida dinamicamente ● HAL – Formato padrão e simples para hyperlinkar recursos na API ● Swagger – Padrão simples e aberto para descrever APIs REST em JSON ● URIs bem desenhadas
  44. 44. Padrão de URIs ● URI de uma consulta: ● http://compras.dados.gov.br/contratos/v1/contratos.html?uasg=153229 ● URI de um recurso: ● http://compras.dados.gov.br/licitacoes/id/licitacao/15322901000011999 ● http://compras.dados.gov.br/licitacoes/doc/licitacao/15322901000011999
  45. 45. APIs + motor de busca ● A publicação dos dados também no formato HTML favorece a indexação dos recursos em motores de busca (Google, Bing, etc..) ● A implementação fiel da característica HATEOAS do REST torna todos os recursos alcançáveis pelos crawlers de indexação ● Enfim os motores de busca levam a muito mais pessoas o acesso às informações da API ● Exemplo de pesquisa: https://www.google.com.br/?gws_rd=ssl#safe=off&q=licita%C3%● Note que não é utilizado termo especificando API, ou outro detalhe da implementação
  46. 46. Exercícios 47/ 48
  47. 47. Obrigado! “Precisamos de mais Hackers no governo!” nitai.silva@planejamento.gov.br @dadosgovbr

×