Why this exists
As séries, já tipadas
O BPstat guarda milhares de séries temporais económicas e financeiras de Portugal, atrás de uma API REST paginada com etiquetas bilingues ({ EN, PT }) e valores em string. Estes SDKs dão-te Domain, Series e Observation tipados, tratam dos envelopes { data } / paginação e juntam um parser de valores.
Domínios
77 áreas temáticas, com título e descrição em EN e PT.
Séries
Milhares de séries por domínio, paginadas, com o último valor.
Observações
A série temporal completa: valor + data de referência.
Quick start
Instala e corre
npm install bpstat-ptimport { BpstatClient, valueOf } from "bpstat-pt";
const bp = new BpstatClient();
const domains = await bp.domains();
const page = await bp.seriesByDomain(domains[0].id);
const obs = await bp.observations([page.data[0].id]);
console.log(valueOf(obs.at(-1)!));<dependency>
<groupId>io.github.marcelogdomingues</groupId>
<artifactId>bpstat</artifactId>
<version>0.1.0</version>
</dependency>BpstatClient bp = BpstatClient.builder().build();
List<Domain> domains = bp.domains();
SeriesPage page = bp.seriesByDomain(domains.get(0).id, 1);
List<Observation> obs = bp.observations(List.of(page.data.get(0).id));dotnet add package Bpstatvar bp = new BpstatClient();
var domains = await bp.DomainsAsync();
var page = await bp.SeriesByDomainAsync(domains[0].Id);
var obs = await bp.ObservationsAsync(new[] { page.Data[0].Id });API
Superfície
| Área | Método | Endpoint |
|---|---|---|
| Domínios | domains(lang?) | /domains/ |
| Séries de um domínio | seriesByDomain(domainId, page?, lang?) | /series/ (paginado) |
| Séries por id | seriesByIds(ids, lang?) | /series/ |
| Observações | observations(seriesIds, lang?) | /observations/ |
lang é "EN" (default) ou "PT". Erros lançam BpstatError / BpstatException e expõem a errors[].message da API.
The model
Domain · Series · Observation
Domain — área temática, com title/description bilingues. Series — uma série temporal; last_observation_reference_date/_value dão o último ponto. Observation — um ponto: value (string), reference_date, is_highlighted.
valueOf(observation); // 2.38 — string → number
Em Java/C#: observation.numericValue() / observation.NumericValue(). O endpoint /series é paginado — seriesByDomain devolve um SeriesPage com links.next.
FAQ
Common questions
Preciso de uma API key?
Não — a API do BPstat é pública. Cita a fonte e segue os termos de uso.
Como encontro o id de uma série?
Começa em domains(), depois seriesByDomain(domainId) para paginar as séries; ou procura os ids no site do BPstat e passa-os a seriesByIds / observations.
Porque é que os valores são strings?
É como a API os devolve (preservando precisão/formato). Usa valueOf / numericValue() / NumericValue() para números.
Isto é afiliado ao Banco de Portugal?
Não — é um cliente comunitário independente.