bipbop

Official library for BIPBOP API


License
MIT
Install
pip install bipbop==1.3

Documentation

Bipbop Python

Biblioteca em Python para interação com a Bipbop API. Com ela você pode fazer consulta de dados cadastrais, consulta do Perfil Consumidor para SAC, Correios, placas de veículos entre outras bases. Tudo que você precisa é adquirir uma chave de API válida entrando em contato com a Bipbop.

Buscando o nome através do CPF/CNPJ

Existe uma classe especial chamada NameByCPFCNPJ cujo método estático evaluate pode ser usado para consultar o nome através do CPF/CNPJ, passando-se o CPF/CNPJ como string e opcionalmente a data de nascimento como DATETIME ou Inteiro:

from bipbop.client import NameByCPFCNPJ
print NameByCPFCNPJ.evaluate(cpf_cnpj, dt_nasc)

Como utilizar

Com uma chave de API válida em mãos você pode interagir com bancos os quais sua chave tem acesso. Nesse repositório você encontrará o arquivo test.py com o codigo a abaixo.

O primeiro passo é saber quais são esses bancos. Para isso temos a classe ServiceDiscovery que usa uma instância de WebService, criada a partir de sua chave:

from bipbop.client import WebService, ServiceDiscovery

ws = WebService('#SUA API KEY#')
sd = ServiceDiscovery.factory(ws)

print '== Listando todos os databases =='

for dbinfo in sd.list_databases():
    db = sd.get_database(dbinfo.get('name'))
    print 'Database: %s ; Description: %s ; URL: %s' % (db.name(), db.get('description'), db.get('url'))

Vamos tomar como exemplo o database PLACA e descobrir quais tabelas podemos consultar e com quais campos:

dbplaca = sd.get_database('PLACA')

print '== Listando tabelas de PLACA =='
for tbinfo in dbplaca.list_tables():
    table = dbplaca.get_table(tbinfo.get('name'))
    print 'Table: %s ; Description: %s ; URL: %s' % (table.name(), table.get('description'), table.get('url'))

Nossa listagem retornou a tabela CONSULTA mas quais serão os campos que podemos usar como parâmetros em nossa consulta? Vamos descobrir:

tblconsulta = dbplaca.get_table('CONSULTA')

for field in tblconsulta.get_fields():
    print 'Field: %s' % field.get('name')

Nossa busca retornou o campo placa.

Com esses dados em mãos torna-se simples montar nossa consulta. Basta utilizarmos o método post de WebService da seguinte forma:

dom = ws.post("SELECT FROM 'PLACA'.'CONSULTA'", {'placa': 'XXX9999'})

Esse método retorna um ElementTree o qual suporta XPath e escrita do XML para arquivo.

import xml.etree.ElementTree as ET

# Visualizando o XML retornado
print ET.tostring(dom.getroot())

# Salvando o XML
dom.write('output.xml')

# Recuperando a marca do veículo
print dom.find('./body/marca').text

#PUSH

Criando um PUSH

A criação de PUSHES permite captura/monitoramento, sobre uma determinada fonte de dados, através de uma consulta segundo o padrão bpql.

from bipbop.client import Push
push = Push(webservice)
id = push.create('suaLabel', 'urlDeCallBack' , "SELECT FROM 'PLACA'.'CONSULTA'", {'placa' => 'XXX0000'})

Nesse caso para a sua url de callback, será retornado o documento bpql gerado, e são enviados os seguintes parametros no header do server:

HTTP_X_BIPBOP_VERSION
HTTP_X_BIPBOP_DOCUMENT_ID
HTTP_X_BIPBOP_DOCUMENT_LABEL

ABRINDO um PUSH

Com este método é possível visualizar o documento bpql capturado.

print push.open(id)

REMOVENDO um PUSH

Com este método é possível remover determinado PUSH da lista de uma apiKey.

push.delete(id)

Mais informações

Para mais informações e aquisição de uma chave de api acesse http://api.bipbop.com.br.