SlideShare a Scribd company logo
1 of 48
Download to read offline
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/
Web APIs e dados abertos - API de Compras Governamentais
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

Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介Kenichiro Nakamura
 
Desenvolvendo seu poder pessoal através do processo de coaching
Desenvolvendo seu poder pessoal através do processo de coachingDesenvolvendo seu poder pessoal através do processo de coaching
Desenvolvendo seu poder pessoal através do processo de coachingCarlos Hoyos
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Shohei Okada
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Liderança Inspiradora - Como Inovar na Gestão de Pessoas
Liderança Inspiradora - Como Inovar na Gestão de PessoasLiderança Inspiradora - Como Inovar na Gestão de Pessoas
Liderança Inspiradora - Como Inovar na Gestão de PessoasAdeildo Caboclo
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Power Automateってどんな子?(気ままに勉強会#01)
Power Automateってどんな子?(気ままに勉強会#01)Power Automateってどんな子?(気ままに勉強会#01)
Power Automateってどんな子?(気ままに勉強会#01)た な
 
OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料Tsuyoshi Kawarasaki
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
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 InternetLeonardo Soares
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 
Inovação na Gestão Pública
Inovação na Gestão PúblicaInovação na Gestão Pública
Inovação na Gestão PúblicaColaborativismo
 

What's hot (20)

Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Ciclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemasCiclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemas
 
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
 
Desenvolvendo seu poder pessoal através do processo de coaching
Desenvolvendo seu poder pessoal através do processo de coachingDesenvolvendo seu poder pessoal através do processo de coaching
Desenvolvendo seu poder pessoal através do processo de coaching
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Liderança Inspiradora - Como Inovar na Gestão de Pessoas
Liderança Inspiradora - Como Inovar na Gestão de PessoasLiderança Inspiradora - Como Inovar na Gestão de Pessoas
Liderança Inspiradora - Como Inovar na Gestão de Pessoas
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
超初心者向けForce.com入門
超初心者向けForce.com入門超初心者向けForce.com入門
超初心者向けForce.com入門
 
Power Automateってどんな子?(気ままに勉強会#01)
Power Automateってどんな子?(気ままに勉強会#01)Power Automateってどんな子?(気ままに勉強会#01)
Power Automateってどんな子?(気ままに勉強会#01)
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
Apresentacao de Alto Impacto
Apresentacao de Alto ImpactoApresentacao de Alto Impacto
Apresentacao de Alto Impacto
 
OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料OutSystems ユーザー会 セッション資料
OutSystems ユーザー会 セッション資料
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
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
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Inovação na Gestão Pública
Inovação na Gestão PúblicaInovação na Gestão Pública
Inovação na Gestão Pública
 

Viewers also liked

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 internetCAIXA Notícias
 
Manual dados abertos_web
Manual dados abertos_webManual dados abertos_web
Manual dados abertos_webJoel Lobo
 
Extraindo dados públicos “na marra”
Extraindo dados públicos “na marra”Extraindo dados públicos “na marra”
Extraindo dados públicos “na marra”Pedro Valente
 
Raske kerge
Raske kergeRaske kerge
Raske kergemeelimae
 
Inteligencia artificial
Inteligencia artificial Inteligencia artificial
Inteligencia artificial eliza435
 
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 FieldMatías Argüello Pitt
 
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...Eduardo Alcântara F. da Silva
 
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 ...Eduardo Alcântara F. da Silva
 
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óciosEdgar Silva
 
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)Claudio Martins
 
TCC IMPRESSORA 3D
 TCC IMPRESSORA 3D TCC IMPRESSORA 3D
TCC IMPRESSORA 3Djamesfrk
 
Passo a passo para baixar slides
Passo a passo para baixar slidesPasso a passo para baixar slides
Passo a passo para baixar slidesDênia Cavalcante
 
Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_20130602448714
 
Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_2013Instructivo para evaluacion_estudiantil_2013
Instructivo para evaluacion_estudiantil_20130602448714
 
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...Augusto Herrmann Batista
 

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 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 - INDAnitaibezerra
 
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 Conseginitaibezerra
 
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 Ativanitaibezerra
 
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!Renato Bongiorno Bonfanti
 
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 2Projeto RCAAP
 
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?Caroline Burle
 
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 desempenhoDavid Robert Camargo de Campos
 
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 BrasilDiego Magalhães Menezes
 
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?Denodo
 
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 - TDCRenan Moreira de Oliveira
 
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 ...tdc-globalcode
 
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 DataAmazon Web Services LATAM
 
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 MaisCicero Joasyo Mateus de Moura
 
WSO2 para o Governo Brasileiro
WSO2 para o  Governo BrasileiroWSO2 para o  Governo Brasileiro
WSO2 para o Governo BrasileiroEdgar Silva
 
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...Claudio Martins
 
App midia100 052012
App midia100 052012App midia100 052012
App midia100 052012silviodilon
 
Apresentacao licitacaoweb Segmento Construção
Apresentacao licitacaoweb Segmento ConstruçãoApresentacao licitacaoweb Segmento Construção
Apresentacao licitacaoweb Segmento Construçãomercadopublico
 
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 AbertosAugusto Herrmann Batista
 

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
 

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/
  • 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