Open Metrics

Enriqueça o seu monitoramento com as métricas da plataforma.

Introdução

Utilize o nosso add-on de métricas para acompanhar os dados de telemetria da plataforma e realizar uma análise mais refinada da performance e comportamento da sua solução, além de facilitar o acompanhamento e cumprimento da Instrução Normativa 441 que, dentre outros pontos, trás alguns requisitos não funcionais de disponibilidade, desempenho e taxa de conversão da jornada de consentimentos.

Continue a leitura para entender como acompanhar essas métricas com a ajuda do nosso módulo.

👍

Cumpra os requisitos do Manual de Monitoramento do Open Finance!

Nosso módulo auxilia você a acompanhar as principais métricas trazidas pelo Manual de Monitoramento do Open Finance, entre elas:

  1. Disponibilidade;
  2. Desempenho;
  3. Taxa de conversão da jornada de consentimentos.

Instalação e configuração

Para monitoramento das métricas, utilizamos o OpenTelemetry, framework de código aberto focado em criar e gerenciar métricas e logs a fim de facilitar a análise de performance e comportamento da aplicação.

Para utilizá-lo, é necessário instalá-lo no seu contêiner:

helm repo add opentelemtry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update
helm pull opentelemetry/opentelemetry-collector --version 0.71.1 --untar -d /tmp/

Após baixar e descompactar, orientamos utilizar o arquivo otel-collector-custom.yaml como "value" para a instalação e, antes de executá-la, adicionar informações da sua instituição (como o domínio no qual o endereço do OpenTelemetry fará parte, por exemplo).

Por fim, é necessário configurar o OpenTelemetry no openbanking-management do Brick Bank, especificamente no setup smartfy.yml. Para isso, adicione os dados conforme abaixo:

core:
    metrics:
        adapter: opentelemetry
        url: https://collector.bricks.dev.fsapps.io

Variáveis

Com o módulo instalado, será necessário configurar as suas variáveis de interesse. Para isso, existem diversos tipos diferentes que podem ser utilizados: contadores síncronos e assíncronos, histogramas, medidores síncronos e assíncronos, etc.

Acesse a documentação oficial para saber mais.

internal-requests.hits

Tipo: contador.

Contabiliza a quantidade de requisições considerando os seguintes atributos:

  • endpoint (endpoint);
  • HTTP status code (http.status_code);
  • ambiente (dev, hml e prod) (env); e
  • organização (organization_id ou organization_name).

Utilize tais informações para configurar seus dashboards ou, ainda, para criar novas métricas. Por exemplo:

  • taxa de sucesso das requisições;
  • taxa de erro das requisições.

consent-reception.events

Tipo: contador.

Contabiliza a quantidade de eventos ocorridos na jornada de consentimento considerando os seguintes atributos:

  • evento:

    NomeDescrição
    AWAITING_AUTHORISATIONO consentimento foi gerado.
    REDIRECTEDO redirecionamento é realizado para a transmissora de dados ou detentora de contas.
    AUTHORISEDO consentimento é autorizado pelo usuário na transmissora de dados ou detentora de contas.
    REJECTEDO consentimento é rejeitado pelo usuário na transmissora de dados ou detentora de contas.
    CODE_GENERATEDO redirecionamento é realizado para a receptora de dados ou iniciadora de pagamentos.
    TOKEN_GENERATEDO token de callback é gerado pela receptora de dados ou iniciadora de pagamentos.
    PAYMENT_REQUEST_RECEIVEDA geração de pagamento foi solicitada para a detentora de contas.
    CONSUMEDO consentimento foi consumido devido a geração do pagamento.
    PAYMENT_ID_GENERATEDO ID do pagamento foi gerado pela detentora de contas.
  • tipo (payment, automatic payments ou data); e

  • marca.

Utilize tais informações para configurar seus dashboards ou, ainda, para criar novas métricas. Por exemplo:

  • Taxa de consentimentos rejeitados;
  • Taxa de consentimentos aprovados.

internal-requests.duration

Tipo: histograma.

Contabiliza o tempo de resposta considerando os seguintes atributos:

  • endpoint (endpoint);
  • HTTP status code (http.status_code);
  • ambiente (dev, hml e prod) (env); e
  • organização (organization_id ou organization_name).

Utilize tais informações para configurar seus dashboards ou, ainda, para criar novas métricas. Por exemplo:

  • Desempenho de determinado endpoint;

⚠️

Não encontrou sua variável?

Entre em contato com a gente! Teremos o maior prazer em avaliar o seu caso. ✨

Status do consentimento

Pagamentos:

  • AWAITING_AUTHORISATION: consentimento aguardando autorização do usuário;
  • AUTHORISED: consentimento autorizado pelo usuário;
  • PARTIALLY_ACCEPTED: em cenários de múltiplas alçadas, onde está pendente para mais um usuário da conta aprovar o consentimento;
  • REJECTED: aprovação do consentimento rejeitado pelo usuário;
  • CONSUMED: consentimento consumido pelo iniciador de pagamentos;

Dados:

  • AWAITING_AUTHORISATION: consentimento aguardando autorização do usuário;
  • AUTHORISED: consentimento autorizado pelo usuário;
  • REJECTED: aprovação do consentimento rejeitado pelo usuário ou consentimento expirado.

Métricas

Além das variáveis disponíveis, é possível configurar métricas de acordo com a sua necessidade.

Disponibilidade

Total de chamadas

Calcula o total de chamadas internas realizadas, agregando-as por ambiente, organização e endpoint, fornecendo uma visão geral da atividade.

Utilizar variável: COUNT(internal_requests.hits)

where: $env = AND $organization_name = AND $endpoint = *

Default: 0
Formatação:

*configurar como "verde": se resultado >= 0

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:internal_requests.hits{$env,$organization_name,$endpoint}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">=",
            "value": 0,
            "palette": "black_on_light_green"
        }
    ],
    "formulas": [
        {
            "formula": "default_zero(query1)"
        }
    ]
}

Quantidade de chamadas por status

Calcula o total de chamadas bem-sucedidas (status 2xx e 3xx), permitindo avaliar a eficácia das respostas da solução.

Utilizar variável: COUNT(internal_requests.hits)

where: $env = AND $organization_name = AND $endpoint = *   

Default: 0
Formatação:

*configurar como "verde": se resultado >= 0

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:internal_requests.hits{(http.status_code:2* OR http.status_code:3*) AND $env AND $organization_name AND $endpoint}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">=",
            "value": 0,
            "palette": "white_on_green"
        }
    ],
    "formulas": [
        {
            "formula": "default_zero(query1)"
        }
    ]
}

Porcentagem de status 2xx

Calcula a porcentagem de chamadas bem-sucedidas em relação ao total, oferecendo uma métrica de sucesso das requisições.

Lógica do Cálculo: Cálculo 1 * 100 / Cálculo 2

Utilizar variável: COUNT(internal_requests.hits)
where (http.statuscode:2 OR http.statuscode:3) AND $env = AND $organization_name = AND $endpoint = *

Utilizar variável: COUNT(internal_requests.hits)
where $env = AND $organization_name = AND $endpoint = *

Default: n/a

*configurar como "verde": se resultado >= 0

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:internal_requests.hits{(http.status_code:2* OR http.status_code:3*) AND $env AND $organization_name AND $endpoint}.as_count()",
            "aggregator": "sum"
        },
        {
            "data_source": "metrics",
            "name": "query2",
            "query": "sum:internal_requests.hits{$env,$organization_name,$endpoint}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">=",
            "value": 0,
            "palette": "white_on_green"
        }
    ],
    "formulas": [
        {
            "formula": "query1 * 100 / query2"
        }
    ]
}

Cálculo por família de cada endpoint

Foca em calcular chamadas específicas por categoria de endpoint (como consents ou resources), destacando a atividade e o sucesso por área de funcionalidade baseada no status code da requisição.

Exemplo: família consents

Lógica do Cálculo: MIN(1, DEFAULT_ZERO(Cálculo 1)) - DEFAULT_ZERO(Cálculo 2) / MIN(1, DEFAULT_ZERO(Cálculo 1))

Utilizar variável: COUNT(internal_requests.hits)
where $env = AND $organization_name = AND $endpoint = post_/open-banking/consents*

Utilizar variável: COUNT(internal_requests.hits)
where $env = AND $organization_name = AND $endpoint = post/open-banking/consents and http.statuscode = 5

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query2",
            "query": "sum:internal_requests.hits{$env,endpoint:post_/open-banking/consents*}.as_count()",
            "aggregator": "sum"
        },
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:internal_requests.hits{$env,endpoint:post_/open-banking/consents*,http.status_code:5*}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">",
            "value": 95,
            "palette": "white_on_green"
        },
        {
            "comparator": "<=",
            "value": 95,
            "palette": "white_on_red"
        }
    ],
    "formulas": [
        {
            "formula": "(clamp_min(default_zero(query2), 1) - default_zero(query1)) * 100 / clamp_min(default_zero(query2), 1)"
        }
    ]
}

Exemplo: família resources

Lógica do Cálculo: MIN(1, DEFAULT_ZERO(Calculo 1)) - DEFAULT_ZERO(Calculo 2) / MIN(1, DEFAULT_ZERO(Calculo 1))

Utilizar variável: COUNT(internal_requests.hits)
where $env = AND $organization_name = AND $endpoint = post_/open-banking/resources*

Utilizar variável: COUNT(internal_requests.hits)
where $env = AND $organization_name = AND $endpoint = post/open-banking/resources and http.statuscode = 5

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query2",
            "query": "sum:internal_requests.hits{$env,endpoint:get_/open-banking/resources*}.as_count()",
            "aggregator": "sum"
        },
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:internal_requests.hits{$env,endpoint:get_/open-banking/resources*,http.status_code:5*}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">",
            "value": 95,
            "palette": "white_on_green"
        },
        {
            "comparator": "<=",
            "value": 95,
            "palette": "white_on_red"
        }
    ],
    "formulas": [
        {
            "formula": "(clamp_min(default_zero(query2), 1) - default_zero(query1)) * 100 / clamp_min(default_zero(query2), 1)"
        }
    ]
}

Desempenho

Latência

Calcula as métricas de latência (p50, p75, p90, p95, p99, máximo) para avaliar o desempenho e eficiência de acordo com o processamento das requisições, categorizadas por ambiente, endpoint e organização.

Regra para P50
Utilizar variável: P50(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

Regra para P75
Utilizar variável: P75(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

Regra para P90
Utilizar variável: P90(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

Regra para P95
Utilizar variável: P95(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

Regra para P99
Utilizar variável: P99(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

Regra para disponibilidade máxima
Utilizar variável: MAX(internal_requests.duration)
where $env = AND $organization_name = AND $endpoint = *

{
    "formulas": [
        {
            "alias": "p50",
            "formula": "query1"
        },
        {
            "alias": "p75",
            "formula": "query2"
        },
        {
            "alias": "p90",
            "formula": "query3"
        },
        {
            "alias": "p95",
            "formula": "query4"
        },
        {
            "alias": "p99",
            "formula": "query5"
        },
        {
            "alias": "max",
            "formula": "query6"
        }
    ],
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "p50:internal_requests.duration{$env,$endpoint,$organization_name}"
        },
        {
            "data_source": "metrics",
            "name": "query2",
            "query": "p75:internal_requests.duration{$env,$endpoint,$organization_name}"
        },
        {
            "data_source": "metrics",
            "name": "query3",
            "query": "p90:internal_requests.duration{$env,$endpoint,$organization_name}"
        },
        {
            "data_source": "metrics",
            "name": "query4",
            "query": "p95:internal_requests.duration{$env,$endpoint,$organization_name}"
        },
        {
            "data_source": "metrics",
            "name": "query5",
            "query": "p99:internal_requests.duration{$env,$endpoint,$organization_name}"
        },
        {
            "data_source": "metrics",
            "name": "query6",
            "query": "max:internal_requests.duration{$env,$endpoint,$organization_name}"
        }
    ],
    "response_format": "timeseries",
    "style": {
        "palette": "dog_classic",
        "line_type": "solid",
        "line_width": "normal"
    },
    "display_type": "line"
}

Taxa de Conversão

Quantidade de consentimentos criados

Calcula o número de consentimentos recebidos com o status AWAITING_AUTHORISATION.

Utilizar variável: COUNT(consent_reception.events)

where: $env = AND $kind = AND $kind = awaiting_authorisation

Default: 0

*configurar como "verde": se resultado >= 0

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:consent_reception.events{$env, $kind, status:awaiting_authorisation}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">",
            "value": 0,
            "palette": "custom_bg",
            "custom_bg_color": "#5cbbc1"
        }
    ],
    "formulas": [
        {
            "formula": "query1"
        }
    ]
}

Quantidade de consentimentos autorizados

Calcula a quantidade de consentimentos que foram autorizados (status AUTHORISED).

Utilizar variável: COUNT(consent_reception.events)

where: $env = AND $kind = AND $kind = authorised

Default: 0
Formatação:

*configurar como "verde": se resultado >= 0

{
    "response_format": "scalar",
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:consent_reception.events{$env,$kind,status:authorised}.as_count()",
            "aggregator": "sum"
        }
    ],
    "conditional_formats": [
        {
            "comparator": ">=",
            "value": 0,
            "palette": "white_on_green"
        }
    ],
    "formulas": [
        {
            "formula": "query1"
        }
    ]
}

Taxa de conversão 24h

Calcula a porcentagem de consentimentos convertidos (AWATING_AUTHORISATION x CODE_GENERATED) nas últimas 24hrs.

Lógica do Cálculo: DEFAULT_ZERO(DEFAULT_ZERO(Calculo 1) * 100 / default_zero(Calculo 2))

Utilizar variável: COUNT(consent_reception.events)
where: $env = AND $kind = AND $kind = code_generated

Utilizar variável: COUNT(consent_reception.events)
where: $env = AND $kind = AND $kind = awaiting_authorisation

Default: 0

{
    "formulas": [
        {
            "alias": "porcentagem de sucesso",
            "number_format": {
                "unit": {
                    "type": "canonical_unit",
                    "unit_name": "percent"
                }
            },
            "formula": "default_zero(default_zero(query2) * 100 / default_zero(query1))"
        }
    ],
    "queries": [
        {
            "data_source": "metrics",
            "name": "query2",
            "query": "sum:consent_reception.events{$env,status:code_generated ,$kind}.as_count().rollup(3600)"
        },
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:consent_reception.events{$env,status:awaiting_authorisation,$kind}.as_count().rollup(3600)"
        }
    ],
    "response_format": "timeseries",
    "style": {
        "palette": "green",
        "line_type": "solid",
        "line_width": "normal"
    },
    "display_type": "line"
}

Funil de consentimentos

Calcula a distribuição de consentimentos por status do consentimento. Com esta métrica, é possível rastear em qual momento do funil de consentimento o status parou.

Utilizar variável: COUNT(consent_reception.events) groupped by status
where: $env = AND $kind =

Utilizar variável: COUNT(consent_reception.events)
where: $env = AND $kind = AND $kind = awaiting_authorisation

Default: 0

{
    "formulas": [
        {
            "formula": "query1"
        }
    ],
    "queries": [
        {
            "data_source": "metrics",
            "name": "query1",
            "query": "sum:consent_reception.events{$kind, $env} by {status}.as_count()",
            "aggregator": "sum"
        }
    ],
    "response_format": "scalar",
    "style": {
        "palette": "semantic"
    }
}

Endpoints

Com os contadores e histograma configurados em seu dashboard, a sua instituição pode monitorar os seguintes endpoints:
*de acordo com a sua fase no ecossistema e endpoints utilizados.

POST /open-banking/consents/v{version}/consents
POST /open-banking/enrollments/v1/enrollments/{enrollmentId}/fido-registration-options
POST /open-banking/enrollments/v1/enrollments/{enrollmentId}/fido-registration
POST /open-banking/enrollments/v1/enrollments/{enrollmentId}/fido-sign-options
POST /open-banking/enrollments/v1/consents/{consentId}/authorize
POST /open-banking/enrollments/v1/enrollments
DELETE /open-banking/consents/v{version}/consents/{consentId}
PATCH /open-banking/enrollments/v1/enrollments/{enrollmentId}
GET /open-banking/enrollments/v1/enrollments/{enrollmentId}
GET /open-banking/consents/v{version}/consents/{consentId}
GET /open-banking/resources/v{version}/resources
GET /open-banking/customers/v{version}/personal/identifications
GET /open-banking/customers/v{version}/personal/qualifications
GET /open-banking/customers/v{version}/personal/financial-relations
GET /open-banking/customers/v{version}/business/identifications
GET /open-banking/customers/v{version}/business/qualifications
GET /open-banking/customers/v{version}/business/financial-relations
GET /open-banking/credit-cards-accounts/v{version}/accounts
GET /open-banking/credit-cards-accounts/v{version}/accounts/{creditCardAccountId}
GET /open-banking/credit-cards-accounts/v{version}/accounts/{creditCardAccountId}/limits
GET /open-banking/credit-cards-accounts/v{version}/accounts/{creditCardAccountId}/transactions
GET /open-banking/credit-cards-accounts/v2/accounts/{creditCardAccountId}/transactions-current
GET /open-banking/credit-cards-accounts/v{version}/accounts/{creditCardAccountId}/bills
GET /open-banking/credit-cards-accounts/v{version}/accounts/{creditCardAccountId}/bills/{billId}/transactions
GET /open-banking/accounts/v{version}/accounts
GET /open-banking/accounts/v{version}/accounts/{accountId}
GET /open-banking/accounts/v{version}/accounts/{accountId}/balances
GET /open-banking/accounts/v{version}/accounts/{accountId}/transactions
GET /open-banking/accounts/v2/accounts/{accountId}/transactions-current
GET /open-banking/accounts/v{version}/accounts/{accountId}/overdraft-limits
GET /open-banking/loans/v{version}/contracts
GET /open-banking/loans/v{version}/contracts/{contractId}
GET /open-banking/loans/v{version}/contracts/{contractId}/warranties
GET /open-banking/loans/v{version}/contracts/{contractId}/payments
GET /open-banking/loans/v{version}/contracts/{contractId}/scheduled-instalments
GET /open-banking/financings/v{version}/contracts
GET /open-banking/financings/v{version}/contracts/{contractId}
GET /open-banking/financings/v{version}/contracts/{contractId}/warranties
GET /open-banking/financings/v{version}/contracts/{contractId}/payments
GET /open-banking/financings/v{version}/contracts/{contractId}/scheduled-instalments
GET /open-banking/unarranged-accounts-overdraft/v{version}/contracts
GET /open-banking/unarranged-accounts-overdraft/v{version}/contracts/{contractId}
GET /open-banking/unarranged-accounts-overdraft/v{version}/contracts/{contractId}/warranties
GET /open-banking/unarranged-accounts-overdraft/v{version}/contracts/{contractId}/payments
GET /open-banking/unarranged-accounts-overdraft/v{version}/contracts/{contractId}/scheduled-instalments
GET /open-banking/invoice-financings/v{version}/contracts
GET /open-banking/invoice-financings/v{version}/contracts/{contractId}
GET /open-banking/invoice-financings/v{version}/contracts/{contractId}/warranties
GET /open-banking/invoice-financings/v{version}/contracts/{contractId}/payments
GET /open-banking/invoice-financings/v{version}/contracts/{contractId}/scheduled-instalments
GET /open-banking/exchanges/v{version}/operations
GET /open-banking/exchanges/v{version}/operations/{operationId}
GET /open-banking/exchanges/v{version}/operations/{operationId}/events
POST /open-banking/payments/v{version}/consents
GET /open-banking/payments/v{version}/consents/{consentId}
POST /open-banking/payments/v{version}/pix/payments
GET /open-banking/payments/v{version}/pix/payments/{paymentId}
PATCH /open-banking/payments/v{version}/pix/payments/{paymentId}
PATCH /open-banking/payments/v{version}/pix/payments/consents/{consentId}
POST /open-banking/automatic-payments/v{version}/pix/recurring-payments
GET /open-banking/automatic-payments/v{version}/pix/recurring-payments
GET /open-banking/automatic-payments/v{version}/pix/recurring-payments/{recurringPaymentId}
PATCH /open-banking/automatic-payments/v{version}/pix/recurring-payments/{recurringPaymentId}
POST /open-banking/webhook/v{version}/payments/{versionApi}/consents/{paymentId}
POST /open-banking/webhook/v{version}/payments/{versionApi}/pix/payments/{paymentId}
POST /open-banking/webhook/v{version}/enrollments/{versionApi}/enrollments/{enrollmentId}
GET /open-banking/channels/v{version}/branches
GET /open-banking/channels/v{version}/electronic-channels
GET /open-banking/channels/v{version}/phone-channels
GET /open-banking/channels/v{version}/banking-agents
GET /open-banking/channels/v{version}/shared-automated-teller-machines
GET /open-banking/products-services/v{version}/personal-accounts
GET /open-banking/products-services/v{version}/business-accounts
GET /open-banking/products-services/v{version}/personal-loans
GET /open-banking/products-services/v{version}/business-loans
GET /open-banking/products-services/v{version}/personal-financings
GET /open-banking/products-services/v{version}/business-financings
GET /open-banking/products-services/v{version}/personal-invoice-financings
GET /open-banking/products-services/v{version}/business-invoice-financings
GET /open-banking/products-services/v{version}/personal-credit-cards
GET /open-banking/products-services/v{version}/business-credit-cards
GET /open-banking/products-services/v{version}/personal-unarranged-account-overdraft
GET /open-banking/products-services/v{version}/business-unarranged-account-overdraft
GET /open-banking/bank-fixed-incomes/v1/investments
GET /open-banking/bank-fixed-incomes/v1/investments/{investmentId}
GET /open-banking/bank-fixed-incomes/v1/investments/{investmentId}/balances
GET /open-banking/bank-fixed-incomes/v1/investments/{investmentId}/transactions
GET /open-banking/bank-fixed-incomes/v1/investments/{investmentId}/transactions-current
GET /open-banking/credit-fixed-incomes/v1/investments
GET /open-banking/credit-fixed-incomes/v1/investments/{investmentId}
GET /open-banking/credit-fixed-incomes/v1/investments/{investmentId}/balances
GET /open-banking/credit-fixed-incomes/v1/investments/{investmentId}/transactions
GET /open-banking/credit-fixed-incomes/v1/investments/{investmentId}/transactions-current
GET /open-banking/variable-incomes/v1/investments
GET /open-banking/variable-incomes/v1/investments/{investmentId}
GET /open-banking/variable-incomes/v1/investments/{investmentId}/balances
GET /open-banking/variable-incomes/v1/investments/{investmentId}/transactions
GET /open-banking/variable-incomes/v1/investments/{investmentId}/transactions-current
GET /open-banking/variable-incomes/v1/broker-notes/{brokerNoteId}
GET /open-banking/treasure-titles/v1/investments
GET /open-banking/treasure-titles/v1/investments/{investmentId}
GET /open-banking/treasure-titles/v1/investments/{investmentId}/balances
GET /open-banking/treasure-titles/v1/investments/{investmentId}/transactions
GET /open-banking/treasure-titles/v1/investments/{investmentId}/transactions-current
GET /open-banking/funds/v1/investments
GET /open-banking/funds/v1/investments/{investmentId}
GET /open-banking/funds/v1/investments/{investmentId}/balances
GET /open-banking/funds/v1/investments/{investmentId}/transactions
GET /open-banking/funds/v1/investments/{investmentId}/transactions-current

📘

Procurando por algo específico?

Utilize nossos atalhos de teclado! Pressione Cmd + K (macOS) ou Ctrl + K (Windows) e digite o que você está precisando!