Skip to content

Commit 566f87a

Browse files
committed
Nova classe ODataAPI para chamar diretamente as APIs OData do BCB
1 parent 993197e commit 566f87a

3 files changed

Lines changed: 40 additions & 9 deletions

File tree

bcb/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def get_endpoint(self, endpoint):
129129
return Endpoint(self.service[endpoint], self.service.url)
130130

131131

132-
class GenericODataAPI(BaseODataAPI):
132+
class ODataAPI(BaseODataAPI):
133133
"""
134134
Classe que abstrai qualquer API OData
135135
@@ -142,7 +142,7 @@ class GenericODataAPI(BaseODataAPI):
142142

143143
def __init__(self, url):
144144
"""
145-
GenericODataAPI construtor
145+
ODataAPI construtor
146146
147147
Parameters
148148
----------
18.4 KB
Loading

docs/odata.rst

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ que possui os seguintes métodos.
4747
- :py:meth:`bcb.odata.ODataQuery.collect`
4848
- :py:meth:`bcb.odata.ODataQuery.show`
4949

50-
Aplicação - Expectativas
51-
------------------------
50+
Aplicações
51+
----------
52+
53+
Expectativas
54+
^^^^^^^^^^^^
5255

5356
Vamos ver como isso tudo funciona utilizando a API de expectativas.
5457

@@ -59,7 +62,7 @@ Vamos ver como isso tudo funciona utilizando a API de expectativas.
5962
em.describe()
6063
6164
``EntitySets``
62-
^^^^^^^^^^^^^^
65+
""""""""""""""
6366

6467
Vemos que na API de expectativas tem uma listagem de ``EntitySets``.
6568
``EntitySets`` são *endpoints* que retornam um conjunto de dados toda vez que
@@ -73,7 +76,7 @@ Inspecionando o *endpoint* ``ExpectativaMercadoMensais``
7376
7477
7578
``EntityType``
76-
^^^^^^^^^^^^^^
79+
""""""""""""""
7780

7881
Os dados retornados por um ``EntitySet`` tem um tipo que é o seu ``EntityType``.
7982
Para o *endpoint* ``ExpectativaMercadoMensais`` o tipo retornado é
@@ -149,8 +152,8 @@ um conjunto de colunas.
149152
.limit(10)
150153
.collect())
151154
152-
Aplicação - Moedas
153-
------------------
155+
Moedas
156+
^^^^^^
154157

155158
Uma outra aplicação é com a API de Moedas que implementa a especificação OData.
156159
Utilizando a classe :py:class:`bcb.PTAX` temos:
@@ -163,7 +166,7 @@ Utilizando a classe :py:class:`bcb.PTAX` temos:
163166
164167
165168
``FunctionImports``
166-
^^^^^^^^^^^^^^^^^^^
169+
"""""""""""""""""""
167170

168171
Note que essa API tem um ``EntitySet`` e seis ``FunctionImports``.
169172
A diferença entre eles é que os ``FunctionImports`` são funções
@@ -201,6 +204,34 @@ Podemos filtrar apenas pelos dados de abertura.
201204
.collect())
202205
203206
207+
Classe ODataAPI
208+
^^^^^^^^^^^^^^^
209+
210+
.. currentmodule:: bcb
211+
212+
.. autoclass:: ODataAPI
213+
:inherited-members:
214+
215+
O portal de Dados Abertos to Banco Central apresenta diversas APIs OData, são
216+
dezenas de APIs disponíveis.
217+
A URL com metadados de cada API pode ser obtida no portal.
218+
A classe ``ODataAPI`` permite acessar qualquer API Odata de posse da sua URL.
219+
220+
Por exemplo, a API de estatísticas de operações registradas no Selic tem a seguinte URL::
221+
222+
https://olinda.bcb.gov.br/olinda/servico/selic_operacoes/versao/v1/odata/
223+
224+
que pode ser obtida no portal de dados abertos no `link <https://dadosabertos.bcb.gov.br/dataset/estatisticas-selic-operacoes>`_.
225+
226+
Essa API pode ser diretamente acessada através da classe ``ODataAPI``.
227+
228+
.. ipython:: python
229+
230+
from bcb import ODataAPI
231+
url = "https://olinda.bcb.gov.br/olinda/servico/selic_operacoes/versao/v1/odata/"
232+
service = ODataAPI(url)
233+
service.describe()
234+
204235
Conclusão
205236
---------
206237

0 commit comments

Comments
 (0)