opf-br-mcp 0.9.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -12
- package/dist/index.js +238 -49
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,27 +10,28 @@ acesso token-eficiente às regras do Open Finance Brasil.
|
|
|
10
10
|
|
|
11
11
|
| Domínio | Fonte | Conteúdo |
|
|
12
12
|
|---|---|---|
|
|
13
|
-
| `pcm-additional-info` | Confluence público OFB | Regras de obrigatoriedade do `additionalInfo` (PCM) |
|
|
14
|
-
| `payments-v4-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 4.1.0 da API de Pagamentos |
|
|
13
|
+
| `pcm-additional-info` | Confluence público OFB | Regras de obrigatoriedade do `additionalInfo` (PCM), incluindo Dados Abertos |
|
|
15
14
|
| `payments-v5-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 5.0.0 da API de Iniciação de Pagamentos (consentimentos + Pix) |
|
|
16
15
|
| `payments-v5-business-rules` | Confluence público OFB (Serviços - SV) | Regras de negócio da API de Pagamentos 5.0.0 (Escopo, Máquina de Estados, Diagrama de Sequência, Validação no DICT, Adaptações 4.0.1→5.0.0) — item por seção |
|
|
17
16
|
| `enrollments-v2-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 2.3.0 da API de Vínculo de Dispositivo (Enrollments, FIDO, Pix Automático) |
|
|
18
|
-
| `enrollments-v2-business-rules` | Confluence público OFB (Serviços - SV) | Regras de negócio do Vínculo de Dispositivo 2.
|
|
17
|
+
| `enrollments-v2-business-rules` | Confluence público OFB (Serviços - SV) | Regras de negócio do Vínculo de Dispositivo 2.3.0-rc.1 (Máquina de estados, Edição do vínculo, FAQ - JSR) — item por seção |
|
|
19
18
|
| `automatic-payments-v2-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 2.2.0 da API de Pagamentos Automáticos (Pix Automático e Transferências Inteligentes) |
|
|
20
19
|
| `automatic-payments-v2-business-rules` | Confluence público OFB (Serviços - SV) | Regras de negócio de Pagamentos Automáticos 2.2.0 (Máquina de Estados, Edição do consentimento, Tentativas Intradia/Extradia, Adaptações 1.0.0→2.2.0) — item por seção |
|
|
21
20
|
| `payments-common-rules` | Confluence público OFB (Serviços - SV) | Conteúdo comum aos produtos de Iniciação de Pagamentos (atores, Idempotência, Como Assinar o Payload, Convenções de data/fuso, Polling) — item por seção |
|
|
22
21
|
| `payments-implementation-guides` | Confluence público OFB (Serviços - SV) | Guias de Implementação (Pix Automático, Agendamento Recorrente, Transferências Inteligentes, Liquidação de QR Codes) — item por seção |
|
|
23
22
|
| `consents-v3-openapi` | GitHub Pages openbanking-brasil.github.io | Spec OpenAPI 3.3.1 da API de Consentimentos (Dados Cadastrais e Transacionais) |
|
|
24
23
|
| `resources-v3-openapi` | GitHub Pages openbanking-brasil.github.io | Spec OpenAPI 3.1.0 da API de Recursos (`GET /resources`: status dos recursos compartilhados) |
|
|
25
|
-
| `resources-v3-business-rules` | Confluence público OFB (Dados - DC) | Regras de negócio da API de Recursos 3.1.0 (Informações Gerais, Orientações) — item por seção |
|
|
26
|
-
| `accounts-v2-openapi` | GitHub
|
|
27
|
-
| `accounts-v2-business-rules` | Confluence público OFB (Dados - DC) | Regras de negócio da API de Contas 2.
|
|
24
|
+
| `resources-v3-business-rules` | Confluence público OFB (Dados - DC) | Regras de negócio da API de Recursos 3.1.0 (Informações Gerais, Orientações, Campos regulatórios) — item por seção |
|
|
25
|
+
| `accounts-v2-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 2.5.1 da API de Contas (listagem, saldos, saldos reservados/caixinhas, transações, limites de cheque especial) |
|
|
26
|
+
| `accounts-v2-business-rules` | Confluence público OFB (Dados - DC) | Regras de negócio da API de Contas 2.5.0 (PRD, Orientações — contraparte/IN BCB nº 371) — item por seção |
|
|
28
27
|
| `pcm-openapi` | GitHub OpenBanking-Brasil/pcm-specs | Spec OpenAPI da PCM (reportes, hybrid-flow, opendata, consents/stock, credit-portabilities, payments/status) |
|
|
29
|
-
| `pcm-business-rules` | Confluence público OFB | Regras de negócio da PCM (
|
|
28
|
+
| `pcm-business-rules` | Confluence público OFB | Regras de negócio e gestão operacional da PCM (reporte, processamento, divergências, `dropReason`, descartes, não pareamento, qualidade e SLAs) — item por seção |
|
|
30
29
|
| `jornada-otimizada` | Confluence público OFB | Regras da Jornada Otimizada (Orientações Gerais, Transferências Inteligentes, Jornada sem Redirecionamento) — item por seção |
|
|
31
|
-
| `mqd` | Confluence público OFB | Motor de Qualidade de Dados (
|
|
30
|
+
| `mqd` | Confluence público OFB | Motor de Qualidade de Dados (especificação técnica, arquitetura e fluxos, documentação da API, instalação, endpoints validados, FAQ e troubleshooting) — item por seção |
|
|
32
31
|
| `webhook-v1-openapi` | GitHub OpenBanking-Brasil/all-services-repo | Spec OpenAPI 1.3.0 da API de Webhook (notificações de mudança de estado: pagamentos, enrollments, pagamentos automáticos) |
|
|
33
|
-
| `seguranca` | Confluence público OFB | Segurança do Open Finance Brasil (Perfil de Segurança, FAPI, DCR, CIBA, Padrão de Certificados, Assinaturas, Casos de Erro, Redirecionamento App-to-App, Glossário, Versionamento) — item por seção |
|
|
32
|
+
| `seguranca` | Confluence público OFB | Segurança do Open Finance Brasil (guias do usuário, Perfil de Segurança, FAPI-BR 2.2.1, DCR-BR 2.1.0, referências de CIBA, Padrão de Certificados 2.1, Assinaturas, Casos de Erro, Redirecionamento App-to-App, Glossário, Versionamento) — item por seção |
|
|
33
|
+
| `requisitos-nao-funcionais` | Confluence público OFB (Manual de APIs) | Requisitos não funcionais de todas as APIs (Desempenho, Disponibilidade, Timeout, Limites de tráfego, Limites operacionais, Indisponibilidade Programada) — item por seção |
|
|
34
|
+
| `limites-por-endpoint` | Confluence público OFB (Manual de APIs) | SLA (p95), timeout, TPM, TPS e limite operacional de cada endpoint de todas as famílias de API — um item por endpoint |
|
|
34
35
|
| `participantes` | Diretório OFB (data.directory.openbankingbrasil.org.br) | Organizações participantes, marcas (authorisation servers) e famílias de API suportadas com versões — um item por organização |
|
|
35
36
|
| `portal` | Confluence público OFB (busca ao vivo) | Busca CQL em todo o Portal do Desenvolvedor (espaço OF) — sem cache, `query` obrigatória; fallback quando os domínios específicos não cobrem o assunto |
|
|
36
37
|
|
|
@@ -70,7 +71,7 @@ bem na janela de contexto de um agente, e despejá-la desperdiça tokens. A solu
|
|
|
70
71
|
apenas o mínimo necessário em cada etapa do funil:
|
|
71
72
|
|
|
72
73
|
1. **`list_domains`** — catálogo barato: quais domínios e filtros existem. Os
|
|
73
|
-
filtros idênticos a uma família inteira de domínios (os 8 `*-openapi`, os
|
|
74
|
+
filtros idênticos a uma família inteira de domínios (os 8 `*-openapi`, os 12
|
|
74
75
|
de seções do Confluence) saem uma única vez em `filterSets`; cada domínio
|
|
75
76
|
traz `filterSet` e só lista inline o que é próprio dele (em `*-openapi`,
|
|
76
77
|
apenas `path`, cujo exemplo varia por API). Os filtros aceitos por um domínio
|
|
@@ -84,8 +85,8 @@ apenas o mínimo necessário em cada etapa do funil:
|
|
|
84
85
|
|
|
85
86
|
Como o Swagger/OpenAPI vira dados pesquisáveis: o parser "achata" a spec em itens
|
|
86
87
|
com `id` estável — um por endpoint (`type: operation`, ex.
|
|
87
|
-
`payments
|
|
88
|
-
(`payments
|
|
88
|
+
`payments:POST /pix/payments`) e um por component reutilizável: `type: schema`
|
|
89
|
+
(`payments:schema:PixPayment`), `type: response` (`webhook:response:202Webhook`),
|
|
89
90
|
`type: parameter` (`webhook:parameter:xWebhookInteractionId`) e `type: header`
|
|
90
91
|
(`payments:header:X-V`). O JSON completo de
|
|
91
92
|
cada nó fica retido em `detail` até um `get_item` explícito. Os `id`s não são
|
|
@@ -167,3 +168,12 @@ npm test # vitest (fixtures locais, sem rede)
|
|
|
167
168
|
npm run typecheck # tsc --noEmit
|
|
168
169
|
npm run build # tsup → dist/
|
|
169
170
|
```
|
|
171
|
+
|
|
172
|
+
### Skills para manutenção dos domínios
|
|
173
|
+
|
|
174
|
+
As skills do projeto ficam em `.agents/skills`:
|
|
175
|
+
|
|
176
|
+
- [auditar-dominios](.agents/skills/auditar-dominios/SKILL.md) — compara os domínios com as fontes oficiais e lista versões, páginas ou cobertura que precisam de atualização, com evidências e sem editar o projeto.
|
|
177
|
+
- [atualizar-dominios](.agents/skills/atualizar-dominios/SKILL.md) — aplica as atualizações solicitadas e verifica extração, fixtures, testes, tipos e build.
|
|
178
|
+
|
|
179
|
+
Exemplos de pedidos: “Use $auditar-dominios para listar os domínios desatualizados” e “Use $atualizar-dominios para atualizar Automatic Payments dentro do major atual”.
|
package/dist/index.js
CHANGED
|
@@ -56,7 +56,7 @@ function isFresh(entry, ttlHours, now = /* @__PURE__ */ new Date()) {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
// src/core/version.ts
|
|
59
|
-
var PACKAGE_VERSION = "
|
|
59
|
+
var PACKAGE_VERSION = "1.1.0";
|
|
60
60
|
|
|
61
61
|
// src/core/data.ts
|
|
62
62
|
async function getDomainData(domain, force = false, ctx) {
|
|
@@ -158,6 +158,7 @@ var pcmConfig = {
|
|
|
158
158
|
{ pageId: "1621622796", title: "Inicia\xE7\xE3o de Pagamentos" },
|
|
159
159
|
{ pageId: "1623162886", title: "Inicia\xE7\xE3o de Pagamentos Sem Redirecionamento" },
|
|
160
160
|
{ pageId: "1622081540", title: "Pagamentos Autom\xE1ticos" },
|
|
161
|
+
{ pageId: "1212088335", title: "Regras de Obrigatoriedade (additionalInfo) - DA" },
|
|
161
162
|
{ pageId: "1212153857", title: "Regras de Obrigatoriedade additionalInfo - SG" },
|
|
162
163
|
{ pageId: "1621786627", title: "DC - C\xE2mbio" },
|
|
163
164
|
{ pageId: "1622736899", title: "DC - Cart\xE3o de Cr\xE9dito" },
|
|
@@ -350,7 +351,7 @@ function buildItems(pages) {
|
|
|
350
351
|
var pcmDomain = {
|
|
351
352
|
id: "pcm-additional-info",
|
|
352
353
|
title: "PCM \u2014 Regras de obrigatoriedade do additionalInfo",
|
|
353
|
-
description: "Tabelas de obrigatoriedade e preenchimento do campo additionalInfo no Open Finance Brasil, extra\xEDdas do Confluence, por fam\xEDlia: Inicia\xE7\xE3o de Pagamentos (v4/v5), Sem Redirecionamento, Pagamentos Autom\xE1ticos, Seguran\xE7a (SG) e Dados/Consentimento (DC-*, v3). Cada item \xE9 um campo com regra de preenchimento, roles (CLIENT/SERVER), m\xE9todos, endpoints, vers\xF5es, tamanho m\xE1ximo e exemplo. Uma das facetas da PCM (Plataforma de Coleta de M\xE9tricas): para o swagger dos endpoints de reporte veja pcm-openapi; para as regras de neg\xF3cio (reporte, processamento, diverg\xEAncias) veja pcm-business-rules. search devolve resumos; use get_item para o registro completo.",
|
|
354
|
+
description: "Tabelas de obrigatoriedade e preenchimento do campo additionalInfo no Open Finance Brasil, extra\xEDdas do Confluence, por fam\xEDlia: Inicia\xE7\xE3o de Pagamentos (v4/v5), Sem Redirecionamento, Pagamentos Autom\xE1ticos, Dados Abertos (DA), Seguran\xE7a (SG) e Dados/Consentimento (DC-*, v3). Cada item \xE9 um campo com regra de preenchimento, roles (CLIENT/SERVER), m\xE9todos, endpoints, vers\xF5es, tamanho m\xE1ximo e exemplo. Uma das facetas da PCM (Plataforma de Coleta de M\xE9tricas): para o swagger dos endpoints de reporte veja pcm-openapi; para as regras de neg\xF3cio (reporte, processamento, diverg\xEAncias) veja pcm-business-rules. search devolve resumos; use get_item para o registro completo.",
|
|
354
355
|
ttlHours: 72,
|
|
355
356
|
filters: [
|
|
356
357
|
{ name: "field", description: "Match exato no nome do campo (case-insensitive)" },
|
|
@@ -535,26 +536,11 @@ function createOpenApiDomain(config) {
|
|
|
535
536
|
};
|
|
536
537
|
}
|
|
537
538
|
|
|
538
|
-
// src/domains/payments-v4-openapi/config.ts
|
|
539
|
-
var paymentsConfig = {
|
|
540
|
-
id: "payments-v4-openapi",
|
|
541
|
-
title: "API de Pagamentos \u2014 spec OpenAPI 4.1.0",
|
|
542
|
-
description: "Spec OpenAPI oficial da API de Inicia\xE7\xE3o de Pagamentos (Pix) do Open Finance Brasil, vers\xE3o 4. Mesma fam\xEDlia da payments-v5-openapi (major mais recente); escolha o dom\xEDnio pela vers\xE3o que seu caso usa. Itens type=operation (endpoints, um por m\xE9todo+path), type=schema (payloads) e os components reutiliz\xE1veis alvos dos $ref: type=response e type=parameter. search devolve resumos; use get_item para o n\xF3 completo da spec \u2014 nas opera\xE7\xF5es o campo `refs` traz os ids dos components referenciados, prontos para get_item.",
|
|
543
|
-
pathExample: "/pix/payments",
|
|
544
|
-
specName: "payments",
|
|
545
|
-
specVersion: "4.1.0",
|
|
546
|
-
url: "https://raw.githubusercontent.com/OpenBanking-Brasil/all-services-repo/refs/heads/main/api_payment_initiation_-_open_finance_brasil/4.1.0.yaml",
|
|
547
|
-
retryDelaysMs: [2e3, 4e3, 8e3, 16e3]
|
|
548
|
-
};
|
|
549
|
-
|
|
550
|
-
// src/domains/payments-v4-openapi/index.ts
|
|
551
|
-
var paymentsDomain = createOpenApiDomain(paymentsConfig);
|
|
552
|
-
|
|
553
539
|
// src/domains/payments-v5-openapi/config.ts
|
|
554
540
|
var paymentsV5Config = {
|
|
555
541
|
id: "payments-v5-openapi",
|
|
556
542
|
title: "API de Pagamentos \u2014 spec OpenAPI 5.0.0",
|
|
557
|
-
description: "Spec OpenAPI oficial da API de Inicia\xE7\xE3o de Pagamentos (Pix) do Open Finance Brasil, vers\xE3o 5
|
|
543
|
+
description: "Spec OpenAPI oficial da API de Inicia\xE7\xE3o de Pagamentos (Pix) do Open Finance Brasil, vers\xE3o 5. Itens type=operation (endpoints, um por m\xE9todo+path), type=schema (payloads) e os components reutiliz\xE1veis alvos dos $ref: type=response, type=parameter e type=header. search devolve resumos; use get_item para o n\xF3 completo da spec \u2014 nas opera\xE7\xF5es o campo `refs` traz os ids dos components referenciados, prontos para get_item.",
|
|
558
544
|
pathExample: "/pix/payments",
|
|
559
545
|
specName: "payments",
|
|
560
546
|
specVersion: "5.0.0",
|
|
@@ -720,16 +706,16 @@ var enrollmentsV2Domain = createOpenApiDomain(enrollmentsV2Config);
|
|
|
720
706
|
var enrollmentsV2BusinessRulesConfig = {
|
|
721
707
|
id: "enrollments-v2-business-rules",
|
|
722
708
|
title: "API de V\xEDnculo de Dispositivo v2 \u2014 Regras de neg\xF3cio (SV)",
|
|
723
|
-
specVersion: "2.
|
|
724
|
-
description: "Regras de neg\xF3cio da API de V\xEDnculo de Dispositivo (Enrollments / Jornada Sem Redirecionamento) vers\xE3o 2.
|
|
709
|
+
specVersion: "2.3.0-rc.1",
|
|
710
|
+
description: "Regras de neg\xF3cio da API de V\xEDnculo de Dispositivo (Enrollments / Jornada Sem Redirecionamento) vers\xE3o 2.3.0-rc.1 do Open Finance Brasil, extra\xEDdas das p\xE1ginas Confluence de Servi\xE7os (SV): Informa\xE7\xF5es Gerais, M\xE1quina de estados (vincula\xE7\xE3o de conta, autoriza\xE7\xE3o de consentimento e do consentimento recorrente), Edi\xE7\xE3o do v\xEDnculo de dispositivo (campos edit\xE1veis e condi\xE7\xF5es) e FAQ - JSR (perguntas e respostas por categoria). Complementa enrollments-v2-openapi, que traz a spec (endpoints e schemas) do mesmo major \u2014 hoje na 2.3.0 est\xE1vel. Cada item \xE9 uma se\xE7\xE3o (heading) da p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
725
711
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
726
712
|
interRequestDelayMs: 2e3,
|
|
727
713
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
728
714
|
pages: [
|
|
729
|
-
{ pageId: "
|
|
730
|
-
{ pageId: "
|
|
731
|
-
{ pageId: "
|
|
732
|
-
{ pageId: "
|
|
715
|
+
{ pageId: "2025424962", title: "Informa\xE7\xF5es Gerais - V\xEDnculo de dispositivo v2.3.0-rc.1" },
|
|
716
|
+
{ pageId: "2025424995", title: "M\xE1quina de estados - V\xEDnculo de dispositivo v2.3.0-rc.1" },
|
|
717
|
+
{ pageId: "2025425190", title: "Edi\xE7\xE3o do v\xEDnculo de dispositivo - v2.3.0-rc.1" },
|
|
718
|
+
{ pageId: "2025425163", title: "FAQ - JSR - V\xEDnculo de dispositivo v2.3.0-rc.1" }
|
|
733
719
|
]
|
|
734
720
|
};
|
|
735
721
|
|
|
@@ -822,7 +808,7 @@ var paymentsImplementationGuidesDomain = createConfluenceSectionsDomain(
|
|
|
822
808
|
var consentsV3Config = {
|
|
823
809
|
id: "consents-v3-openapi",
|
|
824
810
|
title: "API de Consentimentos \u2014 spec OpenAPI 3.3.1",
|
|
825
|
-
description: "Spec OpenAPI oficial da API de Consentimentos de compartilhamento de dados (Dados Cadastrais e Transacionais) do Open Finance Brasil, vers\xE3o 3.3.1. \xC9 o consentimento de dados \u2014 n\xE3o cobre consentimento de pagamento, que fica em payments-
|
|
811
|
+
description: "Spec OpenAPI oficial da API de Consentimentos de compartilhamento de dados (Dados Cadastrais e Transacionais) do Open Finance Brasil, vers\xE3o 3.3.1. \xC9 o consentimento de dados \u2014 n\xE3o cobre consentimento de pagamento, que fica em payments-v5-openapi (/consents) e automatic-payments-v2-openapi (/recurring-consents). Cobre cria\xE7\xE3o (POST /consents), consulta (GET /consents/{consentId}), revoga\xE7\xE3o (DELETE /consents/{consentId}), renova\xE7\xE3o (POST /consents/{consentId}/extends) e hist\xF3rico de renova\xE7\xF5es (GET /consents/{consentId}/extensions). Itens type=operation (um por m\xE9todo+path), type=schema (payloads, ex.: CreateConsent, ResponseConsent, LoggedUser, BusinessEntity) e os components reutiliz\xE1veis alvos dos $ref: type=response (BadRequest, UnprocessableEntity, ...) e type=parameter (Authorization, xFapiInteractionId, ...). search devolve resumos; use get_item para o n\xF3 completo da spec \u2014 nas opera\xE7\xF5es o campo `refs` traz os ids dos components referenciados, prontos para get_item.",
|
|
826
812
|
pathExample: "/consents/{consentId}",
|
|
827
813
|
specName: "consents",
|
|
828
814
|
specVersion: "3.3.1",
|
|
@@ -853,13 +839,14 @@ var resourcesV3BusinessRulesConfig = {
|
|
|
853
839
|
id: "resources-v3-business-rules",
|
|
854
840
|
title: "API de Recursos v3 \u2014 Regras de neg\xF3cio (DC)",
|
|
855
841
|
specVersion: "3.1.0",
|
|
856
|
-
description: "Regras de neg\xF3cio da API de Recursos (Resources) vers\xE3o 3.1.0 do Open Finance Brasil, extra\xEDdas das p\xE1ginas Confluence de Dados Cadastrais e Transacionais (DC): Informa\xE7\xF5es Gerais (vis\xE3o geral do GET /resources/v3/resources, status do recurso versus status do consentimento) e Orienta\xE7\xF5es - [DC] Recursos (quando um recurso volta a ficar dispon\xEDvel, uso do status code de erro apropriado quando a transmissora n\xE3o retorna as informa\xE7\xF5es) \u2014 esta \xFAltima n\xE3o \xE9 versionada e vale para todo o major v3. Complementa resources-v3-openapi, que traz a spec (endpoints e schemas) do mesmo major. Cada item \xE9 uma se\xE7\xE3o (heading) da p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
842
|
+
description: "Regras de neg\xF3cio da API de Recursos (Resources) vers\xE3o 3.1.0 do Open Finance Brasil, extra\xEDdas das p\xE1ginas Confluence de Dados Cadastrais e Transacionais (DC): Informa\xE7\xF5es Gerais (vis\xE3o geral do GET /resources/v3/resources, status do recurso versus status do consentimento) e Orienta\xE7\xF5es - [DC] Recursos (quando um recurso volta a ficar dispon\xEDvel, uso do status code de erro apropriado quando a transmissora n\xE3o retorna as informa\xE7\xF5es) \u2014 esta \xFAltima n\xE3o \xE9 versionada e vale para todo o major v3 \u2014 e Campos regulat\xF3rios (obrigatoriedade regulat\xF3ria dos campos da resposta de GET /resources). Complementa resources-v3-openapi, que traz a spec (endpoints e schemas) do mesmo major. Cada item \xE9 uma se\xE7\xE3o (heading) da p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
857
843
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
858
844
|
interRequestDelayMs: 2e3,
|
|
859
845
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
860
846
|
pages: [
|
|
861
847
|
{ pageId: "1267990545", title: "Informa\xE7\xF5es Gerais - [DC] Recursos - v3.1.0" },
|
|
862
|
-
{ pageId: "219512943", title: "Orienta\xE7\xF5es - [DC] Recursos" }
|
|
848
|
+
{ pageId: "219512943", title: "Orienta\xE7\xF5es - [DC] Recursos" },
|
|
849
|
+
{ pageId: "219480528", title: "Campos regulat\xF3rios - [DC] Recursos" }
|
|
863
850
|
]
|
|
864
851
|
};
|
|
865
852
|
|
|
@@ -871,12 +858,14 @@ var resourcesV3BusinessRulesDomain = createConfluenceSectionsDomain(
|
|
|
871
858
|
// src/domains/accounts-v2-openapi/config.ts
|
|
872
859
|
var accountsV2Config = {
|
|
873
860
|
id: "accounts-v2-openapi",
|
|
874
|
-
title: "API de Contas \u2014 spec OpenAPI 2.
|
|
875
|
-
description: "Spec OpenAPI oficial da API de Contas (Accounts) do Open Finance Brasil, vers\xE3o 2.
|
|
861
|
+
title: "API de Contas \u2014 spec OpenAPI 2.5.1",
|
|
862
|
+
description: "Spec OpenAPI oficial da API de Contas (Accounts) do Open Finance Brasil, vers\xE3o 2.5.1 \u2014 compartilhamento de contas de dep\xF3sito \xE0 vista, poupan\xE7a e pagamento pr\xE9-paga. Cobre listagem (GET /accounts), identifica\xE7\xE3o (GET /accounts/{accountId}), saldos (GET /accounts/{accountId}/balances), saldos reservados/caixinhas (GET /accounts/{accountId}/reserved-balances, novo na 2.5.0), transa\xE7\xF5es (GET /accounts/{accountId}/transactions e /transactions-current) e limites de cheque especial (GET /accounts/{accountId}/overdraft-limits). \xC9 API de Dados Cadastrais e Transacionais: o consentimento que a habilita fica em consents-v3-openapi, e a listagem de recursos compartilhados em resources-v3-openapi. Itens type=operation (um por m\xE9todo+path), type=schema (payloads, ex.: AccountData, AccountBalancesData, AccountReservedBalancesData, AccountTransactionsData) e os components alvos dos $ref: type=response, type=parameter e type=header. Regras de neg\xF3cio da mesma API em accounts-v2-business-rules. search devolve resumos; use get_item para o n\xF3 completo da spec \u2014 nas opera\xE7\xF5es o campo `refs` traz os ids dos components referenciados, prontos para get_item.",
|
|
876
863
|
pathExample: "/accounts/{accountId}/transactions",
|
|
877
864
|
specName: "accounts",
|
|
878
|
-
specVersion: "2.
|
|
879
|
-
|
|
865
|
+
specVersion: "2.5.1",
|
|
866
|
+
// A partir da 2.5.0 as versões estáveis de Contas só saem no all-services-repo:
|
|
867
|
+
// github.io/openapi/swagger-apis/accounts para na 2.4.2 estável.
|
|
868
|
+
url: "https://raw.githubusercontent.com/OpenBanking-Brasil/all-services-repo/refs/heads/main/api_accounts_-_open_finance_brasil/2.5.1.yaml",
|
|
880
869
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3]
|
|
881
870
|
};
|
|
882
871
|
|
|
@@ -887,13 +876,19 @@ var accountsV2Domain = createOpenApiDomain(accountsV2Config);
|
|
|
887
876
|
var accountsV2BusinessRulesConfig = {
|
|
888
877
|
id: "accounts-v2-business-rules",
|
|
889
878
|
title: "API de Contas v2 \u2014 Regras de neg\xF3cio (DC)",
|
|
890
|
-
specVersion: "2.
|
|
891
|
-
description: "Regras de neg\xF3cio da API de Contas (Accounts)
|
|
879
|
+
specVersion: "2.5.0",
|
|
880
|
+
description: "Regras de neg\xF3cio da API de Contas (Accounts) do Open Finance Brasil, extra\xEDdas das p\xE1ginas Confluence de Dados Cadastrais e Transacionais (DC): o PRD (Documento de Requisito do Produto) da v2.5.0 \u2014 escopo, funcionalidades e regras por assunto (listagem de contas, transa\xE7\xF5es, limites e saldos reservados/caixinhas), com escopo e permissions de cada um \u2014 e Orienta\xE7\xF5es - [DC] Contas (obrigatoriedade de informa\xE7\xF5es de contraparte pela IN BCB n\xBA 371, tratamento de transa\xE7\xF5es e casos de borda), esta \xFAltima n\xE3o versionada e v\xE1lida para todo o major v2. Complementa accounts-v2-openapi, que traz a spec (endpoints e schemas) do mesmo major \u2014 hoje na 2.5.1, enquanto o PRD do Confluence \xE9 o da 2.5.0. Cada item \xE9 uma se\xE7\xE3o (heading) da p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
892
881
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
893
882
|
interRequestDelayMs: 2e3,
|
|
894
883
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
884
|
+
// A árvore [DC] API - Contas foi reorganizada: as páginas "Informações Gerais -
|
|
885
|
+
// [DC] Contas - vX" foram para "Histórico de Especificações" (subárvore arquivada,
|
|
886
|
+
// fora da convenção do projeto) e o container v2.5.0 só guarda swagger e changelogs.
|
|
887
|
+
// O conteúdo normativo passou a ser o PRD, sob "Documentação Negocial - API de Contas".
|
|
888
|
+
// Fora da lista: "Diagrama de Sequencia da Jornada - API Contas" (1739063297), que é
|
|
889
|
+
// só uma imagem, sem headings nem texto.
|
|
895
890
|
pages: [
|
|
896
|
-
{ pageId: "
|
|
891
|
+
{ pageId: "1738965008", title: "Documento de Requisito do Produto (PRD) - API de Contas v2.5.0" },
|
|
897
892
|
{ pageId: "1739096252", title: "Orienta\xE7\xF5es - [DC] Contas" }
|
|
898
893
|
]
|
|
899
894
|
};
|
|
@@ -906,9 +901,12 @@ var accountsV2BusinessRulesDomain = createConfluenceSectionsDomain(
|
|
|
906
901
|
// src/domains/pcm-openapi/config.ts
|
|
907
902
|
var pcmOpenapiConfig = {
|
|
908
903
|
specName: "pcm",
|
|
909
|
-
// A spec da PCM
|
|
910
|
-
//
|
|
911
|
-
//
|
|
904
|
+
// A spec da PCM declara `info.version: 1.0.0`, um placeholder que nunca muda —
|
|
905
|
+
// a versão real da PCM vai no campo `openapi:` (3.9.2 neste commit), fora do
|
|
906
|
+
// padrão. Identificar pelo commit é o único rótulo verificável — e deixa
|
|
907
|
+
// explícito, em list_domains, que este domínio está congelado no SHA.
|
|
908
|
+
// Não mover o pin sem checar o conteúdo: o head atual do branch (48e7632) troca
|
|
909
|
+
// `openapi: 3.9.2` por `3.0.0`, ou seja, apaga o único sinal de versão da PCM.
|
|
912
910
|
specVersion: "commit 8a7f7b0",
|
|
913
911
|
url: "https://raw.githubusercontent.com/OpenBanking-Brasil/pcm-specs/8a7f7b03ddfab7eaf97bcfe68e67fac22a5eeb68/PCM-current.openapi.yaml",
|
|
914
912
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3]
|
|
@@ -926,8 +924,8 @@ var pcmOpenapiDomain = createOpenApiDomain({
|
|
|
926
924
|
// src/domains/pcm-business-rules/config.ts
|
|
927
925
|
var pcmBusinessRulesConfig = {
|
|
928
926
|
id: "pcm-business-rules",
|
|
929
|
-
title: "PCM \u2014 Regras de neg\xF3cio
|
|
930
|
-
description: "Regras de neg\xF3cio da PCM (Plataforma de Coleta de M\xE9tricas) do Open Finance Brasil \u2014 como funcionam reporte, processamento, fechamento
|
|
927
|
+
title: "PCM \u2014 Regras de neg\xF3cio e gest\xE3o operacional",
|
|
928
|
+
description: "Regras de neg\xF3cio da PCM (Plataforma de Coleta de M\xE9tricas) do Open Finance Brasil \u2014 como funcionam reporte, processamento, fechamento, diverg\xEAncias, dropReason e gest\xE3o operacional de descartes, n\xE3o pareamento, qualidade e SLAs \u2014, extra\xEDdas das p\xE1ginas funcionais e operacionais do Confluence. Cada item \xE9 uma se\xE7\xE3o (heading) da p\xE1gina. Outras facetas da PCM: o swagger dos endpoints de reporte em pcm-openapi; as tabelas de obrigatoriedade do campo additionalInfo em pcm-additional-info. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
931
929
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
932
930
|
interRequestDelayMs: 2e3,
|
|
933
931
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
@@ -936,7 +934,14 @@ var pcmBusinessRulesConfig = {
|
|
|
936
934
|
{ pageId: "37945368", title: "Reporte, Processamento e Diverg\xEAncias" },
|
|
937
935
|
{ pageId: "37879861", title: "Reporte" },
|
|
938
936
|
{ pageId: "37912631", title: "Processamento" },
|
|
939
|
-
{ pageId: "37945515", title: "Manual de Integra\xE7\xE3o" }
|
|
937
|
+
{ pageId: "37945515", title: "Manual de Integra\xE7\xE3o" },
|
|
938
|
+
{ pageId: "1989836847", title: "Campo dropReason \u2014 Documenta\xE7\xE3o Funcional para Organiza\xE7\xF5es" },
|
|
939
|
+
{ pageId: "1212088347", title: "Reportes Descartados" },
|
|
940
|
+
{ pageId: "1212252161", title: "Reportes N\xE3o Pareados" },
|
|
941
|
+
{ pageId: "1212219393", title: "Qualidade de Dados" },
|
|
942
|
+
{ pageId: "1212186625", title: "SLA de Envio de Reportes - 95% at\xE9 08:00h de D+1" },
|
|
943
|
+
{ pageId: "1506934785", title: "SLA de Envio de Reportes - 99% at\xE9 7 dias da transa\xE7\xE3o" },
|
|
944
|
+
{ pageId: "1558675457", title: "SLA de Envio - Estados de Pagamento - SV" }
|
|
940
945
|
]
|
|
941
946
|
};
|
|
942
947
|
|
|
@@ -966,13 +971,18 @@ var jornadaOtimizadaDomain = createConfluenceSectionsDomain(jornadaOtimizadaConf
|
|
|
966
971
|
var mqdConfig = {
|
|
967
972
|
id: "mqd",
|
|
968
973
|
title: "Motor de Qualidade de Dados (MQD)",
|
|
969
|
-
description: "Conhecimento regulat\xF3rio do Motor de Qualidade de Dados (MQD) do Open Finance Brasil, extra\xEDdo das p\xE1ginas Confluence
|
|
974
|
+
description: "Conhecimento regulat\xF3rio do Motor de Qualidade de Dados (MQD) do Open Finance Brasil, extra\xEDdo das p\xE1ginas Confluence de especifica\xE7\xE3o t\xE9cnica, arquitetura (incluindo proxy reverso e fluxos de envio de resultados, atualiza\xE7\xE3o de configura\xE7\xE3o, valida\xE7\xE3o e receptora), documenta\xE7\xE3o da API, instala\xE7\xE3o, endpoints validados, FAQ e troubleshooting. Cada item \xE9 uma se\xE7\xE3o (heading) de uma p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o. A spec OpenAPI do MQD est\xE1 inclu\xEDda como conte\xFAdo da se\xE7\xE3o da p\xE1gina Documenta\xE7\xE3o da API.",
|
|
970
975
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
971
976
|
interRequestDelayMs: 2e3,
|
|
972
977
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
973
978
|
pages: [
|
|
974
979
|
{ pageId: "362578617", title: "Especifica\xE7\xE3o T\xE9cnica" },
|
|
975
980
|
{ pageId: "362578657", title: "Arquitetura" },
|
|
981
|
+
{ pageId: "362578698", title: "MQD - Proxy reverso" },
|
|
982
|
+
{ pageId: "362578754", title: "MQD - Fluxo de Envio de Resultados" },
|
|
983
|
+
{ pageId: "362578786", title: "MQD - Fluxo de Atualiza\xE7\xE3o de Configura\xE7\xE3o" },
|
|
984
|
+
{ pageId: "362578818", title: "MQD - Fluxo de Valida\xE7\xE3o" },
|
|
985
|
+
{ pageId: "362578884", title: "MQD - Fluxo da Receptora" },
|
|
976
986
|
{ pageId: "362578918", title: "Documenta\xE7\xE3o da API" },
|
|
977
987
|
{ pageId: "362578967", title: "Manual de Instala\xE7\xE3o" },
|
|
978
988
|
{ pageId: "619413971", title: "Tabela de Endpoints Validados" },
|
|
@@ -1003,20 +1013,30 @@ var webhookDomain = createOpenApiDomain(webhookConfig);
|
|
|
1003
1013
|
var segurancaConfig = {
|
|
1004
1014
|
id: "seguranca",
|
|
1005
1015
|
title: "Seguran\xE7a",
|
|
1006
|
-
description: "Conhecimento regulat\xF3rio de Seguran\xE7a do Open Finance Brasil, extra\xEDdo das p\xE1ginas Confluence sob a \xE1rvore Seguran\xE7a: Vis\xE3o Geral, Introdu\xE7\xE3o,
|
|
1016
|
+
description: "Conhecimento regulat\xF3rio de Seguran\xE7a do Open Finance Brasil, extra\xEDdo das p\xE1ginas Confluence sob a \xE1rvore Seguran\xE7a: Vis\xE3o Geral, Introdu\xE7\xE3o, guias para transmissoras e receptoras/iniciadoras, Perfil de Seguran\xE7a, DCR-BR 2.1.0, FAPI-BR 2.2.1, refer\xEAncias de CIBA, criptografia de ID_TOKEN, Padr\xE3o de Certificados 2.1 e diretrizes de valida\xE7\xE3o, Assinaturas, Casos de Erro, Redirecionamento App-to-App, Gloss\xE1rio e Pol\xEDtica de Versionamento. Cada item \xE9 uma se\xE7\xE3o (heading) de uma p\xE1gina. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
1007
1017
|
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
1008
1018
|
interRequestDelayMs: 2e3,
|
|
1009
1019
|
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
1010
1020
|
pages: [
|
|
1011
1021
|
{ pageId: "240648227", title: "Vis\xE3o Geral" },
|
|
1012
1022
|
{ pageId: "240648385", title: "Introdu\xE7\xE3o" },
|
|
1013
|
-
{
|
|
1023
|
+
{
|
|
1024
|
+
pageId: "240648513",
|
|
1025
|
+
title: "[PT] Guia do Usu\xE1rio para Entidades Transmissoras de Dados (ASPSP)"
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
pageId: "240648607",
|
|
1029
|
+
title: "[PT] Guia do Usu\xE1rio para Institui\xE7\xF5es Receptores de Dados e Iniciadores de Pagamento (TTP/PISP)"
|
|
1030
|
+
},
|
|
1014
1031
|
{ pageId: "240648789", title: "Perfil de Seguran\xE7a" },
|
|
1015
|
-
{ pageId: "
|
|
1016
|
-
{
|
|
1032
|
+
{ pageId: "1334116369", title: "[PT] Open Finance Brasil Dynamic Client Registration - v2.1.0" },
|
|
1033
|
+
{
|
|
1034
|
+
pageId: "1957625902",
|
|
1035
|
+
title: "[PT] Open Finance Brasil Financial-grade API Security Profile - v2.2.1"
|
|
1036
|
+
},
|
|
1017
1037
|
{ pageId: "1799946241", title: "CIBA - Client Initiated Backchannel Authentication" },
|
|
1018
1038
|
{ pageId: "240649215", title: "Requisitos de criptografia ID_TOKEN" },
|
|
1019
|
-
{ pageId: "
|
|
1039
|
+
{ pageId: "245694518", title: "[PT] Padr\xE3o de Certificados Open Finance Brasil 2.1" },
|
|
1020
1040
|
{ pageId: "1799946375", title: "Diretrizes para valida\xE7\xE3o de certificados digitais" },
|
|
1021
1041
|
{ pageId: "240650189", title: "Assinaturas" },
|
|
1022
1042
|
{ pageId: "240650255", title: "Casos de Erro" },
|
|
@@ -1024,14 +1044,182 @@ var segurancaConfig = {
|
|
|
1024
1044
|
{ pageId: "240650381", title: "Gloss\xE1rio de Seguran\xE7a" },
|
|
1025
1045
|
{ pageId: "240650571", title: "Versionamento - Tipos" },
|
|
1026
1046
|
{ pageId: "240650601", title: "Versionamento - Ciclo de Vida" },
|
|
1027
|
-
{ pageId: "240650643", title: "Versionamento - Fluxo de especifica\xE7\xE3o" }
|
|
1028
|
-
{ pageId: "240650712", title: "Versionamento - Change log" }
|
|
1047
|
+
{ pageId: "240650643", title: "Versionamento - Fluxo de especifica\xE7\xE3o" }
|
|
1029
1048
|
]
|
|
1030
1049
|
};
|
|
1031
1050
|
|
|
1032
1051
|
// src/domains/seguranca/index.ts
|
|
1033
1052
|
var segurancaDomain = createConfluenceSectionsDomain(segurancaConfig);
|
|
1034
1053
|
|
|
1054
|
+
// src/domains/requisitos-nao-funcionais/config.ts
|
|
1055
|
+
var requisitosNaoFuncionaisConfig = {
|
|
1056
|
+
id: "requisitos-nao-funcionais",
|
|
1057
|
+
title: "Requisitos n\xE3o Funcionais \u2014 SLA, disponibilidade e limites (Manual de APIs)",
|
|
1058
|
+
description: "Requisitos n\xE3o funcionais que valem para todas as APIs do Open Finance Brasil, extra\xEDdos das p\xE1ginas Confluence do Manual de APIs: Desempenho (SLA do percentil 95 do tempo de resposta por faixa de frequ\xEAncia do endpoint), Disponibilidade (m\xEDnimos por 24h e por trimestre), Timeout, Limites de tr\xE1fego (TPM por origem e TPS globais), Limites operacionais (teto de consultas por m\xEAs, por endpoint e por recurso, e pagina\xE7\xE3o com pagination-key) e Indisponibilidade Programada. Os n\xFAmeros por endpoint (SLA, timeout, TPM, TPS e limite operacional de cada rota) est\xE3o em limites-por-endpoint, um registro por endpoint. Cada item aqui \xE9 uma se\xE7\xE3o (heading) da p\xE1gina \u2014 as p\xE1ginas Desempenho e Timeout n\xE3o t\xEAm headings e viram um \xFAnico item `intro` cada, ent\xE3o nelas filtre por page ou contains, n\xE3o por heading. search devolve um snippet do conte\xFAdo; use get_item para o texto completo da se\xE7\xE3o.",
|
|
1059
|
+
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
1060
|
+
interRequestDelayMs: 2e3,
|
|
1061
|
+
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
1062
|
+
// Fora da lista: a página-mãe "Requisitos não Funcionais" (17956981), que só
|
|
1063
|
+
// nomeia as quatro faixas de frequência sem defini-las (página índice), e a
|
|
1064
|
+
// página "Referência" (17957025), cujas tabelas de limites por endpoint têm
|
|
1065
|
+
// parser próprio no domínio limites-por-endpoint.
|
|
1066
|
+
pages: [
|
|
1067
|
+
{ pageId: "17891396", title: "Desempenho" },
|
|
1068
|
+
{ pageId: "17891406", title: "Disponibilidade" },
|
|
1069
|
+
{ pageId: "17891413", title: "Timeout" },
|
|
1070
|
+
{ pageId: "17989722", title: "Limites de tr\xE1fego" },
|
|
1071
|
+
{ pageId: "17924220", title: "Limites operacionais" },
|
|
1072
|
+
{ pageId: "1808269313", title: "Indisponibilidade Programada" }
|
|
1073
|
+
]
|
|
1074
|
+
};
|
|
1075
|
+
|
|
1076
|
+
// src/domains/requisitos-nao-funcionais/index.ts
|
|
1077
|
+
var requisitosNaoFuncionaisDomain = createConfluenceSectionsDomain(
|
|
1078
|
+
requisitosNaoFuncionaisConfig
|
|
1079
|
+
);
|
|
1080
|
+
|
|
1081
|
+
// src/domains/limites-por-endpoint/config.ts
|
|
1082
|
+
var limitesPorEndpointConfig = {
|
|
1083
|
+
confluenceBaseUrl: "https://openfinancebrasil.atlassian.net",
|
|
1084
|
+
retryDelaysMs: [2e3, 4e3, 8e3, 16e3],
|
|
1085
|
+
// Página única: a tabela "Referência" do Manual de APIs, com uma tabela por
|
|
1086
|
+
// família de API e uma linha por endpoint.
|
|
1087
|
+
pageId: "17957025",
|
|
1088
|
+
pageTitle: "Refer\xEAncia"
|
|
1089
|
+
};
|
|
1090
|
+
|
|
1091
|
+
// src/domains/limites-por-endpoint/parser.ts
|
|
1092
|
+
import * as cheerio3 from "cheerio";
|
|
1093
|
+
var HTTP_METHODS2 = /* @__PURE__ */ new Set(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]);
|
|
1094
|
+
function cellText3($, el) {
|
|
1095
|
+
const clone = $(el).clone();
|
|
1096
|
+
clone.find("br").replaceWith("\n");
|
|
1097
|
+
return clone.text().replace(/[]/g, "").replace(/ /g, " ").replace(/\s+/g, " ").trim();
|
|
1098
|
+
}
|
|
1099
|
+
function headerKey(raw) {
|
|
1100
|
+
const h = raw.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase().trim();
|
|
1101
|
+
if (h.startsWith("endpoint")) return "path";
|
|
1102
|
+
if (h.startsWith("frequencia")) return "frequencia";
|
|
1103
|
+
if (h.startsWith("sla")) return "slaMs";
|
|
1104
|
+
if (h.startsWith("timeout")) return "timeoutS";
|
|
1105
|
+
if (h.startsWith("limite operacional")) return "limiteOperacional";
|
|
1106
|
+
if (h === "tpm") return "tpm";
|
|
1107
|
+
if (h === "tps") return "tps";
|
|
1108
|
+
return null;
|
|
1109
|
+
}
|
|
1110
|
+
function splitEndpoint(cell) {
|
|
1111
|
+
const [first, ...rest] = cell.split(" ");
|
|
1112
|
+
if (HTTP_METHODS2.has(first.toUpperCase()) && rest.length > 0) {
|
|
1113
|
+
return { metodo: first.toUpperCase(), path: rest.join(" ") };
|
|
1114
|
+
}
|
|
1115
|
+
return { metodo: null, path: cell };
|
|
1116
|
+
}
|
|
1117
|
+
function parseEndpointLimits(html) {
|
|
1118
|
+
const $ = cheerio3.load(html);
|
|
1119
|
+
$("style, script").remove();
|
|
1120
|
+
const limits = [];
|
|
1121
|
+
for (const table of $("table").toArray()) {
|
|
1122
|
+
const rows = $(table).find("tr").toArray();
|
|
1123
|
+
const cellsOf = (tr) => $(tr).find("th, td").toArray().map((c) => cellText3($, c));
|
|
1124
|
+
const headerIdx = rows.findIndex(
|
|
1125
|
+
(tr) => cellsOf(tr).some((c) => headerKey(c) === "path")
|
|
1126
|
+
);
|
|
1127
|
+
if (headerIdx === -1) continue;
|
|
1128
|
+
const api = rows.slice(0, headerIdx).map((tr) => cellsOf(tr).filter(Boolean).join(" ")).filter(Boolean).join(" ").trim();
|
|
1129
|
+
const keys = cellsOf(rows[headerIdx]).map(headerKey);
|
|
1130
|
+
for (const tr of rows.slice(headerIdx + 1)) {
|
|
1131
|
+
const cells = cellsOf(tr);
|
|
1132
|
+
const limit = {
|
|
1133
|
+
api,
|
|
1134
|
+
metodo: null,
|
|
1135
|
+
path: "",
|
|
1136
|
+
frequencia: null,
|
|
1137
|
+
slaMs: null,
|
|
1138
|
+
timeoutS: null,
|
|
1139
|
+
tpm: null,
|
|
1140
|
+
tps: null,
|
|
1141
|
+
limiteOperacional: null
|
|
1142
|
+
};
|
|
1143
|
+
cells.forEach((text2, i) => {
|
|
1144
|
+
const key = keys[i];
|
|
1145
|
+
if (!key || !text2) return;
|
|
1146
|
+
if (key === "path") {
|
|
1147
|
+
const { metodo, path } = splitEndpoint(text2);
|
|
1148
|
+
limit.metodo = metodo;
|
|
1149
|
+
limit.path = path;
|
|
1150
|
+
} else {
|
|
1151
|
+
limit[key] = text2;
|
|
1152
|
+
}
|
|
1153
|
+
});
|
|
1154
|
+
if (limit.path) limits.push(limit);
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
return limits;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
// src/domains/limites-por-endpoint/index.ts
|
|
1161
|
+
function slugify3(text2) {
|
|
1162
|
+
return text2.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
1163
|
+
}
|
|
1164
|
+
function buildItems3(page, limits) {
|
|
1165
|
+
const items = [];
|
|
1166
|
+
const seen = /* @__PURE__ */ new Map();
|
|
1167
|
+
for (const limit of limits) {
|
|
1168
|
+
const base = `${page.pageId}:${slugify3(`${limit.api} ${limit.metodo ?? ""} ${limit.path}`)}`;
|
|
1169
|
+
const count = (seen.get(base) ?? 0) + 1;
|
|
1170
|
+
seen.set(base, count);
|
|
1171
|
+
items.push({ ...limit, id: count > 1 ? `${base}-${count}` : base, page });
|
|
1172
|
+
}
|
|
1173
|
+
return items;
|
|
1174
|
+
}
|
|
1175
|
+
var limitesPorEndpointDomain = {
|
|
1176
|
+
id: "limites-por-endpoint",
|
|
1177
|
+
title: "Limites por endpoint \u2014 SLA, timeout, TPM, TPS e limite operacional",
|
|
1178
|
+
description: 'Tabela de refer\xEAncia do Manual de APIs do Open Finance Brasil com os limites de cada endpoint de todas as fam\xEDlias de API (Dados Abertos, Dados Cadastrais e Transacionais, Servi\xE7os de Inicia\xE7\xE3o, Portabilidade de Cr\xE9dito, Webhook, Admin e Discovery). Um item por endpoint, com a faixa de frequ\xEAncia (alta, m\xE9dia-alta, m\xE9dia ou baixa), o SLA em ms do percentil 95 do tempo de resposta, o timeout em segundos, os limites de tr\xE1fego TPM e TPS e o limite operacional de consultas por m\xEAs. Responde perguntas do tipo "qual o SLA e o timeout do GET /resources". O texto normativo por tr\xE1s desses n\xFAmeros (como o SLA \xE9 medido e apurado, disponibilidade m\xEDnima, regras de limites de tr\xE1fego e operacionais) est\xE1 em requisitos-nao-funcionais. search devolve o registro completo \u2014 em TPM algumas linhas trazem a tabela de faixas QCA\u2192TPM como texto.',
|
|
1179
|
+
ttlHours: 72,
|
|
1180
|
+
filters: [
|
|
1181
|
+
{ name: "endpoint", description: "Substring na rota (ex.: /resources)" },
|
|
1182
|
+
{ name: "api", description: "Substring no nome da fam\xEDlia de API (ex.: Recursos, [SV] API Pagamentos)" },
|
|
1183
|
+
{ name: "method", description: "Verbo HTTP exato (ex.: GET)" },
|
|
1184
|
+
{ name: "frequencia", description: "Substring na faixa de frequ\xEAncia (ex.: Alta, Baixa)" }
|
|
1185
|
+
],
|
|
1186
|
+
async extract(ctx) {
|
|
1187
|
+
ctx?.onProgress?.(0, 1, `Extraindo "${limitesPorEndpointConfig.pageTitle}"`);
|
|
1188
|
+
const { html, url } = await fetchConfluencePage(
|
|
1189
|
+
limitesPorEndpointConfig.confluenceBaseUrl,
|
|
1190
|
+
limitesPorEndpointConfig.pageId,
|
|
1191
|
+
limitesPorEndpointConfig.retryDelaysMs,
|
|
1192
|
+
ctx?.signal
|
|
1193
|
+
);
|
|
1194
|
+
ctx?.onProgress?.(1, 1);
|
|
1195
|
+
const page = {
|
|
1196
|
+
pageId: limitesPorEndpointConfig.pageId,
|
|
1197
|
+
title: limitesPorEndpointConfig.pageTitle,
|
|
1198
|
+
url
|
|
1199
|
+
};
|
|
1200
|
+
return { items: buildItems3(page, parseEndpointLimits(html)) };
|
|
1201
|
+
},
|
|
1202
|
+
search(data, query, filters = {}) {
|
|
1203
|
+
const endpoint = filters.endpoint ? normalize(filters.endpoint) : void 0;
|
|
1204
|
+
const api = filters.api ? normalize(filters.api) : void 0;
|
|
1205
|
+
const metodo = filters.method?.trim().toUpperCase();
|
|
1206
|
+
const frequencia = filters.frequencia ? normalize(filters.frequencia) : void 0;
|
|
1207
|
+
return data.items.filter((item) => {
|
|
1208
|
+
if (endpoint && !normalize(item.path).includes(endpoint)) return false;
|
|
1209
|
+
if (api && !normalize(item.api).includes(api)) return false;
|
|
1210
|
+
if (metodo && item.metodo !== metodo) return false;
|
|
1211
|
+
if (frequencia && !normalize(item.frequencia ?? "").includes(frequencia)) return false;
|
|
1212
|
+
if (query?.trim() && !matchesQuery(`${item.api} ${item.metodo ?? ""} ${item.path}`, query)) {
|
|
1213
|
+
return false;
|
|
1214
|
+
}
|
|
1215
|
+
return true;
|
|
1216
|
+
});
|
|
1217
|
+
},
|
|
1218
|
+
getItem(data, id) {
|
|
1219
|
+
return data.items.find((i) => i.id === id) ?? null;
|
|
1220
|
+
}
|
|
1221
|
+
};
|
|
1222
|
+
|
|
1035
1223
|
// src/domains/participantes/config.ts
|
|
1036
1224
|
var participantesConfig = {
|
|
1037
1225
|
id: "participantes",
|
|
@@ -1186,7 +1374,6 @@ var portalDomain = {
|
|
|
1186
1374
|
// src/core/registry.ts
|
|
1187
1375
|
var domains = [
|
|
1188
1376
|
pcmDomain,
|
|
1189
|
-
paymentsDomain,
|
|
1190
1377
|
paymentsV5Domain,
|
|
1191
1378
|
paymentsV5BusinessRulesDomain,
|
|
1192
1379
|
enrollmentsV2Domain,
|
|
@@ -1206,6 +1393,8 @@ var domains = [
|
|
|
1206
1393
|
mqdDomain,
|
|
1207
1394
|
webhookDomain,
|
|
1208
1395
|
segurancaDomain,
|
|
1396
|
+
requisitosNaoFuncionaisDomain,
|
|
1397
|
+
limitesPorEndpointDomain,
|
|
1209
1398
|
participantesDomain,
|
|
1210
1399
|
portalDomain
|
|
1211
1400
|
];
|