SlideShare a Scribd company logo
1 of 48
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
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 / 48
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
"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
Lei de Acesso à Informação – LAI 
12.527/11 
Esclarece que é constitucional o direito de 
acesso à informação 
6 / 48
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/
Basômetro
Para onde foi o meu dinheiro? 
Orçamento de forma interativa e granular 
10 / 48
Preço dos Combustíveis 
http://www.precodoscombustiveis.com.br
Escola que queremos 
12 / 48
Mapnificent (São Paulo) 
Mobilidade com dados da SPTrans 
13 / 48
DPRF.info
openCorporates
As 5 estrelas dos Dados Abertos 
http://5stardata.info/ 
16 / 48
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%● Note que não é utilizado termo especificando API, ou 
outro detalhe da implementação
Exercícios 
47/ 48
Obrigado! 
“Precisamos de mais Hackers no governo!” 
nitai.silva@planejamento.gov.br 
@dadosgovbr

More Related Content

What's hot

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 

What's hot (20)

Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderoso
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Getting started with DSpace 7 REST API
Getting started with DSpace 7 REST APIGetting started with DSpace 7 REST API
Getting started with DSpace 7 REST API
 
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015 AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
AWS로 사용자 천만 명 서비스 만들기 (윤석찬)- 클라우드 태권 2015
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Curso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicosCurso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicos
 
Raspagem de dados em websites governamentais
Raspagem de dados em websites governamentaisRaspagem de dados em websites governamentais
Raspagem de dados em websites governamentais
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Personalização e customização no produto RM
Personalização e customização no produto RMPersonalização e customização no produto RM
Personalização e customização no produto RM
 

Viewers also liked

Manual dados abertos_web
Manual dados abertos_webManual dados abertos_web
Manual dados abertos_web
Joel Lobo
 
Raske kerge
Raske kergeRaske kerge
Raske kerge
meelimae
 
Inteligencia artificial
Inteligencia artificial Inteligencia artificial
Inteligencia artificial
eliza435
 

Viewers also liked (19)

CAIXA lança novo serviço para consulta do FGTS na internet
CAIXA lança novo serviço para consulta do FGTS na internetCAIXA lança novo serviço para consulta do FGTS na internet
CAIXA lança novo serviço para consulta do FGTS na internet
 
Manual dados abertos_web
Manual dados abertos_webManual dados abertos_web
Manual dados abertos_web
 
Api’s abertos
Api’s abertosApi’s abertos
Api’s abertos
 
Extraindo dados públicos “na marra”
Extraindo dados públicos “na marra”Extraindo dados públicos “na marra”
Extraindo dados públicos “na marra”
 
Raske kerge
Raske kergeRaske kerge
Raske kerge
 
03
0303
03
 
Internet
InternetInternet
Internet
 
Inteligencia artificial
Inteligencia artificial Inteligencia artificial
Inteligencia artificial
 
Presentation on our Materials Development Task for the Industrial Design Field
Presentation on our Materials Development Task for the Industrial Design FieldPresentation on our Materials Development Task for the Industrial Design Field
Presentation on our Materials Development Task for the Industrial Design Field
 
Apresentação: TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PL...
Apresentação: TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PL...Apresentação: TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PL...
Apresentação: TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PL...
 
TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PLÁSTICA EM UMA ...
TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PLÁSTICA EM UMA ...TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PLÁSTICA EM UMA ...
TCC: IMPLANTAÇÃO DE ROBÔ MANIPULADOR PARA MÁQUINA DE INJEÇÃO PLÁSTICA EM UMA ...
 
Economia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negóciosEconomia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negócios
 
Oportunidades e Desafios em Aplicativos de Dados Abertos (open data)
Oportunidades e Desafios em Aplicativos de Dados Abertos (open data)Oportunidades e Desafios em Aplicativos de Dados Abertos (open data)
Oportunidades e Desafios em Aplicativos de Dados Abertos (open data)
 
TCC IMPRESSORA 3D
 TCC IMPRESSORA 3D TCC IMPRESSORA 3D
TCC IMPRESSORA 3D
 
TCC impressora 3D - UNIP 2013
TCC impressora 3D - UNIP 2013TCC impressora 3D - UNIP 2013
TCC impressora 3D - UNIP 2013
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slides
 
Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013
 
Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013
 
Planejando dados abertos - novos compromissos para implementar a Estratégia d...
Planejando dados abertos - novos compromissos para implementar a Estratégia d...Planejando dados abertos - novos compromissos para implementar a Estratégia d...
Planejando dados abertos - novos compromissos para implementar a Estratégia d...
 

Similar to Web APIs e dados abertos - API de Compras Governamentais

Oficina Técnica da INDA em Belém no Consegi
Oficina Técnica da INDA em Belém no ConsegiOficina Técnica da INDA em Belém no Consegi
Oficina Técnica da INDA em Belém no Consegi
nitaibezerra
 
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência AtivaI Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
nitaibezerra
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
David Robert Camargo de Campos
 

Similar to Web APIs e dados abertos - API de Compras Governamentais (20)

Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Oficina Técnica da INDA em Belém no Consegi
Oficina Técnica da INDA em Belém no ConsegiOficina Técnica da INDA em Belém no Consegi
Oficina Técnica da INDA em Belém no Consegi
 
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência AtivaI Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
I Oficina Técnica de Publicação de Dados Abertos e Transparência Ativa
 
Big Data
Big DataBig Data
Big Data
 
Futurecom 2010 - Web Semântica - Pessoas e máquinas pensando juntas!
Futurecom 2010 - Web Semântica - Pessoas e máquinas pensando juntas!Futurecom 2010 - Web Semântica - Pessoas e máquinas pensando juntas!
Futurecom 2010 - Web Semântica - Pessoas e máquinas pensando juntas!
 
e-Jornadas FCCN 2020 - Sessão do Projeto RCAAP - Parte 2
e-Jornadas FCCN 2020 - Sessão do Projeto RCAAP - Parte 2e-Jornadas FCCN 2020 - Sessão do Projeto RCAAP - Parte 2
e-Jornadas FCCN 2020 - Sessão do Projeto RCAAP - Parte 2
 
Apresentação Dados Abertos: cidadania ou oportunidades para empresas?
Apresentação Dados Abertos: cidadania ou oportunidades para empresas?Apresentação Dados Abertos: cidadania ou oportunidades para empresas?
Apresentação Dados Abertos: cidadania ou oportunidades para empresas?
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Uma Análise das Ofertas On-Line de Veículos dos Usuários do OLX Brasil
Uma Análise das Ofertas On-Line de Veículos dos Usuários do OLX BrasilUma Análise das Ofertas On-Line de Veículos dos Usuários do OLX Brasil
Uma Análise das Ofertas On-Line de Veículos dos Usuários do OLX Brasil
 
Qual é o futuro da estratégia de dados?
Qual é o futuro da estratégia de dados?Qual é o futuro da estratégia de dados?
Qual é o futuro da estratégia de dados?
 
AI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDCAI & Big Data - Personalização da Jornada - PicPay - TDC
AI & Big Data - Personalização da Jornada - PicPay - TDC
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big Data
 
Big Data Analytics - Data Engineer, Arquitetura, AWS e Mais
Big Data Analytics - Data Engineer, Arquitetura, AWS e MaisBig Data Analytics - Data Engineer, Arquitetura, AWS e Mais
Big Data Analytics - Data Engineer, Arquitetura, AWS e Mais
 
WSO2 para o Governo Brasileiro
WSO2 para o  Governo BrasileiroWSO2 para o  Governo Brasileiro
WSO2 para o Governo Brasileiro
 
Dados Abertos: Oportunidades, Inovação e Transparência (2º Congresso Nacional...
Dados Abertos: Oportunidades, Inovação e Transparência (2º Congresso Nacional...Dados Abertos: Oportunidades, Inovação e Transparência (2º Congresso Nacional...
Dados Abertos: Oportunidades, Inovação e Transparência (2º Congresso Nacional...
 
App midia100 052012
App midia100 052012App midia100 052012
App midia100 052012
 
Apresentacao licitacaoweb Segmento Construção
Apresentacao licitacaoweb Segmento ConstruçãoApresentacao licitacaoweb Segmento Construção
Apresentacao licitacaoweb Segmento Construção
 
Oficina: Dados Abertos, Ciência Aberta - Política de Dados Abertos
Oficina: Dados Abertos, Ciência Aberta - Política de Dados AbertosOficina: Dados Abertos, Ciência Aberta - Política de Dados Abertos
Oficina: Dados Abertos, Ciência Aberta - Política de Dados Abertos
 

Recently uploaded

Recently uploaded (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Web APIs e dados abertos - API de Compras Governamentais

  • 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. 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
  • 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. "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. Lei de Acesso à Informação – LAI 12.527/11 Esclarece que é constitucional o direito de acesso à informação 6 / 48
  • 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.
  • 10. Para onde foi o meu dinheiro? Orçamento de forma interativa e granular 10 / 48
  • 11. Preço dos Combustíveis http://www.precodoscombustiveis.com.br
  • 13. Mapnificent (São Paulo) Mobilidade com dados da SPTrans 13 / 48
  • 16. As 5 estrelas dos Dados Abertos http://5stardata.info/ 16 / 48
  • 17. 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
  • 18. Exemplos de APIs ● Twitter ● https://dev.twitter.com/ ● Facebook ● https://developers.facebook.com/ ● Mais sobre APIs ● http://www.programmableweb.com/
  • 19. 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
  • 20. APIs do gov.br ● http://api.conveios.gov.br ● http://orcamento.dados.gov.br ● https://estruturaorganizacional.dados.gov.br ● http://compras.dados.gov.br
  • 21. 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 ● ...
  • 23. Arquitetura tecnológica ● RESTEasy (Java) ● Hibernate ● Velocity, Jax-B, Jackson ● Swagger ● JBOSS ● PostgreSQL ● Svn + Jenkins + Maven
  • 24. 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
  • 25. 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
  • 26. Documentação de uso da API http://compras.dados.gov.br /
  • 29. Formatos dos recursos ● JSON ● CSV ● XML ● HTML
  • 30. 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
  • 31. JSON
  • 32. 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
  • 33. CSV
  • 34. 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
  • 35. XML
  • 36. 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
  • 37. HTML
  • 38. 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
  • 39. 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
  • 40. 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]
  • 41. 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
  • 42. Estrutura padrão de cada recurso 1
  • 43. JSON
  • 44. 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
  • 45. 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
  • 46. 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
  • 48. Obrigado! “Precisamos de mais Hackers no governo!” nitai.silva@planejamento.gov.br @dadosgovbr