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

RequisitoDetalhe
Permission obrigatóriaRESOURCES_READ - deve ser solicitada no momento da criação do consentimento
Status do consentimentoA API só está disponível para consentimentos com status AUTHORISED
Escopo OAuthresources
AutenticaçãoOpenID Connect + OAuth 2.0 Authorization Code Flow

Endpoint

GET /baas/v1/open/dat/resources

Obtém a lista de recursos mantidos pelo cliente na instituição transmissora para os quais ele forneceu consentimento.


Query Parameters

ParâmetroTipoObrigatórioPadrãoMinMaxDescrição
pageinteger (int32)112147483647Número da página requisitada. Primeira página = 1
page-sizeinteger (int32)25251000Quantidade 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

Retorna a lista de recursos consentidos com seus respectivos status.

Headers de resposta:

HeaderDescrição
x-fapi-interaction-idUUID espelhado da requisição (ou gerado pela transmissora em caso de valor inválido recebido)
x-vVersã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[]

CampoTipoObrigatórioDescrição
resourceIdstringIdentificador único do recurso. Corresponde ao ID nativo da API específica do produto. Ver tabela de correspondência abaixo
typestring (enum)Tipo do recurso. Ver tabela de tipos abaixo
statusstring (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

CampoTipoObrigatórioDescrição
requestDateTimestring (date-time)Data e hora da consulta em UTC (RFC-3339). Exemplo: 2021-05-21T08:30:00Z
totalRecordsinteger (int32)Total de registros no resultado (todas as páginas)
totalPagesinteger (int32)Total de páginas no resultado

202 Accepted

A 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

HTTPStatusDescrição
400Bad RequestRequisição malformada - atributo obrigatório ausente no payload ou na URL
401UnauthorizedHeader de autenticação ausente, inválido ou token expirado
403ForbiddenToken com escopo incorreto ou política de segurança violada
404Not FoundRecurso solicitado não existe ou não foi implementado
405Method Not AllowedMétodo HTTP não suportado para este endpoint
406Not AcceptableHeader Accept com tipo de mídia não permitido ou charset diferente de UTF-8
422Unprocessable EntitySintaxe correta, mas não foi possível processar as instruções
429Too Many RequestsLimite de requisições por período ou de concorrência global atingido
500Internal Server ErrorErro no gateway da API ou no microsserviço da transmissora
504Gateway TimeoutRequisição não atendida dentro do tempo limite
529Site Is OverloadedLimite máximo de TPS global atingido - site sobrecarregado

Tipos de Recurso (type)

EnumProdutoAPI Correspondente
ACCOUNTConta de depósito à vista, poupança ou pagamento pré-pagaAPI Accounts → accountId
CREDIT_CARD_ACCOUNTConta de pagamento pós-paga (Cartão de Crédito)API Credit Cards → creditCardAccountId
LOANEmpréstimoAPI Loans → contractId
FINANCINGFinanciamentoAPI Financings → contractId
UNARRANGED_ACCOUNT_OVERDRAFTCheque Especial / Adiantamento a depositantesAPI Unarranged → contractId
INVOICE_FINANCINGFinanciamento de Fatura / Direitos creditórios descontadosAPI Invoice Financings → contractId
BANK_FIXED_INCOMERenda Fixa BancáriaAPI Investments → investmentId
CREDIT_FIXED_INCOMERenda Fixa CréditoAPI Investments → investmentId
VARIABLE_INCOMERenda VariávelAPI Investments → investmentId
TREASURE_TITLETítulo do Tesouro DiretoAPI Investments → investmentId
FUNDFundo de InvestimentoAPI Investments → investmentId
EXCHANGECâmbioAPI Exchange → operationId

Correspondência de resourceId por produto

O 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)

EnumNomeDescrição
AVAILABLEDisponívelO recurso está disponível e o consentimento associado possui status AUTHORISED
UNAVAILABLEIndisponívelO recurso não está mais disponível. Exemplo: conta encerrada pelo cliente
TEMPORARILY_UNAVAILABLETemporariamente IndisponívelO recurso está indisponível temporariamente, mesmo com consentimento AUTHORISED. Exemplo: conta bloqueada por suspeita de fraude
PENDING_AUTHORISATIONPendente de AutorizaçãoExistem 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_READ no consentimento: A permission RESOURCES_READ deve ser solicitada explicitamente no momento da criação do consentimento. Consentimentos sem essa permission retornam 403 Forbidden.

⚠️

Consentimento AUTHORISED obrigatório: A API Resources só funciona para consentimentos em status AUTHORISED. Tentativas com consentimentos PENDING, REJECTED ou REVOKED retornam erro.

⚠️

resourceId = ID da API específica: O resourceId retornado 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_UNAVAILABLE não indica erro permanente: Um recurso neste status pode voltar a AVAILABLE. Não interprete como encerramento - implemente retry ou polling antes de comunicar indisponibilidade ao usuário.

⚠️

PENDING_AUTHORISATION em alçadas duplas: Para contas com mais de um titular, todos devem autorizar o consentimento. Recursos neste status só transitam para AVAILABLE após todos os co-titulares autorizarem.

⚠️

x-fapi-interaction-id obrigatório: A receptora deve gerar e enviar este header. Se o valor recebido for inválido, a transmissora gera um novo UUID e retorna 400. 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 no page-size serão tratados como 25 pela transmissora. Somente a última página pode retornar menos de 25 registros.

⚠️

202 Accepted: Se a transmissora retornar 202, a lista ainda não está pronta. Implemente retry com backoff antes de exibir erro ao usuário.

⚠️

Status 529 (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 como 429 na lógica de retry.