@@ -137,3 +137,44 @@ def get(codes, start=None, end=None, last=0, multi=True, freq=None):
137137 return pd .concat (dfs , axis = 1 )
138138 else :
139139 return dfs
140+
141+
142+ def get_json (code : int , start = None , end = None , last : int = 0 ) -> str :
143+ """
144+ Retorna um JSON com séries temporais obtidas do SGS.
145+
146+ Parameters
147+ ----------
148+
149+ code : int
150+ Código da série temporal
151+ start : str, int, date, datetime, Timestamp
152+ Data de início da série.
153+ Interpreta diferentes tipos e formatos de datas.
154+ end : string, int, date, datetime, Timestamp
155+ Data final da série.
156+ Interpreta diferentes tipos e formatos de datas.
157+ last : int
158+ Retorna os últimos ``last`` elementos disponíveis da série temporal
159+ solicitada. Se ``last`` for maior que 0 (zero) os argumentos ``start``
160+ e ``end`` são ignorados.
161+
162+ Returns
163+ -------
164+
165+ JSON :
166+ série temporal univariada em formato JSON.
167+ """
168+ urd = _get_url_and_payload (code , start , end , last )
169+ res = requests .get (urd ["url" ], params = urd ["payload" ])
170+ if res .status_code != 200 :
171+ try :
172+ res_json = json .loads (res .text )
173+ except Exception :
174+ res_json = {}
175+ if "error" in res_json :
176+ raise Exception ("BCB error: {}" .format (res_json ["error" ]))
177+ elif "erro" in res_json :
178+ raise Exception ("BCB error: {}" .format (res_json ["erro" ]["detail" ]))
179+ raise Exception ("Download error: code = {}" .format (code ))
180+ return res .text
0 commit comments