API Resources - Recursos Consentidos
Visão Geral
A API Resources permite consultar a lista de recursos financeiros que o cliente compartilhou com a instituição receptora por meio de um consentimento ativo no Open Finance Brasil. Ela retorna o status de cada recurso, considerando tanto o consentimento vinculado quanto a disponibilidade real do recurso na instituição transmissora.
Esta API é o ponto de entrada para descobrir quais produtos do cliente estão disponíveis para consulta, como contas, cartões, investimentos, empréstimos, entre outros, antes de chamar as APIs específicas de cada produto.
Casos de uso
- Descobrir quais contas bancárias do usuário foram compartilhadas no consentimento
- Verificar se um recurso específico está disponível antes de consultá-lo
- Identificar recursos pendentes de autorização em fluxos de alçada dupla
Pré-requisitos
| Requisito | Detalhe |
|---|---|
| Permission obrigatória | RESOURCES_READ - deve ser solicitada no momento da criação do consentimento |
| Status do consentimento | A API só está disponível para consentimentos com status AUTHORISED |
| Escopo OAuth | resources |
| Autenticação | OpenID Connect + OAuth 2.0 Authorization Code Flow |
Endpoint
GET /baas/v1/open/dat/resources
GET /baas/v1/open/dat/resourcesObtém a lista de recursos mantidos pelo cliente na instituição transmissora para os quais ele forneceu consentimento.
Query Parameters
| Parâmetro | Tipo | Obrigatório | Padrão | Min | Max | Descrição |
|---|---|---|---|---|---|---|
page | integer (int32) | ❌ | 1 | 1 | 2147483647 | Número da página requisitada. Primeira página = 1 |
page-size | integer (int32) | ❌ | 25 | 25 | 1000 | Quantidade de registros por página. A transmissora deve considerar mínimo de 25 quando valor menor for enviado. Somente a última página pode ter menos de 25 registros |
Responses
200 OK - Sucesso
200 OK - SucessoRetorna a lista de recursos consentidos com seus respectivos status.
Headers de resposta:
| Header | Descrição |
|---|---|
x-fapi-interaction-id | UUID espelhado da requisição (ou gerado pela transmissora em caso de valor inválido recebido) |
x-v | Versão implementada da API |
Body:
{
"data": [
{
"resourceId": "25cac914-d8ae-6789-b215-650a6215820d",
"type": "ACCOUNT",
"status": "AVAILABLE"
},
{
"resourceId": "8a1b2c3d-4e5f-6789-abcd-ef0123456789",
"type": "CREDIT_CARD_ACCOUNT",
"status": "TEMPORARILY_UNAVAILABLE"
},
{
"resourceId": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"type": "LOAN",
"status": "PENDING_AUTHORISATION"
}
],
"links": {
"self": "https://api.banco.com.br/open-banking/resources/v3/resources",
"first": "https://api.banco.com.br/open-banking/resources/v3/resources?page=1",
"prev": null,
"next": "https://api.banco.com.br/open-banking/resources/v3/resources?page=2",
"last": "https://api.banco.com.br/open-banking/resources/v3/resources?page=3"
},
"meta": {
"requestDateTime": "2021-05-21T08:30:00Z",
"totalRecords": 75,
"totalPages": 3
}
}Campos de data[]
data[]| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
resourceId | string | ✅ | Identificador único do recurso. Corresponde ao ID nativo da API específica do produto. Ver tabela de correspondência abaixo |
type | string (enum) | ✅ | Tipo do recurso. Ver tabela de tipos abaixo |
status | string (enum) | ✅ | Status atual do recurso. Ver tabela de status abaixo |
Restrições do resourceId:
- Mínimo: 1 caractere
- Máximo: 100 caracteres
- Padrão:
^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$
Campos de meta
meta| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
requestDateTime | string (date-time) | ✅ | Data e hora da consulta em UTC (RFC-3339). Exemplo: 2021-05-21T08:30:00Z |
totalRecords | integer (int32) | ✅ | Total de registros no resultado (todas as páginas) |
totalPages | integer (int32) | ✅ | Total de páginas no resultado |
202 Accepted
202 AcceptedA requisição foi recebida e está sendo processada de forma assíncrona. Nenhum body é retornado. Tente novamente após alguns instantes.
Headers de resposta: x-fapi-interaction-id, x-v
Respostas de Erro
Todos os erros seguem a estrutura:
{
"errors": [
{
"code": "CODIGO_DO_ERRO",
"title": "Título legível do erro",
"detail": "Descrição detalhada do problema ocorrido."
}
],
"meta": {
"requestDateTime": "2021-05-21T08:30:00Z"
}
}Tabela de Códigos HTTP de Erro
| HTTP | Status | Descrição |
|---|---|---|
400 | Bad Request | Requisição malformada - atributo obrigatório ausente no payload ou na URL |
401 | Unauthorized | Header de autenticação ausente, inválido ou token expirado |
403 | Forbidden | Token com escopo incorreto ou política de segurança violada |
404 | Not Found | Recurso solicitado não existe ou não foi implementado |
405 | Method Not Allowed | Método HTTP não suportado para este endpoint |
406 | Not Acceptable | Header Accept com tipo de mídia não permitido ou charset diferente de UTF-8 |
422 | Unprocessable Entity | Sintaxe correta, mas não foi possível processar as instruções |
429 | Too Many Requests | Limite de requisições por período ou de concorrência global atingido |
500 | Internal Server Error | Erro no gateway da API ou no microsserviço da transmissora |
504 | Gateway Timeout | Requisição não atendida dentro do tempo limite |
529 | Site Is Overloaded | Limite máximo de TPS global atingido - site sobrecarregado |
Tipos de Recurso (type)
type)| Enum | Produto | API Correspondente |
|---|---|---|
ACCOUNT | Conta de depósito à vista, poupança ou pagamento pré-paga | API Accounts → accountId |
CREDIT_CARD_ACCOUNT | Conta de pagamento pós-paga (Cartão de Crédito) | API Credit Cards → creditCardAccountId |
LOAN | Empréstimo | API Loans → contractId |
FINANCING | Financiamento | API Financings → contractId |
UNARRANGED_ACCOUNT_OVERDRAFT | Cheque Especial / Adiantamento a depositantes | API Unarranged → contractId |
INVOICE_FINANCING | Financiamento de Fatura / Direitos creditórios descontados | API Invoice Financings → contractId |
BANK_FIXED_INCOME | Renda Fixa Bancária | API Investments → investmentId |
CREDIT_FIXED_INCOME | Renda Fixa Crédito | API Investments → investmentId |
VARIABLE_INCOME | Renda Variável | API Investments → investmentId |
TREASURE_TITLE | Título do Tesouro Direto | API Investments → investmentId |
FUND | Fundo de Investimento | API Investments → investmentId |
EXCHANGE | Câmbio | API Exchange → operationId |
Correspondência de resourceId por produto
resourceId por produtoO resourceId retornado nesta API corresponde diretamente ao identificador usado nas APIs específicas:
resources[].resourceId == accountId (ACCOUNT)
resources[].resourceId == creditCardAccountId (CREDIT_CARD_ACCOUNT)
resources[].resourceId == contractId (LOAN, FINANCING, UNARRANGED_ACCOUNT_OVERDRAFT, INVOICE_FINANCING)
resources[].resourceId == investmentId (BANK_FIXED_INCOME, CREDIT_FIXED_INCOME, VARIABLE_INCOME, TREASURE_TITLE, FUND)
resources[].resourceId == operationId (EXCHANGE)
Status dos Recursos (status)
status)| Enum | Nome | Descrição |
|---|---|---|
AVAILABLE | Disponível | O recurso está disponível e o consentimento associado possui status AUTHORISED |
UNAVAILABLE | Indisponível | O recurso não está mais disponível. Exemplo: conta encerrada pelo cliente |
TEMPORARILY_UNAVAILABLE | Temporariamente Indisponível | O recurso está indisponível temporariamente, mesmo com consentimento AUTHORISED. Exemplo: conta bloqueada por suspeita de fraude |
PENDING_AUTHORISATION | Pendente de Autorização | Existem pendências para o compartilhamento. Exemplo: alçada dupla - necessário consentimento de mais de um titular |
Diagrama de Status
stateDiagram-v2
direction LR
[*] --> AVAILABLE : Recurso ativo e\nconsentimento AUTHORISED
AVAILABLE --> TEMPORARILY_UNAVAILABLE : Bloqueio temporário\n(ex: suspeita de fraude)
AVAILABLE --> UNAVAILABLE : Encerramento do\nrecurso
TEMPORARILY_UNAVAILABLE --> AVAILABLE : Bloqueio removido
PENDING_AUTHORISATION --> AVAILABLE : Todos os titulares\nauthorizaram
[*] --> PENDING_AUTHORISATION : Alçada dupla\nincompleta
classDef ok fill:#d5f5d5,stroke:#27ae60,color:#333
classDef warn fill:#fef9c3,stroke:#f39c12,color:#333
classDef err fill:#f5c6c6,stroke:#c0392b,color:#333
classDef pending fill:#e8d5f5,stroke:#8e44ad,color:#333
class AVAILABLE ok
class TEMPORARILY_UNAVAILABLE warn
class UNAVAILABLE err
class PENDING_AUTHORISATION pending
Pontos de Atenção
RESOURCES_READno consentimento: A permissionRESOURCES_READdeve ser solicitada explicitamente no momento da criação do consentimento. Consentimentos sem essa permission retornam403 Forbidden.
ConsentimentoAUTHORISEDobrigatório: A API Resources só funciona para consentimentos em statusAUTHORISED. Tentativas com consentimentosPENDING,REJECTEDouREVOKEDretornam erro.
resourceId= ID da API específica: OresourceIdretornado aqui é o mesmo identificador a ser usado nas chamadas às APIs de produtos (accounts, loans, investments etc.). Não é um ID exclusivo da API Resources.
TEMPORARILY_UNAVAILABLEnão indica erro permanente: Um recurso neste status pode voltar aAVAILABLE. Não interprete como encerramento - implemente retry ou polling antes de comunicar indisponibilidade ao usuário.
PENDING_AUTHORISATIONem alçadas duplas: Para contas com mais de um titular, todos devem autorizar o consentimento. Recursos neste status só transitam paraAVAILABLEapós todos os co-titulares autorizarem.
x-fapi-interaction-idobrigatório: A receptora deve gerar e enviar este header. Se o valor recebido for inválido, a transmissora gera um novo UUID e retorna400. A receptora deve acatar o valor recebido da transmissora na resposta.
Paginação: O tamanho mínimo de página é 25. Valores menores que 25 enviados nopage-sizeserão tratados como 25 pela transmissora. Somente a última página pode retornar menos de 25 registros.
202 Accepted: Se a transmissora retornar202, a lista ainda não está pronta. Implemente retry com backoff antes de exibir erro ao usuário.
Status529(Site Is Overloaded): É um código não-padrão HTTP utilizado pelo Open Finance Brasil para indicar sobrecarga com limite de TPS global atingido. Trate-o como429na lógica de retry.