Web APIs e dados abertos - API de Compras Governamentais
nitaibezerra
5,018 views
48 slides
Nov 18, 2014
Slide 1 of 48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
About This Presentation
No description available for this slideshow.
Size: 3.3 MB
Language: pt
Added: Nov 18, 2014
Slides: 48 pages
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
●...
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/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