Web APIs e dados abertos - API de Compras Governamentais

nitaibezerra 5,018 views 48 slides Nov 18, 2014
Slide 1
Slide 1 of 48
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48

About This Presentation

No description available for this slideshow.


Slide Content

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
Minicurso – V Encontro Anual de Tecnologia da
Informação

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

483/

“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.)
484/
O que são dados abertos?

"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
485/

Lei de Acesso à Informação – LAI
12.527/11
Esclarece que é constitucional o direito de
acesso à informação
486/

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.
http://wiki.gtinda.ibge.gov.br/
487/

Basômetro

Para onde foi o meu dinheiro?
Orçamento de forma interativa e granular
4810/

Preço dos Combustíveis
http://www.precodoscombustiveis.com.br

Escola que queremos
4812/

Mapnificent (São Paulo)
Mobilidade com dados da SPTrans
4813/

DPRF.info

openCorporates

As 5 estrelas dos Dados Abertos
http://5stardata.info/
4816/

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

Exemplos de APIs
●Twitter
●https://dev.twitter.com/
●Facebook
●https://developers.facebook.com/
●Mais sobre APIs
●http://www.programmableweb.com/

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

APIs do gov.br
●http://api.conveios.gov.br
●http://orcamento.dados.gov.br
●https://estruturaorganizacional.dados.gov.br
●http://compras.dados.gov.br

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
●...

Entidades da API

Arquitetura tecnológica
●RESTEasy (Java)
●Hibernate
●Velocity, Jax-B, Jackson
●Swagger
●JBOSS
●PostgreSQL
●Svn + Jenkins
+ Maven

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

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

Documentação de uso da API
http://compras.dados.gov.br
/

http://compras.dados.gov.br/docs/lista-metodos-
licitacoes.html

http://compras.dados.gov.br/docs/licitacoes/v1/licitacoes.htm
l

Formatos dos recursos
●JSON
●CSV
●XML
●HTML

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

JSON

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

CSV

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

XML

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

HTML

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

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

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]

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

Estrutura padrão de cada recurso
1

JSON

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

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

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%A7%C3%B5es++MJ+CGS+COORDENACAO+GERAL+DE+LOGISTICA
●Note que não é utilizado termo especificando API, ou
outro detalhe da implementação

4847/
Exercícios

Obrigado!
“Precisamos de mais Hackers no governo!”
[email protected]
@dadosgovbr